Skip to content

[ZIP TBD] Orchard Proof-of-Balance#1199

Open
czarcas7ic wants to merge 55 commits intozcash:mainfrom
valargroup:draft-valargroup-orchard-balance-proof
Open

[ZIP TBD] Orchard Proof-of-Balance#1199
czarcas7ic wants to merge 55 commits intozcash:mainfrom
valargroup:draft-valargroup-orchard-balance-proof

Conversation

@czarcas7ic
Copy link
Copy Markdown

@czarcas7ic czarcas7ic commented Mar 4, 2026

Summary

  • Adds a new informational draft ZIP (draft-valargroup-orchard-balance-proof.md) specifying the Orchard Proof-of-Balance protocol, which is intended to be used in a future Zcash voting application.
  • Enables users to prove the total value of their Orchard notes without revealing individual note details, using pool snapshots and nullifier non-membership trees.
  • Adds reference and credits to Daira-Emma Hopwood and Jack Grigg for the initial spec (draft-str4d-orchard-balance-proof.md)

@czarcas7ic czarcas7ic marked this pull request as ready for review March 6, 2026 22:09
@czarcas7ic czarcas7ic changed the title Orchard Proof-of-Balance Draft ZIP Orchard Proof-of-Balance Mar 6, 2026
@str4d str4d self-requested a review March 12, 2026 04:09
@str4d str4d changed the title Orchard Proof-of-Balance [ZIP TBD] Orchard Proof-of-Balance Mar 17, 2026
@str4d str4d added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Mar 17, 2026
@str4d str4d requested a review from daira March 17, 2026 22:59
czarcas7ic and others added 21 commits March 20, 2026 13:18
Co-authored-by: Jack Grigg <thestr4d@gmail.com>
Co-authored-by: Jack Grigg <thestr4d@gmail.com>
czarcas7ic added a commit to valargroup/voting-circuits that referenced this pull request Mar 23, 2026
Three changes to align with zcash/zips#1199:

1. Governance nullifier → alternate nullifier with explicit dom public
   input (14th instance field). dom = Poseidon("governance authorization",
   vote_round_id) derived out-of-circuit. In-circuit: Poseidon(nk, dom,
   real_nf) with ConstantLength<3>.

2. Dummy signed note value 0 → 1 to match PCZT construction.

3. Replace is_note_real with v * (root - anchor) = 0 (Orchard standard
   dummy note mechanism). Remove condition 15.
czarcas7ic added a commit to valargroup/librustvoting that referenced this pull request Mar 23, 2026
Align derive_gov_nullifier with the new alternate nullifier formula
from zcash/zips#1199. Takes dom instead of vote_round_id as second
parameter. Adds compute_nullifier_domain() to derive dom out-of-circuit.
Formula: Poseidon(nk, dom, nf) with ConstantLength<3>.
czarcas7ic added a commit to valargroup/voting-circuits that referenced this pull request Mar 23, 2026
Three changes to align with zcash/zips#1199:

1. Governance nullifier → alternate nullifier with explicit dom public
   input (14th instance field). dom = Poseidon("governance authorization",
   vote_round_id) derived out-of-circuit. In-circuit: Poseidon(nk, dom,
   real_nf) with ConstantLength<3>.

2. Dummy signed note value 0 → 1 to match PCZT construction.

3. Replace is_note_real with v * (root - anchor) = 0 (Orchard standard
   dummy note mechanism). Remove condition 15.
czarcas7ic added a commit to valargroup/voting-circuits that referenced this pull request Mar 23, 2026
Three changes to align with zcash/zips#1199:

1. Governance nullifier → alternate nullifier with explicit dom public
   input (14th instance field). dom = Poseidon("governance authorization",
   vote_round_id) derived out-of-circuit. In-circuit: Poseidon(nk, dom,
   real_nf) with ConstantLength<3>.

2. Dummy signed note value 0 → 1 to match PCZT construction.

3. Replace is_note_real with v * (root - anchor) = 0 (Orchard standard
   dummy note mechanism). Remove condition 15.
@str4d str4d removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Mar 24, 2026
@str4d str4d dismissed their stale review March 31, 2026 21:49

I'm unable to continue reviewing this, so dismissing my review to ensure it doesn't block merging. Someone else needs to review to confirm my comments were addressed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants