Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
323 commits
Select commit Hold shift + click to select a range
50c6310
Fix comments, indroduce and use MatadataIdx type in the builder
dmidem May 9, 2024
78c8efc
Update to upstream (zcash/main v0.8.0) (#103)
dmidem May 9, 2024
39b479e
OrchardZSA backward compatability 0.8.0 (#104)
dmidem Jul 16, 2024
6e6112c
Synchronize Orchard with updates from zcash_note_encryption for zcash…
dmidem Jul 31, 2024
07b3697
Update ShieldedOutput implementation to return reference from enc_cip…
dmidem Aug 14, 2024
3ba9e5b
Remove redundancy in vanilla/zsa circuits
ConstanceBeguier Sep 19, 2024
e2fb49d
Updating test vectors (#114)
vivek-arte Oct 8, 2024
dd69425
Remove ZSA dummy notes
ConstanceBeguier Oct 10, 2024
410037d
Changing the type of the asset description from String to Vec<u8> (#113)
vivek-arte Oct 14, 2024
a7c02d2
Provide compatibility with librustzcash/zcash_client_backend: derive …
dmidem Oct 15, 2024
25020f8
Exclude non-native assets from value_balance (#120)
alexeykoren Nov 13, 2024
8a2a8de
Simplify Unproven struct
ConstanceBeguier Nov 28, 2024
adc6995
Update SIGHASH according to OrchardDomain
ConstanceBeguier Dec 9, 2024
97cf5a3
Add Clone trait to auth-related structures (#125)
alexeykoren Dec 12, 2024
8b89888
Unify unique AssetBase concept in IssueAction
ConstanceBeguier Dec 16, 2024
fe15076
Add a reference note for each first issuance
ConstanceBeguier Dec 17, 2024
9eb97f0
Simplify bundle build function return type (#129)
ConstanceBeguier Dec 20, 2024
3d2515b
Fix some links and typo (#127)
ConstanceBeguier Dec 25, 2024
0d2f439
Install libfontconfig1-dev to fix CI build on updated Ubuntu runner (…
dmidem Jan 6, 2025
69f92a3
Update AssetSuply and SupplyInfo (new) (#133)
dmidem Jan 8, 2025
3dbdbc5
Update to orchard_auth_digest computation (#134)
vivek-arte Jan 18, 2025
70daf8b
[book] Update book with ZSA changes
ConstanceBeguier Jan 23, 2025
40e7e10
Update derivation of the rho value in Issue Notes
ConstanceBeguier Jan 23, 2025
01e85a5
Add NULLIFIER_L constant
ConstanceBeguier Jan 28, 2025
a95364c
Refactor AssetSupply to AssetRecords and update issuance verification…
dmidem Feb 4, 2025
b62f72a
Fix cargo clippy warnings in PR #138 (#140)
dmidem Feb 6, 2025
b8d4543
Merge PCZT into zsa1
ConstanceBeguier Mar 11, 2025
e88e261
Extend Orchard protocol flavor derives (#144)
dmidem Mar 17, 2025
aeec27d
Add ZSA feature into PCZT
ConstanceBeguier Mar 13, 2025
123a2f4
Merge branch 'zsa1' into merge_pczt
ConstanceBeguier Apr 7, 2025
190a50c
Move burn to ActionGroup in OrchardZSA (#145)
alexeykoren Apr 17, 2025
831ca10
change asset_desc to asset_desc_hash (#156)
PaulLaux Apr 17, 2025
75c55b2
resolved conflicts and updated orchard_digest for zsa
PaulLaux Apr 17, 2025
6d557af
Merge branch 'zsa1' into merge_pczt_b and update hashes
PaulLaux Apr 17, 2025
5c09d33
Merge pczt (#157)
PaulLaux Apr 17, 2025
c7d57b1
Reduced Circle CI and github CI runtime (#158)
PaulLaux Apr 19, 2025
37101f4
Lock Sinsemilla version (#160)
ConstanceBeguier Apr 22, 2025
57f39bf
Merge branch 'main' into merge_main_fcb14def
ConstanceBeguier Apr 24, 2025
d56c5d5
Fix tests comparing orchard_digest against a fixed value
ConstanceBeguier Apr 24, 2025
cb539d4
Update test_vectors with last version of zcash-test-vector
ConstanceBeguier Apr 24, 2025
5f080b4
Fix clippy errors
ConstanceBeguier Apr 24, 2025
8388060
Replace ZIP32_ORCHARD_PERSONALIZATION_FOR_ISSUANCE const by ZIP32_ORC…
ConstanceBeguier Apr 24, 2025
572ba6b
Expose (Extracted)NoteCommitment in public API
ConstanceBeguier Apr 24, 2025
502c410
Disable default-features for k256
ConstanceBeguier Apr 29, 2025
8509081
Update Rust version in README
ConstanceBeguier May 1, 2025
cf31792
Merge main fcb14def into zsa1 (#152)
PaulLaux May 1, 2025
0a61d36
Update with new version of Sinsemilla (#159)
ConstanceBeguier May 1, 2025
f2411a0
Use fixed size array for asset_id (#162)
PaulLaux May 6, 2025
9a25bd1
Simplify compute_asset_desc_hash function (#161)
ConstanceBeguier May 6, 2025
7e4f28c
Use the last version of zcash_note_encryption (#165)
ConstanceBeguier May 22, 2025
6616893
Fix CI breakage by pinning proptest 1.2.0 and locking font-kit/half v…
dmidem Jul 1, 2025
cbcdb71
Pczt without domain (#168)
alexeykoren Jul 1, 2025
fdd69e2
Update zcash_note_encryption crate (#171)
ConstanceBeguier Jul 8, 2025
1746a4b
Remove circuit flag when it is possible (#173)
ConstanceBeguier Jul 15, 2025
9f44f55
Fix fake_compact_action visibility (#174)
ConstanceBeguier Jul 15, 2025
f7bcf01
Update circuit implementation (#167)
ConstanceBeguier Jul 23, 2025
c1f3dcc
Upgrate proptest dependency to 1.4.0 to be compatible with Zebra (#175)
dmidem Jul 23, 2025
806878c
Adopt proptest version range (>=1.0,<1.7) and roll back Cargo.lock (#…
dmidem Jul 28, 2025
fab774d
Simplify Orchard Flavor (#176)
ConstanceBeguier Jul 28, 2025
58b710b
Simplify ZSA implementation (#178)
ConstanceBeguier Jul 31, 2025
0982ff6
Remove native_asset_base prop_compose function (#180)
ConstanceBeguier Aug 5, 2025
826dc03
Add rho derivation check in verify_issue_bundle (#183)
ConstanceBeguier Aug 26, 2025
76d9b7e
Updating the encoding of the Issuance Authorization keys and signatur…
vivek-arte Sep 1, 2025
8784d39
Refactor IssueAuthSigScheme trait (#184)
ConstanceBeguier Sep 1, 2025
cc68804
Add versioned signatures (#181)
ConstanceBeguier Sep 8, 2025
0e496fe
Merge branch 'main' into merge_main_9d89b50
ConstanceBeguier Sep 8, 2025
532b0d2
Merge main (until commit 9d89b50) into zsa1 (#186)
PaulLaux Sep 8, 2025
b4517e3
Reduce diff with upstream (#187)
ConstanceBeguier Sep 8, 2025
d18f0d5
Update zcash_note_encryption (9f7e93) (#190)
ConstanceBeguier Sep 11, 2025
962564b
Fix issuance_digest, issuance_auth_digest and orchard_digest (#189)
ConstanceBeguier Sep 12, 2025
78b6f76
Updates to property testing (#191)
vivek-arte Sep 22, 2025
cf6d3b6
Create OrchardSighashVersion and IssueSighashVersion enum (#192)
ConstanceBeguier Sep 23, 2025
abd6ecc
Add spend_auth_sigs_auth_digest into orchard_auth_digest (#193)
ConstanceBeguier Oct 1, 2025
fc73b8e
Shuffle actions in a Bundle (#194)
ConstanceBeguier Oct 21, 2025
a7de16f
Fix split note in PCZT (#195)
ConstanceBeguier Oct 28, 2025
2083efe
Remove PCZT v2 (#196)
ConstanceBeguier Oct 29, 2025
a02fdf1
Remove dev-only numeric-extension patterns mistakenly committed to .g…
dmidem Nov 3, 2025
7a44ba5
PR471 review: CI: disable LTO in release tests; add apt update to Ubu…
dmidem Dec 23, 2025
f83d652
PR471 review: various fixes (2) (#208)
dmidem Jan 6, 2026
313544d
PR471 review: add IssuanceFlags to handle ZIP 230 issuance flags byte…
dmidem Jan 6, 2026
0589642
PR471 review: fix arb_asset_base generation (#211)
dmidem Jan 6, 2026
bb84ff2
PR471 review: implement ShieldedOutput for pczt::Action (#212)
dmidem Jan 6, 2026
accdd2f
PR471 review: pass asset as an argument into action proptest generato…
dmidem Jan 6, 2026
b5518f1
PR471 review: various fixes (1) (#207)
dmidem Jan 6, 2026
6c3de5d
PR471 review: remove expiry_height (#203)
ConstanceBeguier Jan 6, 2026
4f03573
PR471 review: update circuit files (#204)
ConstanceBeguier Jan 6, 2026
e48d478
PR471 review: use num_actions into build_bundle (#202)
ConstanceBeguier Jan 6, 2026
27e6824
Revert Value and ValueSum API changes per review feedback (#217)
dmidem Jan 8, 2026
f0cf7ea
PR471 review: various comments (#206)
ConstanceBeguier Jan 8, 2026
9f16cee
Fix tests for no-default-features (#218)
ConstanceBeguier Jan 8, 2026
f85cc40
PR471 review: gate ZSA issuance behind zsa-issuance feature (#214)
dmidem Jan 9, 2026
0e9729a
PR471 review: switch ZSA issuance Schnorr support to secp256k1 (#215)
dmidem Jan 12, 2026
2e6091a
Pin blake2b_simd to version 1.0.1 (#221)
ConstanceBeguier Jan 12, 2026
b0f857b
PR471 review: reduce zsa-issuance feature usage (#222)
ConstanceBeguier Jan 12, 2026
7259000
PR471 review: export issuance empty-hash helpers (#220)
dmidem Jan 13, 2026
00e76f9
PR471 review: make ValueSum::from_raw public (#224)
ConstanceBeguier Jan 13, 2026
382f319
PR471 review: Add AssetId enum (#223)
ConstanceBeguier Jan 13, 2026
7aafdc0
PR471 review: fix rho value for the issuance note (#225)
ConstanceBeguier Jan 14, 2026
b10dd2b
PR471: Make rho optional in Note (#226)
ConstanceBeguier Jan 15, 2026
e893aac
PR471 review: Improve documentation for hash regression tests (#227)
ConstanceBeguier Jan 15, 2026
dc861af
PR471 review: various comments (#228)
ConstanceBeguier Jan 16, 2026
c346973
PR471 review: Fix issuance key derivation to use dedicated ZIP-32 con…
ConstanceBeguier Jan 19, 2026
f011c7e
PR471 review: Remove clone on MaybeSigned enum (r2602563105) (#230)
ConstanceBeguier Jan 19, 2026
57c33af
PR471 review: Replace (Orchard/Issue)SighashVersioning with (Orchard/…
ConstanceBeguier Jan 19, 2026
404239a
Pin blake2b_simd to version 1.0.1 (#221)
ConstanceBeguier Jan 12, 2026
917f283
PR471 review: CI: disable LTO in release tests; add apt update to Ubu…
dmidem Dec 23, 2025
778607e
Fix CI (#233)
PaulLaux Jan 20, 2026
d8caa76
PR471 review: Rename native to zatoshi (#235)
ConstanceBeguier Jan 20, 2026
589312c
PR471 review: Validate Orchard note plaintext lead byte (#236)
ConstanceBeguier Jan 22, 2026
a80b5fa
PR471 review: Address Str4d’s feedback from Jan 20, 2026 meeting (#237)
ConstanceBeguier Jan 22, 2026
bda4fe0
PR471 review: updated comment for `VerifyingKey` x2
PaulLaux Jan 29, 2026
5da1dbc
PR471: updated book
PaulLaux Jan 29, 2026
61ab648
PR471 review: removed `zsa_issuance` from default in Cargo.toml
PaulLaux Jan 29, 2026
fcd1a0b
PR471 review: Re-export ReferenceKeys from issuance module (r2542447228)
PaulLaux Jan 29, 2026
49f5939
PR471 Review: Added MAX_BURN_VALUE
PaulLaux Feb 2, 2026
1d93e5f
PR471 Review: Removed redundent clippy directives.
PaulLaux Feb 2, 2026
9d2960c
PR471 review: updated visiability for create_split_note() to pub(crate)
PaulLaux Feb 3, 2026
ec35bcc
PR471 review: Fixed link to ZIP 226 / Note structure and Commitment
PaulLaux Feb 4, 2026
fec254a
PR471 Review: Removed redundant review hint.
PaulLaux Feb 4, 2026
5f8eb12
PR471 Review: Removed split_flag parameter from SpendInfo::new
PaulLaux Feb 5, 2026
44687bc
PR471 Review: added a `shielding_bundle::<OrchardZSA>(BundleType::DEF…
PaulLaux Feb 5, 2026
d2238a9
PR471 Reviw: Fix backward compatibility when building Bundle (#239)
ConstanceBeguier Feb 11, 2026
b90d40f
Removed the ability to create dummy notes for non-zatoshi assets
PaulLaux Feb 11, 2026
6fbb8ce
PR471 Review: removed circle ci config file
PaulLaux Feb 11, 2026
ff934f9
PR471 Review: Pined unicode-indent to 1.0.22 to be compatible with ru…
PaulLaux Feb 11, 2026
d1fface
Merge branch 'zsa1' into zcash_pr471_review
PaulLaux Feb 11, 2026
2bfc249
PR471 Review: Pined unicode-indent to 1.0.22 to be compatible with ru…
PaulLaux Feb 11, 2026
fea169d
Address review comments from zcash PR #471 (#216)
PaulLaux Feb 11, 2026
3ec9f6f
Update the test vectors based on the changes made in `zcash-test-vect…
vivek-arte Feb 17, 2026
7ec34c9
Refactor issue/burn validation for Zebra asset state integration (#199)
dmidem Feb 18, 2026
c76a09b
Add a missing covarage for issuance and improve tests (#241)
PaulLaux Feb 18, 2026
255a208
Remove create_test_reference_note (Zebra now gets reference notes fro…
dmidem Mar 2, 2026
03daf66
Address review comments from zcash PR #471 (2) (#243)
ConstanceBeguier Mar 6, 2026
d45da40
Merge branch 'zcash-main' into merge_upstream_20260309
ConstanceBeguier Mar 9, 2026
4b39a10
Fix issues
ConstanceBeguier Mar 9, 2026
92db1ee
Merge upstream 20260309 (#244)
PaulLaux Mar 17, 2026
77d3274
Add IssueBundle::note_commitments to expose extracted note commitment…
dmidem Mar 30, 2026
a7cb4b5
Fix CI (#247)
ConstanceBeguier May 4, 2026
59ce48d
(Circuit) Pin q_init points to constants (#246)
ConstanceBeguier May 5, 2026
5723ae4
Merge branch 'zcash-main' into merge_upstream_20260609
ConstanceBeguier Jun 16, 2026
ac82e19
Update halo2 in Cargo.toml
ConstanceBeguier Jun 16, 2026
1e5e13e
Fix clippy
ConstanceBeguier Jun 16, 2026
c881000
Fix new tests in src/action.rs
ConstanceBeguier Jun 16, 2026
7842b2c
Fix tests
ConstanceBeguier Jun 16, 2026
72784d7
Update expected_proof_size
ConstanceBeguier Jun 16, 2026
44afad1
Fix intra-doc links
ConstanceBeguier Jun 16, 2026
33f10e3
Update README
ConstanceBeguier Jun 16, 2026
e187c15
Move circuit_data folder
ConstanceBeguier Jun 17, 2026
05040ba
Simplify expected_proof_size implementation
ConstanceBeguier Jun 17, 2026
bb309ad
Prevent ZSA proofs on insecure ECC chips
ConstanceBeguier Jun 23, 2026
045ca8a
Add a comment
ConstanceBeguier Jun 24, 2026
cf801a5
Merge upstream 20260609 (#251)
PaulLaux Jun 29, 2026
d70fffb
Merge branch 'zcash-main' into merge_upstream_20260714
ConstanceBeguier Jul 17, 2026
4de8167
Update zsa circuit_data files
ConstanceBeguier Jul 17, 2026
78777b1
Add some checks on BundleVersion
ConstanceBeguier Jul 17, 2026
8f4207b
Comment some tests that require zcash_test_vectors modifications
ConstanceBeguier Jul 17, 2026
4581ccd
Refactor and clean
ConstanceBeguier Jul 17, 2026
f374f0c
Take into account Pablo's comments
ConstanceBeguier Jul 20, 2026
af0d1b6
Merge upstream 20260714 (#255)
PaulLaux Jul 20, 2026
00d2c0f
Support cross-address restriction in the ZSA circuit (#257)
ConstanceBeguier Jul 28, 2026
b578ad9
Limit code coverage CI job to 10 minutes (#262)
PaulLaux Jul 29, 2026
88f04ac
Copy circuit files from remove_orchard_primitives branch
ConstanceBeguier Aug 5, 2026
085b763
Re-apply last modifications from upsatream
ConstanceBeguier Aug 5, 2026
d27629e
Copy src/note/asset_base.rs from remove_orchard_primitives
ConstanceBeguier Aug 5, 2026
08a7d86
Add TODO ZSA
ConstanceBeguier Aug 5, 2026
cebb133
Remove tests from circuit_zsa file
ConstanceBeguier Aug 5, 2026
668ce6e
Copy constants/nullifier_l.rs from remove_orchard_primitives
ConstanceBeguier Aug 5, 2026
1a623a8
Add patch for halo2 in Cargo.toml
ConstanceBeguier Aug 5, 2026
1b3e89f
Copy constants/sinsemilla.rs from remove_orchard_primitives
ConstanceBeguier Aug 5, 2026
1f4edbf
Add patch for sinsemilla in Cargo.toml
ConstanceBeguier Aug 5, 2026
35eff9a
Add NoteCommitTrapdoor::new function
ConstanceBeguier Aug 5, 2026
a88102a
Update visibility of NoteCommitment::derive
ConstanceBeguier Aug 5, 2026
c3dd652
Add asset and rseed_split_note into Note
ConstanceBeguier Aug 5, 2026
605b6e1
Update expected_proof_size function
ConstanceBeguier Aug 5, 2026
4556f5b
Fix from_action_context_common
ConstanceBeguier Aug 5, 2026
a95e381
Add split_flag into SpendInfo
ConstanceBeguier Aug 5, 2026
ff93f2a
Add zsa_enabled flag
ConstanceBeguier Aug 5, 2026
5879844
Remove unused imports
ConstanceBeguier Aug 5, 2026
9a25cc8
Update flags
ConstanceBeguier Aug 5, 2026
3fa3865
Remove some TODO ZSA
ConstanceBeguier Aug 5, 2026
c7e5ad4
Fix circuit_data paths
ConstanceBeguier Aug 5, 2026
a25dcac
Add asset into NoteCommitment::derive function
ConstanceBeguier Aug 5, 2026
da5c21a
Add asset into OutputInfo
ConstanceBeguier Aug 5, 2026
42c2409
Reduce diff with upstream
ConstanceBeguier Aug 5, 2026
6f2a9c4
Move OchardCircuitVersion out of circuit module to avoid feature gating
ConstanceBeguier Aug 5, 2026
fa0db48
Reduce visibility of some structures
ConstanceBeguier Aug 6, 2026
fc22c99
Update changelogs
ConstanceBeguier Aug 6, 2026
c5ca73f
Circuit configure unify (#270)
PaulLaux Aug 24, 2026
21bfb22
Add some checks on enable_zsa
ConstanceBeguier Aug 25, 2026
8335a20
Update nu6_3_flags_parsing_handles_the_cross_address_bit test
ConstanceBeguier Aug 25, 2026
c630436
update visibility of derive_nullifier when feature=unstable-voting-ci…
ConstanceBeguier Aug 25, 2026
d22b81d
Add check in ActionInfo::build_for_pczt
ConstanceBeguier Aug 25, 2026
56476c0
Update comment
ConstanceBeguier Aug 25, 2026
00d93c7
Remove AssetBase::hash
ConstanceBeguier Aug 25, 2026
a5917f4
Restore ValueCommit::derive and add ValueCommit::derive_with_asset
ConstanceBeguier Aug 25, 2026
59fdc71
Add non_echaustive on OrchardCircuitVersion
ConstanceBeguier Aug 25, 2026
a111d57
Add non_exhaustive on OrchardHashDomains
ConstanceBeguier Aug 25, 2026
14833f9
Add ZSA circuit tests
ConstanceBeguier Aug 25, 2026
f731f05
Reduce diff with upstream in circuit.rs
ConstanceBeguier Aug 25, 2026
dde720e
Reduce diff with upstream
ConstanceBeguier Aug 25, 2026
fccc31c
Add a test to pin zsa circuit description
ConstanceBeguier Aug 25, 2026
c4eabd0
Update changelog
ConstanceBeguier Aug 25, 2026
6a36957
Check that spend and output asset match
ConstanceBeguier Aug 25, 2026
033664f
Add TODO ZSA
ConstanceBeguier Aug 25, 2026
dea3298
Update RestrictionUnsupportedByKey comment
ConstanceBeguier Aug 25, 2026
4861917
update comment for OrchardCircuitVersion::ZSA
ConstanceBeguier Aug 25, 2026
6ac887e
Remove orchard_sinsemilla_chip.rs file
ConstanceBeguier Aug 26, 2026
ff917a0
Create a constant for zatoshi asset base
ConstanceBeguier Aug 26, 2026
ecd69c5
Zsa circuit v1 add (#274)
PaulLaux Aug 26, 2026
7b7005b
Update Note::nullifier implementation and add tests
ConstanceBeguier Aug 26, 2026
356d6ef
Add assert to check (split_flag, rseed_split_note)
ConstanceBeguier Aug 26, 2026
e92ae6b
Add Note::psi_nf
ConstanceBeguier Aug 26, 2026
aae1a8f
Update circuit_zsa tests
ConstanceBeguier Aug 26, 2026
bd89e5d
Update changelog
ConstanceBeguier Aug 26, 2026
b7a6bee
Update changelog
ConstanceBeguier Aug 26, 2026
828308b
Update changelog
ConstanceBeguier Aug 26, 2026
c6dd0db
Document the split_flag consistency panic
PaulLaux Aug 26, 2026
2b4c83b
Test the split-note branch of Note::nullifier
PaulLaux Aug 26, 2026
1cc6b4e
Update comments
ConstanceBeguier Aug 26, 2026
ffa23b3
Doc+new test (#275)
PaulLaux Aug 27, 2026
e001a78
Reduce OrchardPrimitives generic parameter usage (#261)
ConstanceBeguier Aug 31, 2026
837ddd1
Move allocation of table_range_check_tag (#279)
ConstanceBeguier Sep 1, 2026
52eac78
Merge branch 'zsa_circuit_v1' into merge_zsa_circuit
ConstanceBeguier Sep 1, 2026
263c5f9
Make additional_zsa_witnesses an Option (#280)
ConstanceBeguier Sep 2, 2026
5170054
Make the zero-padding comment generic (#281)
ConstanceBeguier Sep 3, 2026
2287a3a
Align test in circuit_zsa.rs from zsa_circuit_v1 branch
ConstanceBeguier Sep 2, 2026
fdaae96
Update from_parts_internal to be only usable in tests
ConstanceBeguier Sep 3, 2026
67a3c66
Align circuit_zsa tests with the zsa1 branch (#283)
ConstanceBeguier Sep 3, 2026
bf3a8a4
Merge branch 'zsa_circuit_v1' into merge_zsa_circuit
ConstanceBeguier Sep 3, 2026
0a092fb
Remove TODO ZSA in circuit_zsa.rs
ConstanceBeguier Sep 3, 2026
49eb768
Add some tests on enable_zsa flags
ConstanceBeguier Sep 3, 2026
b9c5e4d
Update halo2 patches in Cargo.toml
ConstanceBeguier Sep 4, 2026
744469a
Update the halo2 patches to upstream zcash/halo2
ConstanceBeguier Sep 4, 2026
bd88a58
Update the halo2 patches to upstream zcash/halo2 (#286)
PaulLaux Sep 5, 2026
0a9a714
Merge branch 'zcash-main' into merge_upstream_20260907
ConstanceBeguier Sep 7, 2026
184cebf
Merge upstream 20260907 (#287)
ConstanceBeguier Sep 7, 2026
c4170f8
Merge branch 'zsa_circuit_v1' into merge_zsa_circuit
ConstanceBeguier Sep 7, 2026
77874fc
Fix clippy warnings introduced by bumping the rust version to 1.88
ConstanceBeguier Sep 7, 2026
290a1b0
Remove zsa1 changes in changelog
ConstanceBeguier Sep 8, 2026
8b2f280
Add batched_compact_decryption_matches_per_item_zsa test
ConstanceBeguier Sep 8, 2026
9d496d3
Remove compact_ciphertext_size from tests
ConstanceBeguier Sep 8, 2026
7cae48b
Rename only_orchard_zsa_permits_zsa with zsa_is_permitted_correctly
ConstanceBeguier Sep 8, 2026
afd1de3
Update comment
ConstanceBeguier Sep 8, 2026
f66cd36
Fix scope in create_split_spend
ConstanceBeguier Sep 8, 2026
a8ed7cc
Comment out split_note_nullifier test
ConstanceBeguier Sep 8, 2026
7994111
Merge zsa_circuit_v1 into zsa1 (#284)
PaulLaux Sep 8, 2026
fdccb59
Add rcm_zsa (#265)
ConstanceBeguier Sep 10, 2026
8d1bf46
Add Orchard V3 and Ironwood V3 fixed digest tests (#266)
ConstanceBeguier Sep 11, 2026
71aea69
Re-export OrchardCircuitVersion from the circuit module (#291)
dmidem Sep 16, 2026
e40bdfa
Issuance fixes and cleanup (#249)
ConstanceBeguier Sep 23, 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
43 changes: 26 additions & 17 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ jobs:
steps:
- uses: actions/checkout@v7
- name: Run tests
run: cargo test --verbose
env:
# Disable LTO in CI to avoid very slow/hanging release test builds on macOS (rustc/LLVM).
CARGO_PROFILE_RELEASE_LTO: "off"
run: cargo test --verbose --release
# verifier-fingerprint capture tests build the k=11 proving key and run real proofs, too
# heavy for every PR (regenerate the fixtures manually per the docs in
# src/circuit/fingerprint/mod.rs). Compile them so the cfg(test) module can't rot unnoticed:
Expand Down Expand Up @@ -90,6 +93,12 @@ jobs:
- name: Add target
working-directory: ./ci-build
run: rustup target add ${{ matrix.target }}
- name: Pin deps to versions compatible with rustc 1.70
working-directory: ./ci-build
run: |
cargo update -p unicode-ident --precise 1.0.12
cargo update -p syn --precise 2.0.114
cargo update -p quote --precise 1.0.44
- name: Build no_std for target
working-directory: ./ci-build
run: cargo build --verbose --target ${{ matrix.target }}
Expand All @@ -116,22 +125,22 @@ jobs:
- name: Test Orchard book
run: mdbook test book/

codecov:
name: Code coverage
runs-on: ubuntu-latest
container:
image: xd009642/tarpaulin:develop-nightly
options: --security-opt seccomp=unconfined
steps:
- uses: actions/checkout@v7
- name: Generate coverage report
# Enable every feature except `verifier-fingerprint`: it is opt-in capture tooling whose
# tests build the k=11 proving key and generate real proofs, which are far too heavy to run
# under coverage instrumentation on every PR. Run those manually per the docs in
# `src/circuit/fingerprint/mod.rs`.
run: cargo tarpaulin --engine llvm --features "dev-graph unstable-frost unstable-voting-circuits test-dependencies" --release --timeout 600 --out xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v7.0.0
# codecov:
# name: Code coverage
# runs-on: ubuntu-latest
# container:
# image: xd009642/tarpaulin:develop-nightly
# options: --security-opt seccomp=unconfined
# steps:
# - uses: actions/checkout@v7
# - name: Generate coverage report
# # Enable every feature except `verifier-fingerprint`: it is opt-in capture tooling whose
# # tests build the k=11 proving key and generate real proofs, which are far too heavy to run
# # under coverage instrumentation on every PR. Run those manually per the docs in
# # `src/circuit/fingerprint/mod.rs`.
# run: cargo tarpaulin --engine llvm --features "dev-graph unstable-frost unstable-voting-circuits test-dependencies" --release --timeout 600 --out xml
# - name: Upload coverage to Codecov
# uses: codecov/codecov-action@v7.0.0

doc-links:
name: Intra-doc links
Expand Down
6 changes: 6 additions & 0 deletions .github/workflows/lints-stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,12 @@ jobs:
- name: Add target
working-directory: ./ci-build
run: rustup target add ${{ matrix.target }}
- name: Pin deps to versions compatible with rustc 1.70
working-directory: ./ci-build
run: |
cargo update -p unicode-ident --precise 1.0.12
cargo update -p syn --precise 2.0.114
cargo update -p quote --precise 1.0.44
- name: Clippy no_std for target
working-directory: ./ci-build
run: cargo clippy --verbose --target ${{ matrix.target }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/target
**/*.rs.bk
.vscode
.idea
action-circuit-layout.png
54 changes: 40 additions & 14 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 11 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,12 @@ rustdoc-args = ["--cfg", "docsrs", "--html-in-header", "katex-header.html"]
[dependencies]
aes = "0.8"
bitvec = { version = "1", default-features = false }
blake2b_simd = { version = "1", default-features = false }
blake2b_simd = { version = "=1.0.1", default-features = false }
ff = { version = "0.13", default-features = false }
fpe = { version = "0.6", default-features = false, features = ["alloc"] }
group = "0.13"
hex = { version = "0.4", default-features = false, features = ["alloc"] }
secp256k1 = { version = "0.29", default-features = false, features = ["alloc", "rand"], optional = true }
lazy_static = "1"
memuse = { version = "0.2.2", default-features = false }
pasta_curves = { version = "0.5.2", features = ["glv"] }
Expand Down Expand Up @@ -92,6 +93,8 @@ multicore = ["halo2_proofs?/multicore"]
dev-graph = ["halo2_proofs?/dev-graph", "image", "plotters"]
verifier-fingerprint = ["circuit", "halo2_proofs/unstable-verifier-fingerprint"]
test-dependencies = ["proptest", "rand/std"]
zsa-issuance = ["dep:secp256k1"]
temporary-zebra = []

[[bench]]
name = "note_decryption"
Expand All @@ -112,3 +115,10 @@ debug = true

[profile.bench]
debug = true

[patch.crates-io]
sinsemilla = { git = "https://github.com/zcash/sinsemilla", rev = "aabb707e862bc3d7b803c77d14e5a771bcee3e8c" }
zcash_note_encryption = { git = "https://github.com/zcash/zcash_note_encryption", rev = "40b73b157374b62b648a26b94a1f236e5d9c389f" }
halo2_gadgets = { git = "https://github.com/zcash/halo2", rev = "828fab66a72116a4a8ea0dc7d8895667d90dacf4" }
halo2_proofs = { git = "https://github.com/zcash/halo2", rev = "828fab66a72116a4a8ea0dc7d8895667d90dacf4" }
zcash_spec = { git = "https://github.com/QED-it/zcash_spec", rev = "d5e84264d2ad0646b587a837f4e2424ca64d3a05" }
64 changes: 46 additions & 18 deletions benches/circuit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,46 @@ use pprof::criterion::{Output, PProfProfiler};

use orchard::{
builder::{Builder, BundleType},
bundle::BundleVersion,
circuit::{OrchardCircuitVersion, ProvingKey, VerifyingKey},
circuit::{ProvingKey, VerifyingKey},
keys::{FullViewingKey, Scope, SpendingKey},
note::AssetBase,
value::NoteValue,
Anchor, Bundle,
};
use rand::rngs::OsRng;

fn criterion_benchmark(c: &mut Criterion) {
mod utils;

use utils::{IronwoodV3, OrchardFlavorBench, OrchardV2, Zsa};

fn criterion_benchmark<FL: OrchardFlavorBench>(c: &mut Criterion) {
let rng = OsRng;

let sk = SpendingKey::from_bytes([7; 32]).unwrap();
let recipient = FullViewingKey::from(&sk).address_at(0u32, Scope::External);

let vk = VerifyingKey::build(OrchardCircuitVersion::FixedPostNu6_2);
let pk = ProvingKey::build(OrchardCircuitVersion::FixedPostNu6_2);
let bundle_version = FL::DEFAULT_BUNDLE_VERSION;

let vk = VerifyingKey::build(bundle_version.circuit_version());
let pk = ProvingKey::build(bundle_version.circuit_version());

let create_bundle = |num_recipients| {
let mut builder = Builder::new(
BundleType::DEFAULT,
BundleVersion::orchard_v2(),
BundleVersion::orchard_v2().default_flags(),
bundle_version,
bundle_version.default_flags(),
Anchor::from_bytes([0; 32]).unwrap(),
)
.unwrap();
for _ in 0..num_recipients {
builder
.add_output(None, recipient, NoteValue::from_raw(10), [0; 512])
.add_output(
None,
recipient,
NoteValue::from_raw(10),
AssetBase::zatoshi(),
[0; 512],
)
.unwrap();
}
let bundle: Bundle<_, i64> = builder.build(rng).unwrap().unwrap().0;
Expand All @@ -52,7 +64,7 @@ fn criterion_benchmark(c: &mut Criterion) {
let recipients_range = 1..=4;

{
let mut group = c.benchmark_group("proving");
let mut group = FL::benchmark_group(c, "proving");
group.sample_size(10);
for num_recipients in recipients_range.clone() {
let (bundle, instances) = create_bundle(num_recipients);
Expand All @@ -68,7 +80,7 @@ fn criterion_benchmark(c: &mut Criterion) {
}

{
let mut group = c.benchmark_group("verifying");
let mut group = FL::benchmark_group(c, "verifying");
for num_recipients in recipients_range {
let (bundle, instances) = create_bundle(num_recipients);
let bundle = bundle
Expand All @@ -85,15 +97,31 @@ fn criterion_benchmark(c: &mut Criterion) {
}

#[cfg(unix)]
criterion_group! {
name = benches;
config = Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)));
targets = criterion_benchmark
fn create_config() -> Criterion {
Criterion::default().with_profiler(PProfProfiler::new(100, Output::Flamegraph(None)))
}

#[cfg(windows)]
fn create_config() -> Criterion {
Criterion::default()
}

criterion_group! {
name = benches;
config = Criterion::default();
targets = criterion_benchmark
name = benches_orchard_v2;
config = create_config();
targets = criterion_benchmark::<OrchardV2>
}
criterion_main!(benches);

criterion_group! {
name = benches_ironwood_v3;
config = create_config();
targets = criterion_benchmark::<IronwoodV3>
}

criterion_group! {
name = benches_zsa;
config = create_config();
targets = criterion_benchmark::<Zsa>
}

criterion_main!(benches_orchard_v2, benches_ironwood_v3, benches_zsa);
Loading
Loading