You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Following the Transaction newtype migration (#10461), 21 of the original 25 ignored tests have been restored. The remaining 4 all require constructing or modifying orchard::Bundle objects from scratch, which needs the orchard crate's testing module (gated behind feature = "test-dependencies").
Blocker
Enabling zcash_primitives/test-dependencies from Zebra fails due to a proptest version conflict:
zcash_primitives requires proptest >= 1.0, < 1.7
Zebra uses proptest 1.10.0
Until librustzcash updates its proptest version bound (or Zebra downgrades), we cannot access orchard::bundle::testing::arb_bundle or the test-gated constructors.
Remaining Ignored Tests
Test
What it needs
File
v5_with_duplicate_orchard_action
Duplicate an orchard action within a bundle (requires modifying the action list and proof)
Construct an orchard bundle with intentionally invalid (garbage) proofs
zebra-consensus/src/transaction/tests.rs
Why byte-level manipulation doesn't work
Unlike sapling (where spends/outputs/proofs are in separate contiguous sections that can be spliced), the orchard bundle format interleaves actions with their commitments in a way that makes:
Action duplication require updating the action count, proof size, and binding signature
Custom action construction require valid curve points for commitments (cv, cmx, nullifier, rk) that satisfy algebraic relationships
Garbage proof insertion require a validly-structured proof blob of the correct size within a properly-formed bundle
Resolution paths
Update proptest bound in librustzcash to >= 1.0, < 2.0 (or at least < 1.11), then enable zcash_primitives/test-dependencies in Zebra's proptest-impl feature. This unblocks orchard::bundle::testing.
Add a minimal orchard bundle builder to Zebra's test code that constructs bundles using only the public orchard::Bundle::from_parts API with dummy/zero values (if the orchard crate exposes enough public constructors).
Wait for the orchard crate to add public test helpers that don't require the test-dependencies feature.
Option 1 is the simplest and most complete fix.
Related: #10462 (original tracking discussion, now mostly resolved)
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Context
Following the Transaction newtype migration (#10461), 21 of the original 25 ignored tests have been restored. The remaining 4 all require constructing or modifying
orchard::Bundleobjects from scratch, which needs theorchardcrate'stestingmodule (gated behindfeature = "test-dependencies").Blocker
Enabling
zcash_primitives/test-dependenciesfrom Zebra fails due to a proptest version conflict:zcash_primitivesrequiresproptest >= 1.0, < 1.7proptest 1.10.0Until librustzcash updates its proptest version bound (or Zebra downgrades), we cannot access
orchard::bundle::testing::arb_bundleor the test-gated constructors.Remaining Ignored Tests
v5_with_duplicate_orchard_actionzebra-consensus/src/transaction/tests.rscoinbase_outputs_are_decryptable_for_fake_v5_blockszebra-consensus/src/transaction/tests.rsshielded_outputs_are_not_decryptable_for_fake_v5_blockszebra-consensus/src/transaction/tests.rsmempool_skip_accepts_block_with_garbage_orchard_proofszebra-consensus/src/transaction/tests.rsWhy byte-level manipulation doesn't work
Unlike sapling (where spends/outputs/proofs are in separate contiguous sections that can be spliced), the orchard bundle format interleaves actions with their commitments in a way that makes:
Resolution paths
>= 1.0, < 2.0(or at least< 1.11), then enablezcash_primitives/test-dependenciesin Zebra'sproptest-implfeature. This unblocksorchard::bundle::testing.orchard::Bundle::from_partsAPI with dummy/zero values (if the orchard crate exposes enough public constructors).test-dependenciesfeature.Option 1 is the simplest and most complete fix.
Related: #10462 (original tracking discussion, now mostly resolved)
Beta Was this translation helpful? Give feedback.
All reactions