Skip to content

[ZIP TBD] Shielded Voting Wallet API - #1244

Open
czarcas7ic wants to merge 7 commits into
zcash:mainfrom
valargroup:adam/shielded-voting-wallet-api
Open

[ZIP TBD] Shielded Voting Wallet API#1244
czarcas7ic wants to merge 7 commits into
zcash:mainfrom
valargroup:adam/shielded-voting-wallet-api

Conversation

@czarcas7ic

Copy link
Copy Markdown

Summary

  • Adds a standalone wallet API ZIP (draft-valargroup-shielded-voting-wallet-api.md) specifying the REST endpoints, JSON wire formats, and discovery mechanism for wallet integration with shielded on-chain voting.
  • Covers vote discovery (per-vote configuration document), chain query endpoints (rounds, commitment tree, tally results, tx status), transaction submission (delegation via ZKP1, vote-cast via ZKP2), helper server share submission, commitment tree sync, and nullifier retrieval version selection.
  • Consolidates the wallet-facing API surface into a single document so any wallet can integrate by reading this ZIP plus companion ZIPs for proof construction.

czarcas7ic and others added 5 commits March 24, 2026 17:09
Standalone wallet API specification covering vote discovery,
chain query endpoints, delegation/vote-cast transaction wire
formats, helper server share submission, commitment tree sync,
and nullifier retrieval version selection.

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Made-with: Cursor
Add high-level summary, unify vote servers, consolidate version
handling, add vote_round_id encoding table, and clean up open issues.

Co-Authored-By: Claude <noreply@anthropic.com>
Made-with: Cursor
- Add upgradeability requirement for protocol components
- Rename vote_circuits to vote_protocol, add tally version field
- Update vote_server description to cover REST API only
- Add versioning overview to high-level summary with circuit
  upgradeability note
- Replace semver reference with simple major version scheme
- Update rationale, validation rules, and version handling sections

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
@czarcas7ic czarcas7ic changed the title Shielded Voting Wallet API ZIP [ZIP TBD]: Shielded Voting Wallet API ZIP Mar 30, 2026
@czarcas7ic czarcas7ic changed the title [ZIP TBD]: Shielded Voting Wallet API ZIP [ZIP TBD]: Shielded Voting Wallet API Mar 30, 2026
@czarcas7ic czarcas7ic changed the title [ZIP TBD]: Shielded Voting Wallet API [ZIP TBD] Shielded Voting Wallet API Mar 30, 2026
@czarcas7ic
czarcas7ic marked this pull request as ready for review March 30, 2026 14:17
Round-level display text is served by the chain round response and
provides no cryptographic binding in the configuration document, so the
configuration schema does not carry it.
Round-level title and description were struck earlier because they are
not per-proposal content and the chain is authoritative. Per-proposal
description is different: it is user-facing content that should be
hash-protected alongside title and options, so a tampered config cannot
display a different description than what is committed on-chain.

Also specifies that forward slashes must not be escaped (to match the
byte output of common Rust / Go JSON encoders) and that non-ASCII bytes
are emitted as UTF-8, not `\uXXXX`. These were implicit before and
caused divergence between wallet implementations; pinning them in the
spec eliminates interop risk.

Updated the Vote Configuration Format example, the field-definition
table for `proposals`, the canonical-form prose, and the worked example
(including its SHA-256 preimage output).
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.

2 participants