OpenZeppelin / OpenZeppelin/guardian
Switch consume-notes proposals to store-independent (unauthenticated) rebuilds once miden-client supports it
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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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