OpenZeppelin / OpenZeppelin/guardian

Switch consume-notes proposals to store-independent (unauthenticated) rebuilds once miden-client supports it

Open
#461 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
10
Forks
20
Avg merge
2d 11h
Merged PRs (30d)
43

Description

Context

#409 turned out to have two causes. The first, fixed in the "authenticate consume-notes input notes before every summary" PR (https://github.com/OpenZeppelin/guardian/pull/460), is that miden-client decides per input note whether it is consumed authenticated or unauthenticated based on the local store, and the two commit differently into the signed summary. The fix makes authenticated the canonical mode: creation and every rebuild fetch inclusion proofs from the node and import the proposal's notes before executing (spec 006 FR-015).

That is correct but it is the second-best design. Spec 006 FR-005 and FR-006 originally required the rebuild to be deterministic without touching the store or the node, and that is only achievable if miden-client lets a request keep inline notes unauthenticated. Upstream request: https://github.com/0xMiden/rust-sdk/issues/2523.

What to do once upstream ships
  • Make unauthenticated the canonical mode for consume-notes proposals on both SDKs: creation builds the request with the new opt-in, rebuilds do the same, and the pre-rebuild proof import goes away.
  • Bump the consume-notes metadata version (v3) so proposals created under the authenticated era keep verifying through the v2 path during a transition window, then remove the v2 path per the cut-over pattern already used for v1.
  • Restore the original wording of spec 006 FR-005, FR-006, and FR-014 for the new version and mark FR-015 as the v2-era rule.
  • Update the "Authenticated note consumption" section of docs/MULTISIG_SDK.md.
  • Re-run the two-signer live check from #409 (fresh cosigner store, proposal pending) against staging.
Why it matters

Verification would no longer need the Miden node for proofs or write into the cosigner's store, offline signing of consume-notes proposals from an exported file becomes possible, and the fee is slightly lower because unauthenticated notes skip the in-kernel inclusion check.

Blocked on the upstream issue. Not a release blocker: the authenticated mode is correct and verified live.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

This is blocked on upstream issue #2523. Once it ships, trace consume-notes proposal creation and rebuilds on both SDKs, then update the v2/v3 metadata transition and spec 006 wording described here. Update docs/MULTISIG_SDK.md and run the two-signer live check from #409 against staging; done means unauthenticated rebuilds work without proof imports.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend, documentation, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.