Repository navigation
build: bump grovedb for the faster Orchard prover - #5281
PastaPastaPasta wants to merge 1 commit into
Conversation
Pin every grovedb crate to dashpay/grovedb build/orchard-faster-prover (68eb9a63): current develop plus a commit that moves grovedb-commitment-tree onto dashpay/orchard integration/prover-perf (1136e362). That orchard commit merges dashpay/orchard#12 (embedded k=11 params and Lagrange tables) and #13 (halo2 from dashpay/halo2, integrating dashpay/halo2#1-#3). Proofs are byte-identical; proving, verification and the cold key build get faster. The lockfile moves orchard, halo2_proofs/gadgets/poseidon (crates.io -> dashpay/halo2 rev 581e2459) and pasta_curves 0.5.1 -> 0.5.2, plus the grovedb revs. Nothing else changes. Orchard now always enforces the canonical proof size in Bundle::try_from_parts (dashpay/orchard#11, already on dashified), so the ProofSizeEnforcement argument is gone. drive-abci drops it; the behaviour is the Strict path it already used. Draft: re-pin once the grovedb, orchard and halo2 PRs merge. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
🕓 Review not started yet because this PR is a draft.
Commit 92c99d6. Normal review starts when eligible; priority review starts as soon as a slot is available. |
|
The
🤖 Posted autonomously by Claude on behalf of pasta. |
Issue being fixed or feature implemented
Building the Orchard proof is the largest single cost of a shielded send, and a wallet also builds the Orchard
ProvingKeybefore its first send in each process. Validators verify every shielded transition with the halo2 verifier. A series of upstream PRs makes all three faster:dashpay/halo2rev581e2459(#1–#3 merged),pasta_curves0.5.2ProvingKeybuild 1040–1503 → 152–295 ms (5–7x)grovedb-commitment-tree→ orchardintegration/prover-perf(1136e362, =dashified+ #12 + #13)Proofs are byte-identical to crates.io
halo2_proofs0.3.2 for 1/2/6 actions, so keys, proofs and verification results don't change.This PR wires that chain into Platform so CI tests the whole stack. Platform CI's drive-abci shielded tests build real Orchard proofs and verify them through
BatchValidator, so they exercise the new halo2 prover and verifier.What was done?
Root
Cargo.toml: every grovedb crate (grovedb,-costs,-merk,-path,-query,-storage,-version,-epoch-based-storage-flags,-commitment-tree) moves fromdce8252fto68eb9a63c27ce99e2587d9c1ed4ef6f6846afaf7, the head ofbuild/orchard-faster-prover(build(deps)!: use dashpay/orchard with the faster prover grovedb#1007).Cargo.lock: the minimal update. Apart from the grovedb rev strings, only these change:orchard:dashified-0.14.1tag (38ac9c19) → rev1136e362;halo2_proofs0.3.2,halo2_gadgets0.5.0,halo2_poseidon0.1.0: crates.io →git+https://github.com/dashpay/halo2?rev=581e2459(same versions);pasta_curves: 0.5.1 → 0.5.2.It was produced with
cargo update -p pasta_curves --precise 0.5.2followed by an implicit re-resolve. A plaincargo update -p grovedbalso re-resolved unrelateditertools/heck/socket2/windows-sysedges, so it wasn't used.cargo metadata --lockedpasses.drive-abci
shielded_common: drops theProofSizeEnforcement::Strictargument toBundle::try_from_parts. This change doesn't come from the perf work. orchard'sdashifiedbranch already includes harden: always enforce canonical proof size in Bundle::try_from_parts orchard#11, which removed the enum and always enforces the canonical proof size, so any orchard revision afterdashified-0.14.1needs this edit. Behaviour is unchanged: Platform already usedStrict. The pinning test is renamedtest_noncanonical_proof_size_rejectedand still checks the rejection.The grovedb bump also pulls in the commits on grovedb
developsincedce8252(git log --oneline dce8252..68eb9a63):Platform needed no source changes for these. #1003 only changes behaviour from
GROVE_V4, and Platform compiles against its new version slot unchanged. #977 and #1006 tighten input validation; the full CI run on this PR is the check that nothing Platform writes trips them.How Has This Been Tested?
Local, macOS arm64, Rust 1.98.1:
cargo check -p drive-abci --tests: compiles.cargo check -p platform-wallet --features shielded --tests: compiles.cargo test -p drive-abci --libfiltered to every shielded state-transition module:shield*,shielded_common,shielded_transfer,unshield,shielded_withdrawal: 165 passed, 1 ignored;*_shielded_pool,token_shielded_transfer_with_shielded_fee,token_unshield_with_shielded_fee: 67 passed.These build real Orchard proofs with the new prover and verify them with the new verifier.
Upstream:
grovedb-commitment-tree(--all-features) 141 passed; orchardintegration/prover-perfcargo test --release84 + 2 + 2 + 1 passed.The full workspace suite, wasm and FFI builds are left to CI.
Breaking Changes
None for Platform users. Proofs, keys, verification results and consensus behaviour are unchanged. Only the internal
try_from_partscall site changed.Checklist:
structure.rs, regeneratedgrovedb-structure.json, and checked the structure viewer link posted on this pull requestFor repository code-owners and collaborators only
🤖 Generated with Claude Code