Sender-side helpers for constrained message delivery.
Constrained messages form per-(sender, recipient, handshake secrets) sequences, each send anchored to the
handshake registry at an incrementing index. Two consequences shape the whole flow: sends on one sequence are
strictly ordered across transactions (parallel sends collide or fail the predecessor check, while distinct
recipients are distinct sequences and parallelize), and batching several sends onto one sequence within a
transaction requires an already-committed handshake.
A pre-existing handshake's secrets are anchored to the registry by [constrain_preexisting_handshake_secrets]
before its constrained tag is emitted; every constrained send then emits the same sequence nullifier via
[emit_sequence_nullifier].
Sender-side helpers for constrained message delivery.
Constrained messages form per-
(sender, recipient, handshake secrets)sequences, each send anchored to the handshake registry at an incrementing index. Two consequences shape the whole flow: sends on one sequence are strictly ordered across transactions (parallel sends collide or fail the predecessor check, while distinct recipients are distinct sequences and parallelize), and batching several sends onto one sequence within a transaction requires an already-committed handshake.A pre-existing handshake's secrets are anchored to the registry by [
constrain_preexisting_handshake_secrets] before its constrained tag is emitted; every constrained send then emits the same sequence nullifier via [emit_sequence_nullifier].