Uh oh!
There was an error while loading. Please reload this page.
feat: varint protocol version - #758
Conversation
…into refactor/documentTypes
Co-authored-by: Quantum Explorer <quantum@dash.org>
…into refactor/documentTypes
…into refactor/documentTypes
qrayven
commented
Jan 26, 2023
LGTM, I didn't look that much into details, but I'm just wondering whether decoding collisions are possible. I mean, when the continuation bytes of varInt match the bytes from the payload |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
The grovedb develop bump in this PR pulls orchard 0.13.1 -> 0.14.0 via grovedb-commitment-tree (grovedb#758, an Orchard circuit-soundness fix). orchard 0.14 changed the bundle-reconstruction API; adapt the consensus verifier (reconstruct_and_verify_bundle) preserving exact acceptance semantics: - Action::from_parts now returns Result (was Option). Keep the IdentityRk rejection (same message) and KEEP the new InvalidEpk rejection (the soundness fix#758 ships). ActionFromPartsError is #[non_exhaustive] -> unknown future variants default to reject, never accept. - Bundle::from_parts -> Bundle::try_from_parts(.., ProofSizeEnforcement::Unenforced). Unenforced matches 0.13 (no proof-size check), keeping consensus acceptance byte-for-byte; Strict would add a new rejection that did not exist before. - Spend-auth signatures stay attached inline to each Action, so action<->signature pairing/ordering is preserved structurally. Add a direct orchard dep on rs-drive-abci pinned to the same git tag grovedb-commitment-tree resolves to (cargo unifies to one orchard build) so ProofSizeEnforcement / ActionFromPartsError can be named. Migration is confined to this one verifier file; all other shielded code (rs-dpp builder, rs-platform-wallet, wasm-dpp2) compiles unchanged. Validated: 143 drive-abci shielded tests pass (0 failed), incl. valid-proof acceptance and security-audit rejection (mutated value_balance, zeroed spend-auth/binding sigs) round-trips with real Halo 2 proofs from the 0.14 builder. v11 consensus regression test unaffected and green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Issue being fixed or feature implemented
We used to using a u32 prepended to each message for the version. This PR changes this to a varint. This is to save space.
What was done?
How Has This Been Tested?
Breaking Changes
Checklist:
For repository code-owners and collaborators only