From ceaf7fd4f0d04c224e14580636c7bb97dfcf8064 Mon Sep 17 00:00:00 2001 From: Artem Gureev Date: Tue, 7 Jul 2026 16:37:12 +0000 Subject: [PATCH] feat!: byte-sort private outputs to obfuscate note order --- lee/privacy_preserving_circuit/src/output.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lee/privacy_preserving_circuit/src/output.rs b/lee/privacy_preserving_circuit/src/output.rs index 5105005c..36f35957 100644 --- a/lee/privacy_preserving_circuit/src/output.rs +++ b/lee/privacy_preserving_circuit/src/output.rs @@ -261,6 +261,17 @@ pub fn compute_circuit_output( emit_dummy_output(&mut output, dummy); } + output + .new_commitments + .sort_unstable_by_key(Commitment::to_byte_array); + + let mut notes: Vec<_> = core::mem::take(&mut output.new_nullifiers) + .into_iter() + .zip(core::mem::take(&mut output.encrypted_private_post_states)) + .collect(); + notes.sort_unstable_by_key(|((nullifier, _), _)| nullifier.to_byte_array()); + (output.new_nullifiers, output.encrypted_private_post_states) = notes.into_iter().unzip(); + output }