Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1343 commits
Select commit Hold shift + click to select a range
1ea2dee
Merge pull request #189 from z-cale/roman/share-reveal-k11
p0mvn Feb 27, 2026
eb059a9
add row budget test for zkp #1
p0mvn Feb 27, 2026
41d2686
extract shared Poseidon Merkle tree gadget
p0mvn Feb 27, 2026
60a6a8c
add unit tests for MerkleSwapGate + Poseidon Merkle path
p0mvn Feb 27, 2026
3e10e26
Merge pull request #190 from z-cale/roman/poseidon-merkle-gadget
p0mvn Feb 27, 2026
03d7e10
Keystone multi-bundle UX improvements and account-scoped note filtering
czarcas7ic Feb 27, 2026
415179e
Keystone multi-bundle UX improvements and account-scoped note filtering
czarcas7ic Feb 27, 2026
f79a3d1
Merge pull request #191 from z-cale/adam/keystone-multi-bundle-ux
czarcas7ic Feb 28, 2026
6cc7df5
Reduce PIR server memory usage by ~5 GB (18 GB → 13 GB)
czarcas7ic Feb 28, 2026
b93c9dc
Merge pull request #192 from z-cale/adam/pir-server-memory-optimization
czarcas7ic Feb 28, 2026
f2d2ecc
add voluntary weight reduction plan
p0mvn Feb 28, 2026
19d9be5
Poisson-distributed share processing for timing privacy
p0mvn Feb 28, 2026
91014d0
Merge pull request #193 from z-cale/roman/poisson-processor
p0mvn Feb 28, 2026
89829b6
Helper privacy hardening: intra-batch jitter, remove delay from logs
p0mvn Feb 28, 2026
cee2259
Add minimum delay floor to prevent near-zero submission timing
p0mvn Feb 28, 2026
18e8c3f
Remove queue counts from /api/v1/status to prevent timing correlation
p0mvn Feb 28, 2026
6f3530c
Merge pull request #194 from z-cale/roman/helper-privacy-hardening
p0mvn Feb 28, 2026
2392e6f
document
p0mvn Feb 28, 2026
fec65a2
Merge branch 'main' into roman/zkp3-nullifier-cleanup
p0mvn Feb 28, 2026
31eca76
use blind instead of c1_x in share nullifier to prevent public deriva…
p0mvn Feb 28, 2026
16b0620
update ai rules and auto audit prompts
p0mvn Feb 28, 2026
68f483b
Merge pull request #188 from z-cale/roman/zkp3-nullifier-cleanup
p0mvn Feb 28, 2026
492462e
ai audit token optimization
p0mvn Feb 28, 2026
86f8f5f
spec consistency; max 15 proposals
p0mvn Feb 28, 2026
103e2ae
spec consistency; max 15 proposals
p0mvn Feb 28, 2026
493c3a1
fix spec inconsistency
p0mvn Feb 28, 2026
d52a983
add comments about columns
p0mvn Feb 28, 2026
0e8352c
add range check comments in zkp 2
p0mvn Feb 28, 2026
60d80d9
harden enc_share sign-bit handling and add circuit soundness tests
p0mvn Feb 28, 2026
05a3979
fix TestGenerateShareRevealRoundTrip: use real Pallas points in fixture
p0mvn Feb 28, 2026
9440067
more clean ups and test fixes
p0mvn Feb 28, 2026
292849c
Merge pull request #195 from z-cale/roman/enc-share-validation-and-ci…
p0mvn Feb 28, 2026
2f4e1da
threshold decryption design
p0mvn Mar 1, 2026
9a11e1d
add sdk/crypto/shamir package: Shamir secret sharing over Pallas Fq
p0mvn Mar 1, 2026
bfb190b
Merge pull request #196 from z-cale/roman/shamir-crypto-package
p0mvn Mar 1, 2026
bb82ad1
update TSS plan
p0mvn Mar 1, 2026
319ee92
add threshold partial decryption primitives and update TSS plan
p0mvn Mar 1, 2026
96b392b
Merge pull request #197 from z-cale/roman/shamir-partial-decrypt
p0mvn Mar 1, 2026
045f672
add MsgSubmitPartialDecryption proto and threshold fields for TSS step 1
p0mvn Mar 1, 2026
873d250
fix tests
p0mvn Mar 1, 2026
9a8c8b5
Merge pull request #198 from z-cale/roman/threshold-decryption-proto
p0mvn Mar 1, 2026
7f3c928
implement prepare proposal for deal and ack
p0mvn Mar 1, 2026
ad344af
Add KV storage for partial decryptions and VK_i, accessor
p0mvn Mar 1, 2026
9953947
New PrepareProposal injector: submit bare partial decryptions (no DLE…
p0mvn Mar 1, 2026
737c989
implement tss tally
p0mvn Mar 1, 2026
f87678f
integration tests and docs
p0mvn Mar 1, 2026
9c5f7e2
fix TestMultiValidatorCeremony_DealAckConfirm: check share file in th…
p0mvn Mar 1, 2026
7d3bdab
address DealExecutiveAuthorityKey problems
p0mvn Mar 1, 2026
d515890
add full lifecycle e2e tests for legacy and threshold ceremony paths
p0mvn Mar 1, 2026
f0d2e3c
update tests
p0mvn Mar 1, 2026
04e57c5
Fix Shamir index mismatch after validator stripping
p0mvn Mar 1, 2026
2448b4f
add post-stripping liveness check
p0mvn Mar 1, 2026
b2c7dd4
make tss threshold equal at quorum threshold at 1/2
p0mvn Mar 1, 2026
25b05fc
Zero the secret scalar early in prepare proposal
p0mvn Mar 1, 2026
a3393dd
add share validation in SubmitPartialDecryption
p0mvn Mar 1, 2026
0be9995
zero shares after deal
p0mvn Mar 1, 2026
67a9e8c
get round validation
p0mvn Mar 1, 2026
abca2e8
Merge pull request #199 from z-cale/roman/tss-sdk
p0mvn Mar 1, 2026
0b60f3e
try fixing non-zero admin fee
p0mvn Mar 2, 2026
48f4e2a
Revert "try fixing non-zero admin fee"
p0mvn Mar 2, 2026
635a2f4
fix non-zero gas amount set
p0mvn Mar 2, 2026
a764855
improve tss from manual tests
p0mvn Mar 2, 2026
7ad7acb
Merge pull request #200 from z-cale/roman/tss-manual-test
p0mvn Mar 2, 2026
055724c
join.sh auto-download binaries even if present
p0mvn Mar 2, 2026
bb0e392
improve join.sh script
p0mvn Mar 2, 2026
45d9f1b
fix gas requirement for non-ceremony messages
p0mvn Mar 2, 2026
641442d
correct default gas
p0mvn Mar 2, 2026
eb8c1bb
Update docs and comments for TSS, slashing refactor, and self-registr…
greg0x Mar 2, 2026
520ecc5
Fix admin UI validator funding by using non-zero gas limit
greg0x Mar 2, 2026
f08c756
Merge pull request #201 from z-cale/greg/validator-funding-issue
greg0x Mar 2, 2026
bb71380
Zashi ffi fixes
greg0x Mar 2, 2026
3901d3b
Revert "Fix admin UI validator funding by using non-zero gas limit"
p0mvn Mar 2, 2026
f4afde4
Cache vote proof (ZKP #2) params and keys via OnceLock
p0mvn Mar 2, 2026
c1ea385
Remove unused enc_memo field from MsgDelegateVote
p0mvn Mar 2, 2026
70aa347
Remove unused enc_memo field from MsgDelegateVote
p0mvn Mar 2, 2026
3b0117e
Merge pull request #202 from z-cale/roman/cache-vote-proof-keygen
p0mvn Mar 2, 2026
6ee8f74
Merge pull request #203 from z-cale/roman/remove-enc-memo
p0mvn Mar 2, 2026
7c14157
Remove sighash field from MsgCastVote
p0mvn Mar 2, 2026
4bf8588
Remove sighash field from MsgCastVote
p0mvn Mar 2, 2026
1d8554a
Merge pull request #204 from z-cale/roman/remove-cast-vote-sighash
p0mvn Mar 2, 2026
64cdcf5
Remove r_vpk_x and r_vpk_y from MsgCastVote
p0mvn Mar 2, 2026
72556b0
Remove r_vpk_x and r_vpk_y from MsgCastVote
p0mvn Mar 2, 2026
720257d
Merge pull request #205 from z-cale/roman/remove-cast-vote-rvpk-xy
p0mvn Mar 2, 2026
5258c8c
Refactor keeper package into MVC domain layout
p0mvn Mar 2, 2026
485d0f9
Merge pull request #206 from z-cale/roman/keeper-mvc-refactor
p0mvn Mar 2, 2026
2984292
Validate deal creator and proposer in ProcessProposal and DealExecuti…
p0mvn Mar 2, 2026
efb8965
Add chain reset flow
greg0x Mar 2, 2026
6c41b4b
Add validator polling
greg0x Mar 2, 2026
c19c27a
Chore zashi-voting-ffi regenerate
greg0x Mar 2, 2026
6050ee9
Fix lint and vercel deploy
greg0x Mar 2, 2026
3348e4e
Add macOS (launchd) support to join.sh and SETUP_JOIN.md
czarcas7ic Mar 3, 2026
6e7b8fc
Drive-by: commit regenerated zcash_voting_ffiFFI.h
czarcas7ic Mar 3, 2026
aa4cb9f
Merge pull request #208 from z-cale/feat/macos-validator-join
czarcas7ic Mar 3, 2026
8a89b34
amount
p0mvn Mar 3, 2026
43ef085
Add VC/VAN sync determinism and real-proof stress test suite
czarcas7ic Mar 3, 2026
1ba2a91
Fix VC/VAN deterministic CI: add circuits build step
czarcas7ic Mar 3, 2026
e24ea5f
Remove nightly schedule trigger from CI
czarcas7ic Mar 3, 2026
ce50ac6
dont scan other packages
czarcas7ic Mar 3, 2026
f098c03
run realism tests weekly
czarcas7ic Mar 3, 2026
9f0fb60
fix
czarcas7ic Mar 3, 2026
1028e46
manual only
czarcas7ic Mar 3, 2026
49ee319
Merge pull request #209 from z-cale/greg/vc-van-sync-tests
czarcas7ic Mar 3, 2026
d36b5ce
Change PIR tier split from 11+8+7 to 11+7+8 to reduce YPIR upload ban…
p0mvn Mar 4, 2026
3ed1015
Merge pull request #210 from z-cale/feat/pir-tier-split-11-7-8
p0mvn Mar 5, 2026
659ef48
Merge branch 'main' into roman/process-proposal-deal-validation
p0mvn Mar 5, 2026
c91b37d
fix tests
p0mvn Mar 5, 2026
0ccbf5e
Fix authentication gaps in PrepareProposal-injected messages
p0mvn Mar 6, 2026
36429ab
Merge pull request #207 from z-cale/roman/process-proposal-deal-valid…
p0mvn Mar 6, 2026
99516ae
Collapse four identical proposer-validation functions into one
p0mvn Mar 6, 2026
0d29577
Merge pull request #211 from z-cale/roman/dedupe-validate-proposer
p0mvn Mar 6, 2026
1701a89
Extract CheckAndSetNullifier helper to deduplicate nullifier recording
p0mvn Mar 6, 2026
90fd35b
Extract GetPendingRoundWithCeremony to deduplicate ceremony status ch…
p0mvn Mar 6, 2026
34c8fa2
Merge pull request #212 from z-cale/roman/dedupe-nullifier-check-and-set
p0mvn Mar 6, 2026
1481d7c
SDK cleanup: consolidate iterators, helpers, and deduplicate crypto code
p0mvn Mar 6, 2026
bc2d352
Merge pull request #213 from z-cale/roman/dedupe-ceremony-status-check
p0mvn Mar 6, 2026
7989bd2
Merge pull request #214 from z-cale/roman/sdk-cleanup-batch
p0mvn Mar 6, 2026
12430d2
Test cleanup: consolidate fixtures, address helpers, and fpLE into te…
p0mvn Mar 6, 2026
945b15f
Merge pull request #215 from z-cale/roman/test-cleanup
p0mvn Mar 6, 2026
9a1064b
Fix code-0 false success in broadcast and tx-status APIs
p0mvn Mar 6, 2026
8442d37
Merge pull request #216 from z-cale/roman/fix-code0-false-success
p0mvn Mar 6, 2026
eb5df4a
Harden SDK key functions and input validation against key malleability
p0mvn Mar 6, 2026
b49097b
Merge pull request #217 from z-cale/roman/security-audit-fixes
p0mvn Mar 6, 2026
2d2a441
Validate tally completeness before finalizing a vote round
p0mvn Mar 6, 2026
23a0be0
Add unit tests for tally completeness validation
p0mvn Mar 6, 2026
d6d1847
Simplify duplicate round check in CreateVotingSession
p0mvn Mar 6, 2026
4393af5
Merge pull request #218 from z-cale/roman/validate-tally-completeness
p0mvn Mar 6, 2026
447bc13
add sdk auth README
p0mvn Mar 6, 2026
7391edd
Add reusable voter throughput fixtures and stress benchmark
czarcas7ic Mar 6, 2026
a07f084
Anti-censorship quorum share distribution
p0mvn Mar 6, 2026
dc850dc
Merge pull request #220 from z-cale/roman/anti-censorship-quorum-shares
p0mvn Mar 6, 2026
0dc8464
simulator building cursor rule
p0mvn Mar 6, 2026
1488c76
pir server launch.json
p0mvn Mar 6, 2026
fa6fe02
Add server heartbeat system for helper liveness tracking
p0mvn Mar 6, 2026
0d1e00f
Update voting-service-discovery docs with heartbeat system
p0mvn Mar 6, 2026
3990753
Merge pull request #221 from z-cale/roman/server-heartbeat
p0mvn Mar 6, 2026
d2a3f46
Call register-validator on startup before heartbeat loop
p0mvn Mar 6, 2026
0603630
Update heartbeat docs: register-validator on startup then pulse
p0mvn Mar 6, 2026
9a202b7
Merge pull request #222 from z-cale/roman/heartbeat-docs
p0mvn Mar 6, 2026
900406c
Move vote commitment tree sync from FFI to librustvoting
greg0x Mar 6, 2026
4ef7edf
Move vote commitment tree sync from FFI to librustvoting
greg0x Mar 6, 2026
c2a2f49
Limit benchmark helper queue visibility.
czarcas7ic Mar 6, 2026
cbb99b0
Merge main into voter throughput branch.
czarcas7ic Mar 6, 2026
725a78d
Fix e2e throughput fixture path resolution.
czarcas7ic Mar 6, 2026
a481c6e
add ai notes
czarcas7ic Mar 6, 2026
62fc49d
minor fix
czarcas7ic Mar 6, 2026
ca21773
Merge pull request #219 from z-cale/roman/voter-throughput-benchmark
czarcas7ic Mar 6, 2026
926ba44
Cache share_reveal params/keys with OnceLock and unify proving_key API
czarcas7ic Mar 6, 2026
9f652f6
Merge pull request #223 from z-cale/roman/cache-circuit-keys
czarcas7ic Mar 6, 2026
bc850d3
Enable heartbeat in CI multi-validator deployment
p0mvn Mar 6, 2026
9dec5ef
fix helper server pulses
p0mvn Mar 6, 2026
414ebf9
improve server dashboard ui
p0mvn Mar 6, 2026
d4b6170
add ability to remove and further clean up UI
p0mvn Mar 6, 2026
5c4b7d3
spec conformance for submission server
p0mvn Mar 6, 2026
9760fc2
update pulse
p0mvn Mar 7, 2026
923f383
fix comments and documentation around service discovery
p0mvn Mar 7, 2026
08dfa2d
Rename service from zally/zvote to Shielded-Vote (binary: svoted)
p0mvn Mar 7, 2026
ea06277
Rename service from zally/zvote to Shielded-Vote (binary: svoted)
p0mvn Mar 7, 2026
4caa345
Merge branch 'main' into roman/rename-shielded-vote
p0mvn Mar 7, 2026
76f1f64
Rename GitHub org from z-cale to valargroup
p0mvn Mar 7, 2026
38e1929
Merge pull request #225 from valargroup/roman/rename-shielded-vote
p0mvn Mar 7, 2026
6e759c7
Helper server DOS hardening: vote commitment cross-check at ingress
czarcas7ic Mar 7, 2026
a0bd472
unknown error wrapping
czarcas7ic Mar 7, 2026
9cd6020
Merge pull request #226 from valargroup/adam/helper-dos-hardening
czarcas7ic Mar 7, 2026
415d586
Derive vote share randomness deterministically via Blake2b PRF (ZCA-41)
czarcas7ic Mar 7, 2026
f0d3a0d
Derive vote share randomness deterministically via Blake2b PRF (ZCA-41)
czarcas7ic Mar 7, 2026
7b197ba
review
czarcas7ic Mar 7, 2026
3ba0c9c
Fix derive_share_randomness: reduce mod p_base, not q_scalar
czarcas7ic Mar 7, 2026
66e4887
add van commitment to the hash
czarcas7ic Mar 8, 2026
844118e
add van commitment to the hash
czarcas7ic Mar 8, 2026
2724ff1
Add Slack PR notifier for upstream Zcash contributions
czarcas7ic Mar 8, 2026
cb82970
test commit
czarcas7ic Mar 8, 2026
f4239ae
revert
czarcas7ic Mar 8, 2026
9d55e9a
tag pr creator directly
czarcas7ic Mar 8, 2026
0395792
auto refresh
czarcas7ic Mar 8, 2026
5c54ddf
ignore
czarcas7ic Mar 8, 2026
2bf2658
remove scratch Slack ID notes from infra docs
czarcas7ic Mar 8, 2026
979f525
Merge pull request #228 from valargroup/adam/contrib-notifier
czarcas7ic Mar 8, 2026
d95960c
Implement full ExportGenesis and ValidateGenesis for vote module
czarcas7ic Mar 8, 2026
0f05bf3
Merge remote-tracking branch 'origin/main' into adam/fix-genesis-expo…
czarcas7ic Mar 8, 2026
5854b8d
lint readme
czarcas7ic Mar 8, 2026
e8dc95f
Merge pull request #229 from valargroup/adam/fix-genesis-export-validate
czarcas7ic Mar 9, 2026
160152a
Harden SDK: fix audit findings, check swallowed errors, extract const…
czarcas7ic Mar 9, 2026
9cd5be4
lint
czarcas7ic Mar 9, 2026
c1124a7
nullifier-ingest: consolidate into Cargo workspace with shared pir-ty…
p0mvn Mar 9, 2026
510cbbc
Merge pull request #231 from valargroup/roman/nullifier-ingest-workspace
p0mvn Mar 9, 2026
dd98016
review fixes
czarcas7ic Mar 9, 2026
65a5cf3
Merge pull request #230 from valargroup/adam/sdk-security-hardening
czarcas7ic Mar 9, 2026
faac178
nullifier-ingest: deduplicate config, nullifier loading, and sentinel…
p0mvn Mar 9, 2026
24e15d1
Merge pull request #232 from valargroup/roman/nullifier-ingest-dedup
p0mvn Mar 9, 2026
9865696
nullifier-ingest: split monolithic cmd_serve.rs into focused modules
p0mvn Mar 9, 2026
5dadb63
Merge pull request #233 from valargroup/roman/nullifier-ingest-split-…
p0mvn Mar 9, 2026
fd76472
Merge pull request #224 from valargroup/roman/heartbeat-ci-deploy
p0mvn Mar 9, 2026
623d091
nullifier-ingest: deduplicate PIR handler helpers across pir-server a…
p0mvn Mar 9, 2026
408e429
Lock SetVoteManager to VM-only auth with atomic fund transfer
czarcas7ic Mar 9, 2026
8f4d74d
Merge pull request #234 from valargroup/roman/nullifier-ingest-dedup-…
p0mvn Mar 9, 2026
a014891
lint
czarcas7ic Mar 9, 2026
4f6dc94
nullifier-ingest: reduce tier0/tier1/tier2 duplication with shared he…
p0mvn Mar 9, 2026
dad3791
Merge pull request #236 from valargroup/roman/nullifier-ingest-tier-d…
p0mvn Mar 9, 2026
fc8db81
Remove dead nullifier-service code and decouple from orchard
p0mvn Mar 9, 2026
e7fb08e
Fix imt-integration CI: point at voting-circuits after test move
p0mvn Mar 9, 2026
d723add
nullifier-ingest: merge ypir_query_tier1/tier2 into generic ypir_query
p0mvn Mar 9, 2026
5e418cf
Merge pull request #237 from valargroup/roman/remove-dead-nullifier-code
p0mvn Mar 9, 2026
8ee5495
nullifier-ingest: replace eprintln! with structured tracing in server…
p0mvn Mar 9, 2026
189e8ad
Merge pull request #238 from valargroup/roman/remove-dead-nullifier-code
p0mvn Mar 9, 2026
c4d7bb4
Merge pull request #235 from valargroup/adam/set-vote-manager-lockdown
czarcas7ic Mar 9, 2026
be2e9d9
Switch nullifier-ingest deps to git deps from vote-nullifier-pir
p0mvn Mar 9, 2026
98e740d
Switch nullifier-ingest deps to git deps from vote-nullifier-pir
p0mvn Mar 9, 2026
e25551a
CI: add CARGO_NET_GIT_FETCH_WITH_CLI for private repo git deps
p0mvn Mar 9, 2026
04928a1
release: fetch nf-server from vote-nullifier-pir instead of building …
p0mvn Mar 9, 2026
b066c1f
Merge pull request #239 from valargroup/roman/nullifier-git-deps
p0mvn Mar 9, 2026
98480cf
CI: remove nullifier-ingest/imt-tree path triggers from test workflows
p0mvn Mar 9, 2026
302a9eb
Merge pull request #240 from valargroup/roman/nullifier-git-deps
p0mvn Mar 9, 2026
ad37429
Remove nullifier-ingest/ and point all references at vote-nullifier-pir
p0mvn Mar 9, 2026
a7adcd4
Merge pull request #241 from valargroup/roman/remove-nullifier-ingest
p0mvn Mar 9, 2026
05b246f
update vote-nullifier-pir dependency
p0mvn Mar 9, 2026
8c4191d
update vote-nullifier-pir dependency
p0mvn Mar 9, 2026
c36b8fc
fix vercel url
p0mvn Mar 9, 2026
eac4451
token
p0mvn Mar 9, 2026
4ac9344
remove nullifier service from release
p0mvn Mar 9, 2026
f1d78f4
Merge main: resolve nullifier-ingest Cargo.lock deletions
czarcas7ic Mar 9, 2026
34b0866
Merge main: resolve nullifier-ingest Cargo.lock deletions
czarcas7ic Mar 9, 2026
9216fb3
Merge pull request #227 from valargroup/adam/deterministic-share-rand…
czarcas7ic Mar 9, 2026
571ab38
Replace committed Gov Steps V1 spec with shielded_vote_book references
czarcas7ic Mar 9, 2026
f744396
Default slack_summary to false for safe manual testing
czarcas7ic Mar 9, 2026
2bfd5f3
Fix stale FFI doc comments that confuse the AI auditor
czarcas7ic Mar 9, 2026
9ceac87
Restore slack_summary default to true
czarcas7ic Mar 9, 2026
9d2ee0f
safety
czarcas7ic Mar 9, 2026
40afc78
Make shielded_vote_book read-only and verify symlink proactively
czarcas7ic Mar 9, 2026
40bf490
auto update the symlink name
czarcas7ic Mar 9, 2026
1e1614f
Merge pull request #242 from valargroup/adam/replace-gov-steps-with-v…
czarcas7ic Mar 9, 2026
07cdae0
Fix TSS threshold formula in docs and test comments
czarcas7ic Mar 9, 2026
1f23e80
Merge pull request #244 from valargroup/adam/zca-122-reconcile-thresh…
czarcas7ic Mar 9, 2026
9fcf256
update the shielded vote book index
czarcas7ic Mar 9, 2026
aea6382
Fix ineligible screen to show exact 0.125 ZEC minimum
czarcas7ic Mar 9, 2026
45b2164
Merge pull request #245 from valargroup/adam/fix-ineligible-threshold…
czarcas7ic Mar 10, 2026
bb027f2
move the docs to the docs directory
czarcas7ic Mar 10, 2026
9ed0113
Improve error states in voting flow
czarcas7ic Mar 10, 2026
ce24887
missing two user friendly error locations
czarcas7ic Mar 10, 2026
8069bac
Merge pull request #246 from valargroup/adam/zca-130-improve-error-st…
czarcas7ic Mar 10, 2026
87f66e3
Remove dead MeanDelay config and simplify share submission delay
czarcas7ic Mar 10, 2026
fb0ad2b
Merge pull request #247 from valargroup/adam/remove-mean-delay
czarcas7ic Mar 10, 2026
030c988
Remove librustzcash directory in preparation for subtree replacement
greg0x Mar 11, 2026
ec2be55
Squashed 'librustzcash/' content from commit afb474a03
greg0x Mar 11, 2026
a3b5e9f
Merge commit 'ec2be55c08841ae20fc598406cefb0cdcc8ffad9' as 'librustzc…
greg0x Mar 11, 2026
7fc7388
Remove librustvoting, vote-commitment-tree, vote-commitment-tree-client
greg0x Mar 11, 2026
24c4f06
Merge commit 'c74ebf661ff38fe6d287598f08b46f30c2fdf525' as 'librustvo…
greg0x Mar 11, 2026
ee92acd
Merge remote-tracking branch 'origin/main' into greg/subtree-migration
greg0x Mar 11, 2026
1dd86e4
Fix CI workflows and Cargo deps for subtree migration
czarcas7ic Mar 11, 2026
b9c3a0b
Add wiring system for cross-subtree dependency switching
greg0x Mar 12, 2026
8d44e5a
Use Creator::build_from_parts for governance PCZT construction
greg0x Mar 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@ resolver = "2"
# pub visibility for constants/spec + shared_primitives gadget).
# This ensures type compatibility with voting-circuits.
#
# librustzcash crates: pczt + zcash_keys + zcash_protocol need our
# governance visibility changes (pub getters on PCZT types, etc.).
# librustzcash crates: pczt + zcash_keys + zcash_primitives + zcash_protocol
# need our governance visibility changes (pub getters on PCZT types, etc.).
[patch.crates-io]
orchard = { git = "https://github.com/valargroup/voting-circuits.git" }

pczt = { git = "https://github.com/valargroup/librustzcash.git", branch = "valargroup/pczt-governance-extensions-0.11" }
zcash_keys = { git = "https://github.com/valargroup/librustzcash.git", branch = "valargroup/pczt-governance-extensions-0.11" }
zcash_primitives = { git = "https://github.com/valargroup/librustzcash.git", branch = "valargroup/pczt-governance-extensions-0.11" }
zcash_protocol = { git = "https://github.com/valargroup/librustzcash.git", branch = "valargroup/pczt-governance-extensions-0.11" }
3 changes: 2 additions & 1 deletion librustvoting/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,5 @@ zip32 = "0.2"
incrementalmerkletree = "0.8"

# PCZT construction (governance-specific PCZT for Keystone signing)
pczt = { version = "0.5", features = ["orchard", "io-finalizer", "signer"] }
pczt = { version = "0.5", features = ["orchard", "io-finalizer", "signer", "zcp-builder"] }
zcash_primitives = "0.26"
49 changes: 31 additions & 18 deletions librustvoting/src/action.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ use orchard::pczt::Zip32Derivation;
use orchard::tree::{MerkleHashOrchard, MerklePath};
use orchard::value::NoteValue;
use orchard::{Anchor, Address};
use zcash_primitives::transaction::builder::PcztParts;
use zcash_primitives::transaction::TxVersion;
use zcash_protocol::consensus::{BlockHeight, BranchId, Network};
use zip32::Scope;

/// Orchard Merkle tree depth (32 levels).
Expand Down Expand Up @@ -438,24 +441,34 @@ pub fn build_governance_pczt(
})?;

// --- Serialize to full PCZT ---
// Create an empty Pczt shell with Creator, then replace the orchard bundle.
let sapling_anchor = [0u8; 32]; // No sapling bundle
let orchard_anchor_bytes = anchor.to_bytes();
let mut pczt = pczt::roles::creator::Creator::new(
consensus_branch_id,
0, // expiry_height: 0 = no expiry (never broadcast)
coin_type,
sapling_anchor,
orchard_anchor_bytes,
)
// Keystone's determine_lock_time returns global.lock_time() for pure-Orchard PCZTs
// (no transparent inputs). Without a fallback_lock_time, it returns None → error.
.with_fallback_lock_time(0)
.build();

// Serialize the orchard pczt bundle and set it on the Pczt
let pczt_orchard_bundle = pczt::orchard::Bundle::serialize_from(orchard_pczt_bundle);
pczt.set_orchard(pczt_orchard_bundle);
// Use Creator::build_from_parts to construct the PCZT with the orchard bundle,
// matching the same path the wallet transaction builder uses.
let branch_id = BranchId::try_from(consensus_branch_id).map_err(|e| {
VotingError::InvalidInput {
message: format!("invalid consensus_branch_id 0x{:08X}: {}", consensus_branch_id, e),
}
})?;
let network = match coin_type {
133 => Network::MainNetwork,
_ => Network::TestNetwork,
};
let parts = PcztParts {
params: network,
version: TxVersion::suggested_for_branch(branch_id),
consensus_branch_id: branch_id,
// Keystone's determine_lock_time returns global.lock_time() for pure-Orchard PCZTs
// (no transparent inputs). Without a lock_time, it returns None → error.
lock_time: 0,
expiry_height: BlockHeight::from_u32(0), // no expiry (never broadcast)
transparent: None,
sapling: None,
orchard: Some(orchard_pczt_bundle),
};
let pczt = pczt::roles::creator::Creator::build_from_parts(parts).ok_or_else(|| {
VotingError::Internal {
message: "Creator::build_from_parts returned None (incompatible tx version)".to_string(),
}
})?;

// Run IO Finalizer so the Signer (Keystone) can compute the sighash
let pczt = pczt::roles::io_finalizer::IoFinalizer::new(pczt)
Expand Down