Skip to content

feat(aztec-nr): sender-side support for interactive handshakes#24522

Merged
nchamo merged 8 commits into
merge-train/fairies-v5from
nchamo/f-786-feataztec-nr-sender-side-support-for-interactive-handshakes
Jul 7, 2026
Merged

feat(aztec-nr): sender-side support for interactive handshakes#24522
nchamo merged 8 commits into
merge-train/fairies-v5from
nchamo/f-786-feataztec-nr-sender-side-support-for-interactive-handshakes

Conversation

@nchamo

@nchamo nchamo commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Motivation

The handshake registry has an interactive_handshake entrypoint (#24473), but no sender can reach it: the delivery stack only knows how to establish non-interactive handshakes.

The change

Senders can now choose an interactive handshake the same two ways non-interactive ones are chosen:

  • In-contract: a via_interactive_handshake() builder option on both onchain delivery modes, flowing through a new TagDerivation kind and TagSecretSource kind that call the registry's interactive_handshake entrypoint via a new pinned selector.
  • By the wallet: an interactive-handshake variant in the TaggingSecretStrategy hook union and in ResolvedTaggingStrategy (TS and Noir in lockstep).

Defaults do not change: interactive is strictly opt-in. Like a fresh non-interactive handshake, a fresh interactive one backs both delivery modes and starts its constrained sequence at index 0; an existing handshake of either type is reused before establishing a new one.

The oracle version minors are bumped since no existing contracts were using this oracle yet.

Fixes F-786

@nchamo nchamo self-assigned this Jul 4, 2026
@nchamo nchamo added ci-draft Run CI on draft PRs. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure labels Jul 4, 2026
@nchamo
nchamo marked this pull request as ready for review July 4, 2026 14:33
@nchamo
nchamo requested a review from nventuro as a code owner July 4, 2026 14:33
@nchamo
nchamo requested a review from vezenovm July 4, 2026 14:33
Base automatically changed from nchamo/secrets-cleanup to merge-train/fairies-v5 July 6, 2026 16:05
…sender-side-support-for-interactive-handshakes

@vezenovm vezenovm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Niceee

Comment on lines +102 to +106
///
/// The registry obtains the recipient's signed authorization through a
/// [`resolve_custom_request`](crate::oracle::resolve_custom_request::resolve_custom_request) oracle call it resolves
/// internally, verifies it in-circuit, inserts a fresh handshake note and returns the secrets. Nothing announcing the
/// handshake is published onchain: the recipient learns the shared secret while signing. As with

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
///
/// The registry obtains the recipient's signed authorization through a
/// [`resolve_custom_request`](crate::oracle::resolve_custom_request::resolve_custom_request) oracle call it resolves
/// internally, verifies it in-circuit, inserts a fresh handshake note and returns the secrets. Nothing announcing the
/// handshake is published onchain: the recipient learns the shared secret while signing. As with
/// As with

we probably don't need to repeat this information again. it can all be found by looking at the registry method's doc comments.

Comment on lines +28 to +31
/// An interactive handshake: the recipient learns the secret while signing its authorization, and nothing
/// announcing the handshake is published onchain. See
/// [`create_interactive_handshake`](super::handshake::create_interactive_handshake) for how the registry obtains
/// that authorization.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/// An interactive handshake: the recipient learns the secret while signing its authorization, and nothing
/// announcing the handshake is published onchain. See
/// [`create_interactive_handshake`](super::handshake::create_interactive_handshake) for how the registry obtains
/// that authorization.
/// An interactive handshake: the recipient learns the secret while signing its authorization.

feel like this is enough

Comment on lines +46 to +48
/// Establishes a fresh interactive handshake, publishing nothing about the recipient onchain. See
/// [`create_interactive_handshake`](super::handshake::create_interactive_handshake) for how the registry obtains
/// the recipient's signed authorization.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
/// Establishes a fresh interactive handshake, publishing nothing about the recipient onchain. See
/// [`create_interactive_handshake`](super::handshake::create_interactive_handshake) for how the registry obtains
/// the recipient's signed authorization.
/// Establishes a fresh interactive handshake, publishing nothing about the recipient onchain.

same here. I think it is clear we should reference the registry. Or we can say to reference the registry for more info.


/// A secret established through an interactive handshake.
///
/// The registry obtains the recipient's signed authorization through a

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this needed?

…sender-side-support-for-interactive-handshakes
@nchamo
nchamo merged commit 78ad75a into merge-train/fairies-v5 Jul 7, 2026
12 checks passed
@nchamo
nchamo deleted the nchamo/f-786-feataztec-nr-sender-side-support-for-interactive-handshakes branch July 7, 2026 16:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-draft Run CI on draft PRs. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants