feat!: byte-sort private outputs to obfuscate note order

This commit is contained in:
Artem Gureev 2026-07-07 16:37:12 +00:00 committed by agureev
parent 46c9cee8c5
commit ceaf7fd4f0

View File

@ -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
}