test(zcash): harden v1 PCZT end-to-end coverage
What changed, and why it matters
This commit only adds and updates test code for the Zcash PCZT (Partially-Created Zcash Transaction) feature. It hardens end-to-end test coverage for version 1 PCZTs that include both transparent and Orchard shielded inputs/outputs. There are no changes to production firmware logic, only test fixtures and test assertions.
No action required; this is a test-hardening change. Routine review/merge is appropriate.
Security signals we found
No production code changes
Test-only commit
Adds defensive assertions for signature finalization behavior
Adds fixed binary fixture to make tests independent of upstream PCZT builder changes
Evidence from the diff
The commit modifies three files under rust/apps/zcash: Cargo.toml adds the ‘spend-finalizer’ feature to the pczt dev-dependency; lib.rs rewrites test_v1_pczt_orchard_check_parse_and_sign into test_v1_pczt_transparent_orchard_check_parse_and_sign with a new fixture covering transparent + Orchard v1 parsing, signing, and spend finalization; pczt/mod.rs replaces a legacy v5 Orchard-only fixture with a hard-coded v1 transparent+Orchard hex fixture and removes the TxVersion parameter from sample_orchard_change_pczt_for_account so it always builds v6 PCZTs. No runtime code paths are changed.
Changed components
rust/apps/zcash testsZcash PCZT test support moduleInspect captured patch +177 / −36
diff --git a/rust/apps/zcash/Cargo.toml b/rust/apps/zcash/Cargo.toml
index ec589bd..74cd3f4 100644
--- a/rust/apps/zcash/Cargo.toml
+++ b/rust/apps/zcash/Cargo.toml
@@ -27,7 +27,7 @@ zeroize = { workspace = true }
[dev-dependencies]
keystore = { path = "../../keystore" }
-pczt = { version = "0.8.0-rc.1", default-features = false, features = ["io-finalizer", "orchard", "sapling", "transparent", "zcp-builder"] }
+pczt = { version = "0.8.0-rc.1", default-features = false, features = ["io-finalizer", "orchard", "sapling", "spend-finalizer", "transparent", "zcp-builder"] }
zcash_primitives = { version = "0.29.0", default-features = false, features = ["circuits", "test-dependencies", "transparent-inputs"] }
incrementalmerkletree = { version = "0.8.2", default-features = false }
shardtree = "0.6.2"
diff --git a/rust/apps/zcash/src/lib.rs b/rust/apps/zcash/src/lib.rs
index ac02316..259204e 100644
--- a/rust/apps/zcash/src/lib.rs
+++ b/rust/apps/zcash/src/lib.rs
@@ -1904,21 +1904,41 @@ mod tests {
}
#[test]
- fn test_v1_pczt_orchard_check_parse_and_sign() {
- let sample = pczt::test_support::sample_legacy_orchard_change_pczt();
- let v1_pczt = ::pczt::v1::Pczt::try_from(Pczt::parse(&sample.bytes).unwrap())
- .unwrap()
- .serialize();
- assert_eq!(&v1_pczt[..8], b"PCZT\x01\0\0\0");
+ fn test_v1_pczt_transparent_orchard_check_parse_and_sign() {
+ let sample = pczt::test_support::sample_legacy_transparent_orchard_pczt();
+ assert_eq!(&sample.bytes[..8], b"PCZT\x01\0\0\0");
+
+ let fixture = Pczt::parse(&sample.bytes).unwrap();
+ assert_eq!(*fixture.global().tx_version(), constants::V5_TX_VERSION);
+ assert_eq!(fixture.transparent().inputs().len(), 1);
+ assert_eq!(fixture.transparent().outputs().len(), 1);
+ assert_eq!(fixture.orchard().actions().len(), 2);
+ assert!(fixture
+ .orchard()
+ .actions()
+ .iter()
+ .all(|action| action.spend().spend_auth_sig().is_none()));
+ assert!(fixture.ironwood().actions().is_empty());
let parsed = parse_pczt_cypherpunk(
&MainNetwork,
- &v1_pczt,
+ &sample.bytes,
&sample.ufvk_text,
&sample.seed_fingerprint,
)
.unwrap();
assert!(parsed.get_ironwood().is_none());
+
+ let transparent = parsed
+ .get_transparent()
+ .expect("v1 transparent bundle should decode");
+ assert_eq!(transparent.get_from().len(), 1);
+ assert!(transparent.get_from()[0].get_is_mine());
+ assert_eq!(transparent.get_from()[0].get_value(), "0.01 ZEC");
+ assert_eq!(transparent.get_to().len(), 1);
+ assert_eq!(transparent.get_to()[0].get_value(), "0.0099 ZEC");
+ assert!(!transparent.get_to()[0].get_is_change());
+
let orchard = parsed
.get_orchard()
.expect("v1 Orchard bundle should decode");
@@ -1926,17 +1946,27 @@ mod tests {
assert!(orchard.get_from()[0].get_is_mine());
assert_eq!(orchard.get_from()[0].get_value(), "0.01 ZEC");
assert_eq!(orchard.get_to().len(), 1);
- assert_eq!(orchard.get_to()[0].get_value(), "0.0099 ZEC");
- assert_eq!(parsed.get_fee_value(), "0.0001 ZEC");
+ assert_eq!(orchard.get_to()[0].get_value(), "0.00995 ZEC");
+ assert!(orchard.get_to()[0].get_is_change());
+ assert_eq!(parsed.get_fee_value(), "0.00015 ZEC");
let normalized = check_pczt_cypherpunk(
&MainNetwork,
- &v1_pczt,
+ &sample.bytes,
&sample.ufvk_text,
&sample.seed_fingerprint,
0,
)
.unwrap();
+ assert!(matches!(
+ ::pczt::roles::spend_finalizer::SpendFinalizer::new(Pczt::parse(&normalized).unwrap())
+ .finalize_spends()
+ .unwrap_err(),
+ ::pczt::roles::spend_finalizer::Error::TransparentFinalize(
+ zcash_vendor::transparent::pczt::SpendFinalizerError::MissingSignature
+ )
+ ));
+
let signed = sign_checked_pczt(
&MainNetwork,
&normalized,
@@ -1945,12 +1975,23 @@ mod tests {
0,
)
.unwrap();
- assert!(Pczt::parse(&signed)
- .unwrap()
+ let signed = Pczt::parse(&signed).unwrap();
+
+ ::pczt::roles::spend_finalizer::SpendFinalizer::new(signed.clone())
+ .finalize_spends()
+ .expect("the one transparent input should be signed");
+
+ let signed_orchard_actions = signed
.orchard()
.actions()
.iter()
- .any(|action| action.spend().spend_auth_sig().is_some()));
+ .enumerate()
+ .filter_map(|(index, action)| {
+ action.spend().spend_auth_sig().is_some().then_some(index)
+ })
+ .collect::<Vec<_>>();
+ assert_eq!(signed_orchard_actions, vec![0]);
+ assert!(signed.ironwood().actions().is_empty());
}
#[test]
diff --git a/rust/apps/zcash/src/pczt/mod.rs b/rust/apps/zcash/src/pczt/mod.rs
index 1bc27f7..2564ca3 100644
--- a/rust/apps/zcash/src/pczt/mod.rs
+++ b/rust/apps/zcash/src/pczt/mod.rs
@@ -799,22 +799,130 @@ pub(crate) mod test_support {
}
pub(crate) fn sample_orchard_change_pczt() -> SamplePczt {
- sample_orchard_change_pczt_for_account(0, TxVersion::V6)
+ sample_orchard_change_pczt_for_account(0)
}
- pub(crate) fn sample_legacy_orchard_change_pczt() -> SamplePczt {
- sample_orchard_change_pczt_for_account(0, TxVersion::V5)
+ /// Fixed v1 bytes that remain independent of changes to the current PCZT builders.
+ pub(crate) fn sample_legacy_transparent_orchard_pczt() -> SamplePczt {
+ const PCZT_HEX: &str = concat!(
+ "50435a5401000000058ace9cb502b4a1db960c0100a8897a850100000101010101010101010101010101010101010101",
+ "010101010101010101010101010000000000c0843d1976a914ba4ef3bbc4125b49a6abd7415b967c59e9b667fe88ac00",
+ "000101023069edcd102ea24cb79c64fc6f28b599901bfbc1b4018fda1cb1644263469aff0f213b9facb6c1cf1b1884be",
+ "c4380deffd25fe0a5f8cfac12249474cfaa07a5d05ac80808008858180800880808080080000000000000001b0b63c19",
+ "76a914a4a95f46235f144e92ac1a7e2f601640fd25894388ac00000123743159744669796f35467442707a78327a7241",
+ "586a52597336364556664432447743470000000000000000000000000000000000000000000000000000000000000000",
+ "000000000002d7de77f6ffe88bc38e68fb0a754a8487344a12f5138492f1284b22092000501bca0d93ecc6298e39c882",
+ "41e4788bcff09c8766e5cc643df29dfb4181d060cb2db3b123b6f1b8a19016b8df2daf7b0ba5fbe61055db093d216658",
+ "b8a77126a18d0001f5520a1777474e15757f4a8cbb6b84bf926e24e8c12eda940a9cc69b99fc06cc84e87d0949cb12e2",
+ "22101901c0843d01068957ba39a3428fda2844fc8c8e5cde846908c9291fa36a5a157ef6af45551801cb715a9c98b3f2",
+ "bba68725aebd130616f2055571131313c33a30d4e67430957001fea7e5f33f92dbdaeb60f04893da113cbd058832f724",
+ "b0a521f70c6b32e9e2095587d375f5772a54e29eac5f11352f3ead177237470370b3de8cfc331257681c109f29f7435b",
+ "32df20eff2429ef6f617dcb07705d75701d63d3ea34cdfa9ef3e01000200000000000000000000000000000000000000",
+ "000000000000000000000000d1ab2507c809c2713c000f525e9fbdcb06c958384e51b9cc7f792dde6c97f411c7413f46",
+ "14cd64043abbab7cc1095c9bb104231cea89e2c3e0df83769556d0302111fc397753e5fd50ec74816df27d6ada7ed2a9",
+ "ac3816aab2573c8fac794204806afbfeb45c64d4f2384c51eff30764b84599ae56a7ab3d4a46d9ce3aeab431873e4157",
+ "f2c0f0c645e899360069fcc9d2ed9bc11bf59827af0230ed52edab1827ab1320953ae1ad70c8c15a1253a0a86fbc8a0a",
+ "a36a84207293f8a495ffc4024e14563df191a2a65b4b37113b5230680555051b22d74a8e1f1d706f90f3133bb3bbe4f9",
+ "93d18a0f4eb7f4174b1d8555ce3396855d04676f1ce4f06dda07371f4ef5bde9c6f0d76aeb9e27e93fba28c679dfcb99",
+ "1cbcb8395a2b57924cbd170ea3c02568acebf5ca1ec30d6a7d7cd217a47d6a1b8311bf9462a5f939c6b743073ef9b30b",
+ "ae6122da1605bad6ec5d49b41d4d40caa96c1cf6302b66c5d2d10d3922ae2800cb93abe63b70c172de70362d9830e538",
+ "00398884a7a64ff68ed99e0b187110d92672c24cedb0979cdfc917a6053b310d145c031c7292bb1d65b7661b3f98adbe",
+ "364f148b0cc2042cafc6be1166fae39090ab4b354bfb6217b964453b63f8dbd10df936f1734973e0b3bd25f4ed440566",
+ "c923085903f696bc6347ec0f2182163eac4061885a313568148dfae564e478066dcbe389a0ddb1ecb7f5dc34bd9dc068",
+ "1918a3f3f9cd1f9e06aa1ad68927da63acc13b92a2578b2738a6d331ca2ced953b7fb95e3ba986333da9e69cd355223c",
+ "929731094b6c2174c7638d2e55354b96b56f9e45aae1e0094d71ee248dabf668117778bdc3c19ca5331a4e1a7097b04c",
+ "2aa045a0deffcaca41c5ac92e694466578f5909e72bb78d33310f705e81d6821ff813bd410867a3f22e8e5cb7ac5599a",
+ "610af5c354eb392877362e01157de8567f7c4996b8c4fdc94938fd808c3b2a5ccb79d1a63858adaa9a6dd824fe1fce51",
+ "cd6120c12c124695c4f98b275918fceae6eb209873ed73fe73775d0b1f91982912012669f74d0cfa1030ff37b152324e",
+ "5b8346b3335a0aaeb63a0a2d5dec15f52af17da3931396183cbbbfbea7ed950714540aec06c645c754975522e8ae2ad9",
+ "1d463bab75ee941d33cc5817b613c63cda943a4c07f600591b088a25d53fdee371cef596766823f4a518a583b1158243",
+ "afe89700f0da76da46d0060f15d2444cefe7914c9a61e829c730eceb216288fee825f6b3b6298f6f6b6bd62e4c57a617",
+ "a0aa10ea7a83aa6b6b0ed685b6a3d9e5b8fd14f56cdc18021b12253f3fd4915c19bd831a7920be55d969b2ac23359e25",
+ "59da77de2373f06ca014ba2787d063cd07ee4944222b7762840eb94c688bec743fa8bdf7715c8fe29f104c2a0139c304",
+ "0591d5490335cb982852d9d9db581779db3141cf2198ababa1c15a172c010f213b9facb6c1cf1b1884bec4380deffd25",
+ "fe0a5f8cfac12249474cfaa07a5d03a0808080088581808008808080800800002d97e62e15dd29c7d00a16f9d555e468",
+ "37aaebcdaaefd7d341e142a9e45e2425ce7f12eac4afa1e7f6a807c2a552e88a2459655d57486ec1c6c5e739da72d22f",
+ "c404003f915d95cd8e53c5fa9e4856f0b24bcb639132ddb981241079ed6e9cdfb2197b1bfcb234b23012bb5c7aaf134f",
+ "1ce888360cbb8663acfce17a6c847fc033f630ff9c061bebb9da1732f30e7eb4af50d9f238428896831aa3a323593d34",
+ "863eaf5e2fb1819eedc8ee8a1f280a9672f0a8970eb509ef0df107ce8a621331413ddecb3ac2e54501068e824e423a57",
+ "374e92679e6898db5e76666c87bcae52c8b2b56b62c48b5639f638166426fcc12da61ef0d0be3ee2fca43fe608e30fc3",
+ "121a043cb757cca2c743037800f30560d94395b5f41a7c7c783c3c7255b297ae99fe16c06f0a659da4ec6d67772e87dc",
+ "d4623bbdf40c99d8c526e2605684c64fd30cdbcfa950ad82711011d2a781dd701957d860969093573eea6ca36b698c3e",
+ "ad422c962a5dfb8967b71274fdbf36ab5134bb78df7bf89a72b339a0ef632a4b3361cfec2a8b8af9a8be3b2f8097b3f6",
+ "bf873249cc2aa588b81ec39c733cb7f7e7bf69792781477a7ca429c20401785e6ffc2368c127a183589a3bcab8e58568",
+ "0d9746e43161b83f066eda7e24da96e88f36161ddae9a6eb9a08b272efa14c106d100eaeefbf61671fdca859e91f3b01",
+ "8600deef3469481c0cb4077ddb21dfa54f779d1b39a08d21255c9158be500acf976f0a4beef6ed62dbcf60339eff5d58",
+ "a489a67ab3559dd28d0e92382f7bda1b1c599a3d07e9c4408b2b08734b8635791cb60d0bf16fa5b64a9b03a278a6a613",
+ "17d115be42d48cd37ae395444d6966deec1a47e7728a43dbf296622a2db97dfbcd0fc76ecabd7d831a3b878de5b6dc8c",
+ "5bb3c2f2135a5063bf5055326e1f61e81967fdebc92e26179a5eb596da2948badc09ca94ed0d73bdf9ed250c43d70ca1",
+ "ebae520e069390ae527b3f02be5bb8052c6f4f968bc5aecb23d753b021dd9f7863a60bfa5a134101dae4e5dc1cc3ec8a",
+ "427138f7d59e13b8c21da9b2efd152aaa83ac7dce3b7de048af411a1fff8c8b7fb4f2e01b8dd3c016a45a187bcc465a4",
+ "5a2f8b2b63a5b3296f22b316bd24e7f0fa4eb44bff5e1dfd00000000017fbc144dafdd2423ce223ae359052b61085e8a",
+ "8da4b3e4188c9eaf89e108bb217159134427cdc6afa5d0ed3d9729e7ac122011ce0805d8924974ea5a3381a02da01904",
+ "d5a6b72ae0ee1c2a56c32f3a98ed2b1563bddf70e9d31d0d14c2c1bd0b9d73b752d50c4ccb9013c98fd228098e47640c",
+ "cf96e33ddda1874ff4acac0e890001663a9335eaadf30de4a0c57917476142d8344fd30e78f9ffce3a5256bba83f4d84",
+ "c7589964d089033c8f12010001d7a7f858ffb16f4124a57f5d7d5e3c75919efd26619421cdc116cb77ea36aa3d0176d7",
+ "898d75e50d30ccb98c5616642a2ad7c908e0f43f44519885151afada70f10154c1c128b406f34be416ca8ddc52f0d4a7",
+ "c7318e9eeece33265e30b256cf1a3c93cd916f299b1129571f506df32af6bce7f97690108926c3fcd6a10930733f2c10",
+ "af50998bd7060533695bf10bd470f42333f2ce10648ad8a828281eab4e382401f0b093c30b86420dc27ace6a500c9c35",
+ "859cf9a57403d9b1ddec048652912e6a30aea8583516e059921d3e38a823d7df257152a124743caa09eddab02e1169c9",
+ "f8bd4a45140a7e56356a3b3a228fd9a5a730f871eba0f3983e1dc28a3bf2f88f3bf302760a999cce88e27151507b47dc",
+ "0c79a5e6596c5c14a14461c5d7b9312bc73fb6192c772a9c1305df036f75ffb6f4d497d43e33ae80aab01f8e620e35da",
+ "05dc3fa011e02240f8c6ab0b8cec024b342b6d21a6b35c37dbb396b7becdaf6b90614c233e65bd636063192181d7d9f9",
+ "1843239b9d95ab5859f0abbddd3163bfc53215d10bc15a2c548359e6356e25f1f4f1422f8969a5618447776f56285ecb",
+ "3c43fed11ec73926a555bb7e75e765f73f3820098044c6a084d8d883031e8db9e2fa9a6c0b9c43666027d0cef4765b02",
+ "7c2481a5be19a05ae8d36d4e6cc32fadc995c9d50a0e5ada2cc387903a4e178261bbc168b0f0854194d7e851ba6ce5a9",
+ "efaa6c842323272eaad5245f913d970c69ef20a3a581087b20dc9f16170b175df9e727662b09bb71dda5d918d6754767",
+ "980a9475acebd5c301534c29f9b7d8c9e3c1085d3582e65c64240409161c096874a10381c06fcb14a9f5606734ca7237",
+ "e7faa1f4016b8cc1dd24bb5628587bb328493a52f498a66963f59bffaf8c4ede0f2c0e30113ce58f6d550274e371b945",
+ "c76cee8c06436453aa725ac7d94e2a109bf0fc360f88cf9be0b163fa582e56d6e582ea72acf68c7cdf98b7c099ecd365",
+ "58fccf1a016180d515b4ed742267158a81661211bfcf64dbeca3601107635292e09877bd044e94149d0a9184a5ff060b",
+ "8409a1cb4bdbff30bb5bffb350fa82674255e6a20849d99cf25cf31ccf5abea96de641f7509dc1daebcdd16ad08b96b9",
+ "ed8d47cf1457c1ade6b892f23c3cbe0b924c761f19ec6bc7efa6924c893c3972f84eb0aa3dc7cd7b3d88b3e08be850c4",
+ "9aa33a1e672dc7b204aacf7a81ac461df202b97a3170fdc972c6bb19902051df2db8d635b2c4e6ad62ef1d3dfb5da816",
+ "a1a3b9c00e5c486e2881cce37261f34268277694bad8af2005f3f4e8cb7fd8eacc57cb3923f5538b448a5e8723cdb446",
+ "d976c2451eb8cdeb6d402a341b512db0863ca6df16b501671b46eb4eed88fa0c72dc532d263eaedf4ae89ac334265d84",
+ "8c830e73168813f5d05c16c2c60329bf5f288a20db2716d1017897aee19c23a558c4aeae1991eb4885c2e003ffc2834b",
+ "df4f07e2e6708824f4903ef4d7595672c68b23a830ba20a81eead158627dccf045e10c78cd055e7f15006f029300a08f",
+ "de4824a005066e3567b72245c547d2953121e334f54b9990543ddea0395ee997f26c0b8d30d9ed146b83122323a64cdb",
+ "5bfa95c2b38d01365ad8412fdc67848a0123e6f73e207330ffb52bd38ce531eae1a2d978665fd89fc402e84ab78eb572",
+ "40329de10001688234fd1d9fe781607ae78eedbe68e33ab9233f91e7f2392ed2bad56abb61380001eb7a0da0effe1eb5",
+ "6108c8e542e9eb4ebf05740e3776a6caafe25c88b1245b6f0093128312cee979e30cad333190f0e73616924b250daf78",
+ "8c528a7e954a491108801562a9acd5f569fee3a89c0472d14d705109366e019b786a1078278b429197c404735247d474",
+ "f4fd3ca0c11a5d334d421d3e2b710c725290d5dd005da6eb83daa8c3c8a5cfe9aa2e69eea60170383207a1d1e8fbeb5c",
+ "51e177b0b7849d8e3f73cdb931f37d89350617586ed88f7e993271388c749674a8d57ebdcbd688676cd1ec0f359f6f54",
+ "df92ca61a93d61e1439a640a66e32f1429c3b7492308ba05dc5bf601c154f45389f236fb203b04f977a12695122334f4",
+ "0785cf31464b3c16def65256c06678bb96cd07456577a6fa5f966a8b64d728492b7c3b944c5062f05197274e8065b7ef",
+ "864ff7e0bef15476d3bd855d6cacae99c83a0330f66b42f3f3cce8859c28759aa52bd9456e95cd4a2589c95e8d82bdce",
+ "726b128bc0865ba3913473b9beeacbc478e33aef2f5a529018c0611af2aaf77a6e2beeaad86b067d70d71a45c757b57c",
+ "c82871790c5b70b23f40c6f73499ed3c5d68abe32009d618811b10f7f604df66460a7fe26fb0d4c3b771aa0ba763070c",
+ "78997d6c712f5775e4092844876f5c7849d755e69283ca4788c38427570fbf956f4afbb42c0cc1c2bbc6e49660a1f4eb",
+ "2e5d44183f52abd216d32db5dd5702801065ac6a8edd3f34ea25e16d084b379014946bd809bca84b1861df2d262001dc",
+ "80b132a5a4cee03a5c7c8694cd383c3a89e928af8e70ff66162a43002fcd193c346ff64a4cd72a75478712151b06b78f",
+ "ff0a32f3b4efb6639b68eae3a247defa7c16c55b7a38785544e18a50ad7eb378b29e27d4c447b51f7b2d03693622ed5d",
+ "a3482e18673d22c8e5963491943122eb338538dba12dcf2e8b5bd69043e043beaadd0eb133bdca4454a648dd07235650",
+ "3cc5776971573054c7863a384539afd5e65466cf682378518360e428d669d73a60f168fe1fff33abdb5602c1e088eb28",
+ "d16a79144c089c230b167fcc953678ac3992df58119b0c378c806aa8bc2cd00701a492bd2f05b8c8147f431e5c6fc951",
+ "7393f9f7527dd1a97d0ae104c31143e80940b6ea23a7c5293f109db5010001202811a564c8023a720cfeb8acf07e7a66",
+ "95271230e12055ae9b1bd15ec7a7c10000000001541f53a50812ca83a8b61a9d7cc6e84839dfa1ffcf2d8b3b9266b228",
+ "ad067214038827002078c89963306be0c1793873e73636a0371992af9d75489945d522591dbf98140000",
+ );
+
+ let params = MainNetwork;
+ let seed = [7u8; 32];
+ SamplePczt {
+ bytes: hex::decode(PCZT_HEX).expect("hard-coded v1 PCZT fixture is valid hex"),
+ seed: seed.to_vec(),
+ ufvk_text: derive_ufvk(¶ms, &seed, "m/32'/133'/0'").unwrap(),
+ seed_fingerprint: calculate_seed_fingerprint(&seed).unwrap(),
+ }
}
pub(crate) fn sample_orchard_foreign_change_pczt() -> SamplePczt {
- sample_orchard_change_pczt_for_account(1, TxVersion::V6)
+ sample_orchard_change_pczt_for_account(1)
}
- fn sample_orchard_change_pczt_for_account(
- output_account: u32,
- tx_version: TxVersion,
- ) -> SamplePczt {
- let v6 = tx_version == TxVersion::V6;
+ fn sample_orchard_change_pczt_for_account(output_account: u32) -> SamplePczt {
let params = MainNetwork;
let seed = [7u8; 32];
let ufvk_text = derive_ufvk(¶ms, &seed, "m/32'/133'/0'").unwrap();
@@ -882,16 +990,8 @@ pub(crate) mod test_support {
let mut builder = orchard::builder::Builder::new(
orchard::builder::BundleType::DEFAULT,
- if v6 {
- orchard::bundle::BundleVersion::orchard_v3()
- } else {
- orchard::bundle::BundleVersion::orchard_v2()
- },
- if v6 {
- orchard::bundle::BundleVersion::orchard_v3().default_flags()
- } else {
- orchard::bundle::BundleVersion::orchard_v2().default_flags()
- },
+ orchard::bundle::BundleVersion::orchard_v3(),
+ orchard::bundle::BundleVersion::orchard_v3().default_flags(),
anchor,
)
.expect("default flags are representable under the bundle version");
@@ -911,8 +1011,8 @@ pub(crate) mod test_support {
let seed_fingerprint = calculate_seed_fingerprint(&seed).unwrap();
let pczt = Creator::build_from_parts(PcztParts {
params,
- version: tx_version,
- consensus_branch_id: if v6 { BranchId::Nu6_3 } else { BranchId::Nu6 },
+ version: TxVersion::V6,
+ consensus_branch_id: BranchId::Nu6_3,
lock_time: 0,
expiry_height: BlockHeight::from_u32(10_000_000),
transparent: None,
@@ -939,7 +1039,7 @@ pub(crate) mod test_support {
})
})
.collect::<Vec<_>>();
- assert_eq!(signing_action_accounts.len(), if v6 { 2 } else { 1 });
+ assert_eq!(signing_action_accounts.len(), 2);
for (action_index, account) in signing_action_accounts {
let derivation = orchard::pczt::Zip32Derivation::parse(
Why this scored 12/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.