Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
361 commits
Select commit Hold shift + click to select a range
6138a87
fix(sentry): Conditional init (#10256)
oxarbitrage Feb 2, 2026
4caee02
change(CI): Run scheduled full sync on Testnet (#10251)
upbqdn Feb 2, 2026
0a63242
fix(ci): make GCP instance template creation idempotent (#10259)
gustavovalverde Feb 2, 2026
9ad7d3c
refactor(state): improve error propagation for CommitCheckpointVerifi…
syszery Feb 3, 2026
c52c65d
feature(zebra-chain): add new `Bounded` vec type and apply it in Adju…
syszery Feb 3, 2026
87eca87
change(chain): Split subsidy constants into submodules (#10185)
upbqdn Feb 3, 2026
18178ed
fix(ci): remove unsupported `continue-on-error` from reusable workflo…
gustavovalverde Feb 3, 2026
1886129
fix(docker): replace gosu with setpriv for privilege dropping (#10270)
gustavovalverde Feb 4, 2026
3598023
Bump `vergen-git2` to v9 (#10272)
upbqdn Feb 4, 2026
ad6274c
chore: Update `Cargo.lock` (#10276)
upbqdn Feb 5, 2026
43ad654
perf: cache restorable db versions during old db cleanup (#10245)
GarmashAlex Feb 5, 2026
2238272
chore: Update checkpoints (#10278)
upbqdn Feb 5, 2026
b4f9eda
chore: Release v4.1.0 (#10281)
upbqdn Feb 6, 2026
7d8f3d6
set MSRV to 1.85 and actually test it in CI (#10275)
conradoplg Feb 6, 2026
16c40c1
add(chain): Add founders reward addresses (#10188)
upbqdn Feb 9, 2026
70f8373
feat(rpc): Implement `gettxout` RPC method (#10235)
oxarbitrage Feb 9, 2026
e0a4d96
ci: make test-docker more robust by adjusting grep pattern (#10291)
conradoplg Feb 11, 2026
5c31c4c
docs: Fix package installation command for Redis (#10299)
mpguerra Feb 11, 2026
5d274ad
feat(delete): Remove OpenAPI spec and functionality (#10298)
oxarbitrage Feb 11, 2026
3a83254
refactor(zebra-chain): use `strum::EnumIter` instead of `NETWORK_UPGR…
syszery Feb 11, 2026
887d4d4
fix: clarify TransparentInputNotFound error message (#10302)
zmanian Feb 11, 2026
c8b9bba
fix(tests): wait for process termination and use read-only state init…
gustavovalverde Feb 11, 2026
86409ab
Fix/peerset banned cancel handles (#10258)
VolodymyrBg Feb 11, 2026
3b9b833
add: Support pre-Canopy block subsidies (#10191)
upbqdn Feb 12, 2026
cc92ca3
docs: Add AI contribution policy and agent guidance files (#10318)
gustavovalverde Feb 13, 2026
cad81ca
fix: getrawtransaction compat with zcashd (#10307)
zmanian Feb 13, 2026
c45cf2b
feat(rpc): Support `rpc.discover` endpoint (#10201)
oxarbitrage Feb 14, 2026
b581fba
release(changelog): Add changelogs for OpenRPC changes (#10326)
oxarbitrage Feb 17, 2026
899df3d
feat(state): Add a `AnyChainBlock` state request for querying blocks …
arya2 Feb 17, 2026
ef299c2
chore: update CHANGELOGs to reflect changes made in #10056 and #9979 …
syszery Feb 25, 2026
42baa9c
docs: Update zebra grafana dashboards path in metrics.md (#10330)
mpguerra Feb 27, 2026
cfc4c71
cleanup: Simplify `ReadStateService::call()` method (#10335)
arya2 Feb 27, 2026
55cd3df
fix(network): Fixes bug in `ActiveConnectionCounter` and inaccurate c…
arya2 Feb 27, 2026
de9a52c
build(deps): bump the devops group across 1 directory with 8 updates …
dependabot[bot] Feb 27, 2026
0ebaf6d
docs: improve documentation quality and add CI checks (#10204)
gustavovalverde Mar 4, 2026
a30f71f
fix(consensus): preserve input order in `spent_outputs` for mixed cha…
oxarbitrage Mar 4, 2026
09be46a
feat: add remaining non-standard mempool transaction filters (#10314)
zmanian Mar 5, 2026
cee966b
remove(tests): Remove the QA test framework (#10363)
oxarbitrage Mar 5, 2026
79505cd
fix(docs): Markdown lint in state changelog (#10367)
oxarbitrage Mar 5, 2026
509d1dc
add(CI): Setup zebra build env (#10375)
upbqdn Mar 6, 2026
87f2996
cleanup(docs): Remove already fixed TODO left by #10314 (#10368)
oxarbitrage Mar 6, 2026
9f0aed3
feat(state): Support writing non-finalized state backups to disk befo…
arya2 Mar 9, 2026
4b8afd3
fix(release): Links in release issue (#10384)
oxarbitrage Mar 10, 2026
3881ba4
add: `agent-shell` directory to `.gitignore` (#10381)
upbqdn Mar 10, 2026
b0aa8a6
fix(docs): Typo (#10390)
oxarbitrage Mar 11, 2026
1c7f830
test: add missing coverage for mempool input standardness checks (#10…
zmanian Mar 12, 2026
9dfe663
chore(release): Cargo update for v4.2.0 (#10387)
oxarbitrage Mar 12, 2026
becb360
chore(release): Update mainnet checkpoints for 4.2.0 (#10394)
oxarbitrage Mar 12, 2026
12ea9b0
chore(release): Zebra v4.2.0 (#10389)
oxarbitrage Mar 13, 2026
84cb36b
fix(ci): Make `lychee` accept GitHub's rate limits (#10398)
upbqdn Mar 13, 2026
b6d6bae
fix(sync): Fix block propagation in regtest (#10403)
oxarbitrage Mar 17, 2026
aabb8b4
fix: Subtract Founders' Reward from block subsidy (#10338)
upbqdn Mar 19, 2026
5301d99
ci: Add workflow to trigger Z3 integration tests (#10372)
gustavovalverde Mar 20, 2026
413c2f6
Align integration test trigger with zcash/integration-tests. (#10399)
nuttycom Mar 20, 2026
60a7124
Network Sustainability Mechanism - 235 implementation (#10357)
judah-caruso Mar 23, 2026
385f713
chore: Release Zebra v4.3 (#10424)
upbqdn Mar 25, 2026
6184262
fix(chain): Cache parsed checkpoints (#10409)
upbqdn Mar 25, 2026
c1ad718
fix: Add `profiling` Cargo profile and use it in profiling docs (#10411)
upbqdn Mar 25, 2026
ad72e19
fix(ci): Migrate lints from `.cargo/config.toml` to `Cargo.toml` (#10…
upbqdn Mar 25, 2026
7279b76
chore: Update Mainnet checkpoints (#10418)
upbqdn Mar 25, 2026
9fa9bee
chore: Update Testnet checkpoints (#10420)
upbqdn Mar 25, 2026
2429f97
fix(consensus): Prevent automatic verification of V5 transactions bas…
arya2 Mar 25, 2026
8fc9ddf
fix(test): Check that transactions can be deserialized by librustzcas…
arya2 Mar 25, 2026
80dafad
fix: Add NU5 branch ID strategy and update V5 transaction generator (…
upbqdn Mar 25, 2026
92a4e55
release: Bump zebrad version (#10430)
arya2 Mar 25, 2026
e5531f6
fix: Update README to reference zebrad installation tag v4.3.0 (#10432)
upbqdn Mar 26, 2026
ebb7681
fix(chain): Fix arbitrary input data length range in proptests (#10431)
upbqdn Mar 26, 2026
29dfc83
docs: update changelogs with security advisories (#10433)
conradoplg Mar 28, 2026
5ab556b
build(deps): bump rustls-webpki from 0.103.9 to 0.103.10 (#10407)
dependabot[bot] Apr 6, 2026
a53c263
add: Dockerized mining setup (#10301)
upbqdn Apr 8, 2026
843330a
fix(ci): enforce conventional commit format on PR titles (#10456)
gustavovalverde Apr 9, 2026
29985bd
fix(ci): add advisory, license, and `cargo-vet` checks (#10455)
gustavovalverde Apr 9, 2026
3627152
docs: Update SECURITY.md with public encryption key (#10460)
mpguerra Apr 9, 2026
d89cd65
feat(ci): automate checkpoint updates and end-of-support height (#10459)
gustavovalverde Apr 10, 2026
a905fa1
feat(ci): Avoid compiling RocksDB (#9992)
upbqdn Apr 11, 2026
36e0559
fix(ci): rewrite checkpoint artifact upload to scp a pre-captured fil…
gustavovalverde Apr 14, 2026
adb8c00
fix(ci): re-run stateful tests on push while label is present (#10475)
gustavovalverde Apr 14, 2026
fe8630b
fix(ci): remove dead `gcr-cleaner` job from GCP cleanup workflow (#10…
gustavovalverde Apr 14, 2026
7e27fef
fix(ci): correct job-level permissions across workflows (#10471)
gustavovalverde Apr 14, 2026
4c8f0a4
fix(ci): Link RocksDB dynamically only in `tests` Docker stage (#10478)
upbqdn Apr 14, 2026
cc00fe3
docs: expose P2P port for inbound peer connections (#10464)
gustavovalverde Apr 14, 2026
c774199
refactor(ci): stable MIG per environment with branch-derived naming (…
gustavovalverde Apr 14, 2026
3f83bdb
refactor(ci): zonal MIG per (environment, branch, network, zone) (#10…
gustavovalverde Apr 14, 2026
58f010f
fix(ci): enable workflow_dispatch deploys to prod (#10487)
gustavovalverde Apr 15, 2026
dbb5684
fix(ci): harden pre-flight parse and idempotent health-check (#10488)
gustavovalverde Apr 15, 2026
03a5283
fix(ci): declare build job's dependency on set-matrix (#10489)
gustavovalverde Apr 15, 2026
75a1ff3
Merge commit from fork
upbqdn Apr 17, 2026
9f2ffcb
fix: CI fix after merge (#10493)
oxarbitrage Apr 17, 2026
1f605ec
fix(zebrad): apply combined security fixes (#10494)
arya2 Apr 17, 2026
aba329d
release: Zebra 4.3.1 (#10495)
arya2 Apr 17, 2026
83152f8
feat(zebrad): align Sentry CI metadata and environments (#10490)
gustavovalverde Apr 20, 2026
24417c3
feat(ci): add criterion benchmark suite and CI workflow (#10444)
oxarbitrage Apr 21, 2026
e209ad7
refactor(zebra-consensus): remove remaining groth16 abstractions aft…
oxarbitrage Apr 21, 2026
d715798
fix(ci): cargo-vet after release (#10504)
oxarbitrage Apr 22, 2026
59a7169
build(deps): bump the devops group across 1 directory with 26 updates…
dependabot[bot] Apr 23, 2026
c54c1be
feat(zebra-rpc): Add nTx field to getblock response (#10498)
daira Apr 23, 2026
f4618c1
fix(rpc): getrawtransaction confirmations bug (#10507)
oxarbitrage Apr 28, 2026
baa7ef1
docs: fix broken NetworkConstants link in custom-testnets (#10521)
alchemydc May 1, 2026
247decf
fix(zebra-rpc): fix 4 RPC security advisories (#10523)
upbqdn May 1, 2026
4aee839
Merge commit from fork
upbqdn May 1, 2026
1834baa
fix(script): Validate transparent input/output alignment before scrip…
arya2 May 1, 2026
5aec7f5
chore(deps): migrate librustzcash crates to 2026-04 release wave (#10…
schell May 1, 2026
fead158
fix(zebra-script): fix stale sighash issue (#10524)
upbqdn May 1, 2026
a638235
fix(chain): validate solution size before allocating (#10525)
upbqdn May 1, 2026
61c7105
fix(chain): validate coinbase data size before allocating (#10526)
upbqdn May 1, 2026
f4267ef
fix(chain): reject coinbase Sapling spends during deserialization (#1…
upbqdn May 1, 2026
85303ea
fix(network): Enforce 160-entry cap in `read_headers` (#10528)
upbqdn May 1, 2026
602c8b7
Merge commit from fork
arya2 May 1, 2026
a60ff83
test(state, rpc): handle coinbase Sapling spends in proptests broken …
upbqdn May 1, 2026
589d64b
chore: Release v4.4.0 (#10535)
upbqdn May 1, 2026
1ec1078
release: v4.4.1, reject v5 SIGHASH_SINGLE without a corresponding out…
conradoplg May 4, 2026
d4cd662
feat(zebrad): warn at startup if Linux TCP slow-start-after-idle is o…
evan-forbes May 7, 2026
a046716
refactor(zebra-chain): rename variables in relative_to_network for cl…
ValarDragon May 20, 2026
2342a20
ci(mergify): upgrade configuration to current format (#10450)
mergify[bot] May 21, 2026
b6e4f4c
fix(chain): cap upfront Vec reservation in zcash_deserialize_external…
dingledropper May 21, 2026
6b5692c
refactor(zebra-network): rename testnet_parameters in network config …
syszery May 21, 2026
c737f7f
build(deps): bump devops actions and fix advisory/deny-bans CI failur…
oxarbitrage May 22, 2026
b46207b
fix(network): guard most_recent_by_ip unwrap in address-book ban path…
zmanian May 23, 2026
8981a1b
fix(chain): cap block::Hash and CountedHeader preallocation at protoc…
dingledropper May 25, 2026
f2ec7e5
fix(chain): propagate transaction value-balance errors in chain_value…
zmanian May 25, 2026
f2abb65
feat: Support ZIP-213 (#10048)
upbqdn May 25, 2026
d5ccbbd
ci: disable link-check for now (#10631)
conradoplg May 25, 2026
00c8efc
test(rpc): reduce GBT snapshot mock timeout flake (#10634)
oxarbitrage May 26, 2026
f25cb9f
feat: Precompute coinbase tx and respond quickly on tip change (#10170)
upbqdn May 26, 2026
64f143d
fix(ci): grant `contents:read` on jobs that override workflow permiss…
andres-pcg May 28, 2026
cb2488a
fix(ci): solve Rust 1.97 beta clippy lints (#10644)
gustavovalverde May 28, 2026
1440b43
release: v4.5.0 (#10647)
conradoplg May 29, 2026
08a2089
fix(ci): advertise external IP on GCP-deployed nodes (#10655)
gustavovalverde May 29, 2026
76c440e
release: v4.5.1 (#10657)
conradoplg May 29, 2026
b9154d6
Temporarily disable Orchard actions
str4d May 31, 2026
0a4b3a1
wire config parsing for new option, adds tests
arya2 May 31, 2026
4434a6c
clears mempool before soft fork
arya2 Jun 1, 2026
af90402
Apply suggestions from code review
arya2 Jun 1, 2026
efca5e8
fix: add Network Orchard soft-fork accessors used by committed code
arya2 Jun 1, 2026
d5df83a
fix: set temporary Orchard-disabling soft-fork mainnet height to 3,36…
arya2 Jun 2, 2026
714c211
release: v4.5.3
arya2 Jun 2, 2026
8a45d21
release: v4.5.3 (#10665)
conradoplg Jun 2, 2026
dcfa063
fix: enforce canonical Orchard proof size from NU6.2
arya2 Jun 1, 2026
f601b69
feat: add NU6.2 network upgrade scaffolding
arya2 Jun 1, 2026
ed9ca0b
feat: wire NU6.2 fixed-circuit deps and Orchard verification
arya2 Jun 2, 2026
735abad
refactor: dedupe Orchard verifier construction
arya2 Jun 2, 2026
8265ec8
fix: bind ZFuture upgrade to fixed Orchard verifier explicitly
arya2 Jun 2, 2026
548672c
chore(nu6.2): address internal audit findings
arya2 Jun 2, 2026
af093c0
Update `orchard`
nuttycom Jun 2, 2026
95050e9
use version 170_150 for mainnet and testnet
conradoplg Jun 2, 2026
a1fdb49
Update to librustzcash/orchard release commits.
nuttycom Jun 2, 2026
9567907
set activation heights
conradoplg Jun 2, 2026
11c4bcf
bump versions and changelogs
conradoplg Jun 2, 2026
ba7d79e
update snapshots
conradoplg Jun 2, 2026
846c80d
fix proptests for Halo2Proofs
conradoplg Jun 2, 2026
1d983b5
fix more tests
conradoplg Jun 2, 2026
e6307b7
build(deps): de-vendor NU6.2 security-fix crates to crates.io releases
arya2 Jun 3, 2026
48381e7
docs: correct NU6.2 security advisory ID to GHSA-jfw5-j458-pfv6
arya2 Jun 3, 2026
41b332f
style: apply rustfmt to the v5.0.0 release branch
arya2 Jun 3, 2026
f1dd26a
fix(deps): restore minimal-delta Cargo.lock (v4.5.3 graph + crates.io…
arya2 Jun 3, 2026
6c68e40
chore(supply-chain): vet NU6.2 dependency bumps for cargo-vet
arya2 Jun 3, 2026
1e6519e
release: v5.0.0 (#10673)
mergify[bot] Jun 3, 2026
76a6bb0
fix(zebrad): fix mempool_cancel_downloads_after_network_upgrade
conradoplg Jun 3, 2026
d5ab886
fix(state): fix chain_tip_sender_is_updated test
conradoplg Jun 3, 2026
94c0936
fix(zebrad): fix mempool_reverifies_after_tip_change test
conradoplg Jun 4, 2026
6784f72
fix(zebrad): fix regtest_coinbase test
conradoplg Jun 4, 2026
40eddc7
bump LARGE_CHECKPOINT_TIMEOUT to try to make sync_large_checkpoints_m…
conradoplg Jun 5, 2026
8ead00c
fix(state,zebrad): fix tests (#10676)
mergify[bot] Jun 5, 2026
f5feadb
refactor: Remove deferred_pool_balance_change from ContextuallyVerifi…
judah-caruso Jun 5, 2026
616fa36
fix(rpc): avoid rebuilding mempool index per transaction in getrawmem…
syszery Jun 5, 2026
e889a95
fix(network,zebrad): cure genesis-to-tip sync stall (#5709) (#10679)
oxarbitrage Jun 8, 2026
0a2b87f
fix(state): correct dequeue_children by_height index handling (#10604)
syszery Jun 8, 2026
6928c95
feat(rpc): Extend `getpeerinfo` RPC (#10443)
upbqdn Jun 9, 2026
5b93eaf
fix(ci): unbreak main branch CI checks (#10700)
gustavovalverde Jun 9, 2026
854ed7a
fix(network): bump INITIAL_MIN_NETWORK_PROTOCOL_VERSION to Nu6_2 (#10…
oxarbitrage Jun 10, 2026
fc8e60e
fix(network): update peer set test mocks to Nu6_2 protocol version (#…
oxarbitrage Jun 10, 2026
383e3d6
fix(zebrad): retry block proposal on tip race in getblocktemplate tes…
oxarbitrage Jun 10, 2026
a71a1c5
fix(ci)!: stop required checks from passing before tests finish (#10637)
gustavovalverde Jun 10, 2026
94c297d
fix(ci): block Mergify queue on changes-requested and required-check …
andres-pcg Jun 10, 2026
80709f0
release: Zebra v5.1.0 (#10707)
oxarbitrage Jun 11, 2026
9f4439a
fix(zebrad): reduce end of support for NU7 network upgrade (#10710)
oxarbitrage Jun 11, 2026
5126cfa
release: Zebra v5.1.1 (#10711)
arya2 Jun 12, 2026
990dcb6
fix(ci): skip Trigger Integration Tests on fork PRs (#10712)
andres-pcg Jun 12, 2026
02f9648
fix(state): increase reorg window to 1000 blocks (#10650)
evan-forbes Jun 15, 2026
8767a91
fix: settle checkpoints past the 1000-block rollback window (#10719)
upbqdn Jun 16, 2026
965c146
feat(ci): allow on-demand dispatch of integration tests for fork PRs …
andres-pcg Jun 18, 2026
62e4a43
release: Zebra v5.2.0 (#10731)
oxarbitrage Jun 18, 2026
3cd33a0
refactor(zebrad): restructure tests into module-based architecture (#…
gustavovalverde Jun 19, 2026
728afb3
fix(state): surface RocksDB error messages in the block-write panic (…
emersonian Jun 22, 2026
ee8343e
docs: clarify workaround applies to any GCC 15 (#10678)
conradoplg Jun 22, 2026
09964df
refactor(consensus): extract transaction verifier helper methods (#10…
syszery Jun 22, 2026
884c6b3
feat(zebra-utils): add check-api script for public-API and dependency…
upbqdn Jun 22, 2026
ce067a9
fix(state): make read-only state DB open safe and back off the read-s…
nuttycom Jun 22, 2026
cce62cc
chore(deps): inherit sinsemilla, strum, and bounded-vec from the work…
dannywillems Jun 23, 2026
239afe3
ci: lint the Dockerfile with hadolint (#10662)
dannywillems Jun 23, 2026
fa51c9d
build(deps): replace structopt with clap in zebra-utils (#10766)
gustavovalverde Jun 23, 2026
62d27d5
feat: expose `should_allow_unshielded_coinbase_spends` for regtest (#…
dannywillems Jun 23, 2026
45c85fb
ci: add shellcheck workflow and fix SC2009 in gcp startup script (#10…
dannywillems Jun 23, 2026
676a4fd
feat(rpc): resumable non-finalized streaming, finalized-gap bridging,…
nuttycom Jun 23, 2026
39ec4f2
fix(ci): stop the broad nextest override from shadowing per-test time…
gustavovalverde Jun 23, 2026
3369d0b
fix(state): don't flush read-only secondary databases on shutdown (#1…
nuttycom Jun 24, 2026
bc2da19
feat(release): add unified release workflow with release-plz (#10457)
gustavovalverde Jun 24, 2026
e9c8056
refactor: make NetworkUpgrade match arms explicit in block template g…
zmanian Jun 24, 2026
9a27f88
feat(state): add FindForkPoint read request for locating chain reorg …
nuttycom Jun 24, 2026
93d80df
chore(zebra-utils): remove the check-api script, superseded by ziff (…
upbqdn Jun 24, 2026
118f62c
refactor(consensus): pass pre-computed NetworkUpgrade to verify_vN he…
syszery Jun 24, 2026
c14067a
fix(ci): restate queue gates on the Mergify urgent queue (#10802)
andres-pcg Jun 25, 2026
ca730cb
fix(release): unignore committed Docker env files (#10807)
gustavovalverde Jun 25, 2026
d2ff0f9
test(zebrad): load cached-state submit/send tests at the finalized ti…
gustavovalverde Jun 25, 2026
9cc022a
build: reproducible, signed release images and zebrad binaries (#10798)
gustavovalverde Jun 25, 2026
eb00bb8
docs: document extra_coinbase_data and miner_memo mining config optio…
pacu Jun 25, 2026
adfb74e
fix(consensus): handle Elapsed timeout in AwaitUtxo to prevent near-t…
oxarbitrage Jun 25, 2026
d58097f
fix(state): handle invalidateblock/reconsiderblock edge cases without…
zmanian Jun 25, 2026
0cf14e9
fix(ci): validate the lean runtime image in Test Docker Config (#10821)
gustavovalverde Jun 26, 2026
e3cadeb
ci: grant `attestations:read` to the release-binaries publish job (#1…
gustavovalverde Jun 26, 2026
19557e4
fix(release): adopt per-PR changelogs and disable release-plz semver-…
gustavovalverde Jun 26, 2026
57f98ab
fix(ci): verify release binaries against the running repo path (#10826)
andres-pcg Jun 26, 2026
1885420
fix(ci): grant `attestations:write` to the docker-image build callers…
gustavovalverde Jun 26, 2026
0ea080c
ci: cap `zebrad-runtime` artifact retention at 7 days (#10814)
andres-pcg Jun 26, 2026
d9a69f1
docs: record release binary artifact and supply-chain posture (#10830)
gustavovalverde Jun 26, 2026
1288192
test(network): wait for node 1's listener before node 2 dials it (#10…
gustavovalverde Jun 26, 2026
c7ef8e5
fix(rpc): use constant-time comparison for cookie auth (#10567)
dingledropper Jun 29, 2026
2102053
docs: Update SECURITY.md to match ecosystem changes and standards (#1…
mpguerra Jun 29, 2026
53a3e94
fix(ci): fail over across zones when an integration-test VM stockouts…
gustavovalverde Jun 29, 2026
aae2059
ci: gate breaking public-API changes with cargo-semver-checks (#10833)
gustavovalverde Jun 30, 2026
0cda043
feat(ci): add Claude `/changelog` command and release-notes enhanceme…
gustavovalverde Jun 30, 2026
a990fa4
fix(ci): pass `github_token` to claude-code-action so it skips OIDC (…
gustavovalverde Jul 1, 2026
3972906
fix(ci): check out the repo for the `/changelog` Claude step (#10865)
gustavovalverde Jul 1, 2026
7333262
fix(ci): raise Claude changelog step max-turns to 5 (#10866)
gustavovalverde Jul 1, 2026
8d90981
build(deps): bump anyhow to 1.0.103 for RUSTSEC-2026-0190 (#10849)
upbqdn Jul 1, 2026
01b655c
test(ci): fail-fast and retry the flaky mainnet sync tests (#10860)
upbqdn Jul 1, 2026
04cf836
docs(release): realign release-checklist templates with per-PR change…
gustavovalverde Jul 1, 2026
b59d2e4
fix(ci): avoid nightly rustc ICE by returning concrete service types …
gustavovalverde Jul 1, 2026
273176f
fix(ci): avoid nightly rustc ICE by returning concrete service types …
gustavovalverde Jul 1, 2026
7ed7ec0
docs: add changelog guidelines and align the `/changelog` prompt (#10…
gustavovalverde Jul 1, 2026
3b6f695
fix(rpc): cache the getblocktemplate coinbase per block (#10847)
upbqdn Jul 1, 2026
fcf5e6a
ci: drop Windows and macOS runners (#10845)
upbqdn Jul 1, 2026
3333075
feat(rpc): tag Zebra-mined blocks with a 🦓 coinbase marker (#10836)
upbqdn Jul 1, 2026
603e9e0
fix(ci): repair GCP resource cleanup so it deletes old disks (#10767)
gustavovalverde Jul 1, 2026
0c3f1eb
fix(rpc): stop read-state syncer commit races under finalized-state l…
arya2 Jul 1, 2026
08de689
feat(zebrad): run a command on chain tip changes (block notify) (#10726)
upbqdn Jul 1, 2026
15e30b3
feat!: Support Ironwood and v6 transactions (#10762)
arya2 Jul 2, 2026
b5e122f
fix(rpc): getblock verbosity 2 side-chain panic (GHSA-x6v8-c2xp-928m)…
upbqdn Jul 2, 2026
6c274bb
fix: enforce per-peer admission cap on directly pushed transactions (…
upbqdn Jul 2, 2026
138a830
fix!: address Ironwood review findings across mempool, consensus, rpc…
upbqdn Jul 2, 2026
9a903dd
fix!: address more Ironwood review findings across chain, consensus, …
upbqdn Jul 2, 2026
1decae1
feat(rpc): expose the Ironwood note commitment tree and subtrees (#10…
upbqdn Jul 2, 2026
c0858c7
fix(state): serve the empty Ironwood tree before NU6.3 activation (#1…
upbqdn Jul 2, 2026
27471e8
fix(chain): round-trip v6 transactions through librustzcash on deseri…
upbqdn Jul 2, 2026
15d5783
chore: v6.0.0-rc.0 (#10896)
upbqdn Jul 2, 2026
766f01b
chore: certify new release of `zebra-test` (#10903)
jvff Jul 3, 2026
c057c4a
fix(ci): ignore quick-xml RUSTSEC-2026-0194 and RUSTSEC-2026-0195 unt…
upbqdn Jul 3, 2026
6efb1d4
feat(tower-batch-control): impl RequestWeight for tonic::Request<T> b…
arya2 Jul 3, 2026
d9d29b6
fix(network): avoid disconnecting peers that return empty find respon…
jvff Jul 4, 2026
cea8d60
fix(chain): generate v6 transactions in NU6.3+ arbitrary strategies
zancas Jul 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
84 changes: 4 additions & 80 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -1,85 +1,5 @@
# Zebra cargo configuration

# Flags that apply to all Zebra crates and configurations
[target.'cfg(all())']
rustflags = [
# Zebra standard lints for Rust 1.65+

# High-risk code
"-Dunsafe_code",
"-Dnon_ascii_idents",

# Potential bugs
#
# If we deny these lints, we could be excluded from Crater builds:
# https://www.reddit.com/r/rust/comments/f5xpib/psa_denywarnings_is_actively_harmful/

# Compatibility
"-Wrust_2021_compatibility",
"-Wnonstandard_style",
"-Wfuture_incompatible",

# Async code
"-Wclippy::await_holding_lock",
"-Wclippy::await_holding_refcell_ref",

# Pointers
"-Wclippy::cast_ptr_alignment",
"-Wclippy::fn_to_numeric_cast_any",

# Integers
"-Wclippy::checked_conversions",
"-Wclippy::implicit_saturating_sub",
"-Wclippy::invalid_upcast_comparisons",
"-Wclippy::range_minus_one",
"-Wclippy::range_plus_one",
"-Wclippy::unnecessary_cast",

# Incomplete code
"-Wclippy::dbg_macro",
"-Wclippy::todo",

# Manual debugging output.
# Use tracing::trace!() or tracing::debug!() instead.
"-Wclippy::print_stdout",
"-Wclippy::print_stderr",
"-Wclippy::dbg_macro",

# Code styles we want to accept
"-Aclippy::try_err",

# Panics
"-Wclippy::fallible_impl_from",
"-Wclippy::unwrap_in_result",

# Documentation
"-Wmissing_docs",

# TODOs:
# Fix this lint eventually.
"-Aclippy::result_large_err",

# `cargo fix` might help do these fixes,
# or add a config.toml to sub-directories which should allow these lints,
# or try allowing the lint in the specific module (lib.rs doesn't seem to work in some cases)
#
# lint configs that don't work:
# - allowing these lints in lib.rs (command-line warn overrides allow in lib.rs?)
# - adding a [target.'cfg(not(test))'] rustflags config (it runs on test code anyway)

# fix code that triggers these lints,
# or disable the lint for that code (or for all test code)
#
#"-Wclippy::cast_lossless", # 30 non-test warnings, a few test warnings
#"-Wclippy::cast_possible_truncation", # 40 non-test warnings, 20 test warnings
#"-Wclippy::cast_possible_wrap", # 13 test warnings (fixed outside tests)
#"-Wclippy::cast_precision_loss", # 25 non-test warnings, 10 test warnings
#"-Wclippy::cast_sign_loss", # 6 non-test warnings, 15 test warnings

# fix hidden lifetime parameters
#"-Wrust_2018_idioms",
]

[build]
rustdocflags = [
# The -A and -W settings must be the same as the `RUSTDOCFLAGS` in:
Expand All @@ -91,3 +11,7 @@ rustdocflags = [

[env]
RUST_BACKTRACE="1"

[profile.profiling]
inherits = "release"
debug = true
4 changes: 2 additions & 2 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[codespell]
ignore-words-list = crate,Sur,inout,Groth,groth,re-use,abl,
ignore-words-list = crate,Sur,inout,Groth,groth,re-use,abl,zcash,zcashd,zebrad,zebra,utxo,utxos,nullifier,nullifiers,sapling,orchard,sprout,backpressure,proptest,thiserror,rocksdb,libsecp,fullnode,peerset,threadsafe,unrepresentable,getblocktemplate,syncer,Actix,Akka,mermaid,println,eprintln,usize,nocapture,Parallelizable,invis,UTXO,Zcash,Zaino,Zallet,librustzcash,Mainnet,Testnet,mainnet,testnet,idents,reentrancy,serializable,deserializable,deserialization,zkSNARK,zkSNARKs,lightwalletd,statics,ser,endianity,aranges,intoto
exclude-file = book/mermaid.min.js
skip = ./zebra-rpc/qa/rpc-tests,./supply-chain
skip = ./zebra-rpc/qa/rpc-tests,./supply-chain,./target
185 changes: 79 additions & 106 deletions .config/nextest.toml
Original file line number Diff line number Diff line change
@@ -1,132 +1,105 @@
# Nextest configuration for Zebra
# This file centralizes all test execution configuration.
#
# Profiles:
# default Local dev: runs unit + integration (excludes stateful + e2e)
# ci PR CI: same scope, CI-tuned output
# ci-stateful GCP: runs stateful tests selected by --filter-expr
# ci-e2e GCP: runs E2E tests selected by --filter-expr
# check-no-git-dependencies Special CI release check

[profile.default]
fail-fast = true
status-level = "pass"
default-filter = 'not test(/^stateful::/) and not test(/^e2e::/) and not test(=unit::end_of_support::check_no_git_dependencies)'

# --- Platform-specific overrides ---

# Skip Windows-incompatible tests
[[profile.default.overrides]]
platform = 'cfg(target_os = "windows")'

filter = "not test(=trusted_chain_sync_handles_forks_correctly) and not test(=delete_old_databases)"
# --- CI Profile (PRs) ---

# --- All Tests profile ---
# CI-friendly test selection.
#
# Runs fast unit/integration tests and explicitly excludes:
# - 'check_no_git_dependencies' (it has its own profile)
# - stateful or long-running tests that require a local cache dir or external
# services (lightwalletd RPC/GRPC, full sync, checkpoint generation, mining
# RPCs, etc.).
#
# Notes:
# - CI now provides a default cache directory, so stateful tests are no longer
# auto-skipped when the cache dir is undefined. To keep this profile fast and
# deterministic, we exclude those tests here and offer dedicated profiles
# below for running them when needed.
# TODO: We need a better test architecture to run all non-stateful
[profile.all-tests]
[profile.ci]
fail-fast = false
failure-output = "immediate"
slow-timeout = { period = "5m", terminate-after = 4 }
default-filter = 'not test(/^stateful::/) and not test(/^e2e::/) and not test(=unit::end_of_support::check_no_git_dependencies)'

[[profile.ci.overrides]]
filter = 'test(=integration::network::disconnects_from_misbehaving_peers)'
retries = 2
slow-timeout = { period = "5m", terminate-after = 2 }

# These tests sync mainnet to genesis from live peers; they normally finish in
# ~10-30s, but a slow/unreachable peer can stall them. Fail fast after 10m and
# retry instead of hanging near the old 30m hard limit, where they flaked.
[[profile.ci.overrides]]
filter = 'test(=integration::sync::sync_one_checkpoint_mainnet) or test(=integration::sync::restart_stop_at_height)'
slow-timeout = { period = "5m", terminate-after = 2 }
retries = 2

[[profile.ci.overrides]]
filter = "test(=peer_set::set::tests::vectors::peer_set_ready_multiple_connections) or test(=peer_set::set::tests::vectors::peer_set_ready_single_connection) or test(=peer_set::set::tests::vectors::peer_set_rejects_connections_past_per_ip_limit) or test(=peer_set::set::tests::vectors::peer_set_route_inv_advertised_registry)"
retries = 2
slow-timeout = { period = "30s", terminate-after = 2 }

# --- CI Stateful Profile (GCP VMs) ---
# CI selects specific tests via --filter-expr / NEXTEST_FILTER. The scoped
# default filter prevents accidental whole-workspace runs in manual invocations.

[profile.ci-stateful]
fail-fast = false
failure-output = "immediate"
default-filter = "not test(check_no_git_dependencies) and not test(=fully_synced_rpc_z_getsubtreesbyindex_snapshot_test) and not test(=lwd_rpc_test) and not test(=lwd_rpc_send_tx) and not test(=lwd_grpc_wallet) and not test(=lwd_integration) and not test(=lwd_sync_full) and not test(=lwd_sync_update) and not test(=lightwalletd_test_suite) and not test(=rpc_get_block_template) and not test(=rpc_submit_block) and not test(=get_peer_info) and not test(~generate_checkpoints_) and not test(=sync_update_mainnet) and not test(=activate_mempool_mainnet)"

# --- Individual Test Profiles ---

[profile.check-no-git-dependencies]
default-filter = 'test(check_no_git_dependencies)'

[profile.sync-large-checkpoints-empty]
slow-timeout = { period = "60m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=sync_large_checkpoints_empty)'

[profile.sync-full-mainnet]
slow-timeout = { period = "30000m", terminate-after = 1 }
success-output = "immediate"
default-filter = 'package(zebrad) and test(=sync_full_mainnet)'
default-filter = 'test(/^stateful::/)'
# Default hard timeout for stateful tests; longer-running tests override it below.
slow-timeout = { period = "30m", terminate-after = 2 }

[profile.sync-full-testnet]
slow-timeout = { period = "1500m", terminate-after = 1 }
success-output = "immediate"
default-filter = 'package(zebrad) and test(=sync_full_testnet)'
[test-groups]
serial-state = { max-threads = 1 }

[profile.sync-to-mandatory-checkpoint-mainnet]
slow-timeout = { period = "1500m", terminate-after = 1 }
success-output = "immediate"
default-filter = 'package(zebrad) and test(=sync_to_mandatory_checkpoint_mainnet)'
# Stateful tests share on-disk state, so run them serially. This override sets
# only the test-group: adding slow-timeout here would shadow every per-test
# timeout below, since nextest applies the first matching override per setting.
[[profile.ci-stateful.overrides]]
filter = 'test(/^stateful::/)'
test-group = 'serial-state'

[profile.sync-to-mandatory-checkpoint-testnet]
[[profile.ci-stateful.overrides]]
filter = 'test(=stateful::sync::sync_to_mandatory_checkpoint_mainnet) or test(=stateful::sync::sync_to_mandatory_checkpoint_testnet)'
slow-timeout = { period = "1500m", terminate-after = 1 }
success-output = "immediate"
default-filter = 'package(zebrad) and test(=sync_to_mandatory_checkpoint_testnet)'

[profile.sync-update-mainnet]
slow-timeout = { period = "30m", terminate-after = 2 }
success-output = "immediate"
default-filter = 'package(zebrad) and test(=sync_update_mainnet)'

[profile.sync-past-mandatory-checkpoint-mainnet]
[[profile.ci-stateful.overrides]]
filter = 'test(=stateful::sync::sync_past_mandatory_checkpoint_mainnet) or test(=stateful::sync::sync_past_mandatory_checkpoint_testnet) or test(=stateful::rpc::rpc_get_block_from_cached_state) or test(=stateful::lightwalletd::lightwalletd_test_suite) or test(=stateful::lightwalletd::lwd_grpc_wallet)'
slow-timeout = { period = "60m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=sync_past_mandatory_checkpoint_mainnet)'

[profile.sync-past-mandatory-checkpoint-testnet]
slow-timeout = { period = "60m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=sync_past_mandatory_checkpoint_testnet)'
# --- CI E2E Profile (GCP VMs) ---
# CI selects specific tests via --filter-expr / NEXTEST_FILTER. The scoped
# default filter prevents accidental whole-workspace runs in manual invocations.

[profile.generate-checkpoints-mainnet]
slow-timeout = { period = "90m", terminate-after = 1 }
success-output = "immediate"
default-filter = 'package(zebrad) and test(=generate_checkpoints_mainnet)'

[profile.generate-checkpoints-testnet]
slow-timeout = { period = "90m", terminate-after = 1 }
[profile.ci-e2e]
fail-fast = false
failure-output = "immediate"
success-output = "immediate"
default-filter = 'package(zebrad) and test(=generate_checkpoints_testnet)'

[profile.lwd-rpc-test]
test-threads = 1
default-filter = 'test(/^e2e::/)'
# Default hard timeout for e2e tests; longer-running tests override it below.
slow-timeout = { period = "60m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=lwd_rpc_test)'

[profile.lwd-integration]
slow-timeout = { period = "30m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=lwd_integration)'
# E2e tests share on-disk state, so run them serially. This override sets only
# the test-group: adding slow-timeout here would shadow every per-test timeout
# below, since nextest applies the first matching override per setting.
[[profile.ci-e2e.overrides]]
filter = 'test(/^e2e::/)'
test-group = 'serial-state'

[profile.lwd-sync-full]
[[profile.ci-e2e.overrides]]
filter = 'test(=e2e::sync::sync_full_mainnet) or test(=e2e::lightwalletd::lwd_sync_full)'
slow-timeout = { period = "30000m", terminate-after = 1 }
success-output = "immediate"
default-filter = 'package(zebrad) and test(=lwd_sync_full)'

[profile.lwd-sync-update]
slow-timeout = { period = "30m", terminate-after = 2 }
success-output = "immediate"
default-filter = 'package(zebrad) and test(=lwd_sync_update)'

[profile.lwd-grpc-wallet]
slow-timeout = { period = "60m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=lwd_grpc_wallet)'

[profile.lwd-rpc-send-tx]
slow-timeout = { period = "30m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=lwd_rpc_send_tx)'

[profile.rpc-get-block-template]
slow-timeout = { period = "30m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=rpc_get_block_template)'

[profile.rpc-submit-block]
slow-timeout = { period = "30m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=rpc_submit_block)'
[[profile.ci-e2e.overrides]]
filter = 'test(=e2e::sync::sync_full_testnet)'
slow-timeout = { period = "1500m", terminate-after = 1 }

[profile.indexer-has-spending-transaction-ids]
slow-timeout = { period = "30m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=has_spending_transaction_ids)'
[[profile.ci-e2e.overrides]]
filter = 'test(=e2e::checkpoints::generate_checkpoints_mainnet) or test(=e2e::checkpoints::generate_checkpoints_testnet)'
slow-timeout = { period = "90m", terminate-after = 1 }

[profile.lightwalletd-test-suite]
slow-timeout = { period = "60m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=lightwalletd_test_suite)'
# --- Special Profile ---

[profile.rpc-z-getsubtreesbyindex-snapshot]
slow-timeout = { period = "30m", terminate-after = 2 }
default-filter = 'package(zebrad) and test(=fully_synced_rpc_z_getsubtreesbyindex_snapshot_test)'
[profile.check-no-git-dependencies]
default-filter = 'test(=unit::end_of_support::check_no_git_dependencies)'
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@
#
*

# Keep `.git` out of the context (do NOT add `!.git`). The binary takes its commit
# from the SHORT_SHA build arg; including .git makes the build depend on clone shape.
# See docs/decisions/devops/0007-reproducible-builds.md.

# Now un-exclude required files and folders:
#
!.cargo
Expand Down
52 changes: 26 additions & 26 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# this team will be requested for review when someone opens a pull request.
#
# We use a single team here, because if we use two teams, GitHub assigns two reviewers.
* @ZcashFoundation/general-rust-reviewers
# * @ZcashFoundation/general-rust-reviewers

# Frequently Modified Code
#
Expand All @@ -11,36 +11,36 @@
# to stop GitHub assigning multiple reviewers
#
# lightwalletd epic
/zebrad/src/commands/start.rs @ZcashFoundation/general-rust-reviewers
# /zebrad/src/commands/start.rs @ZcashFoundation/general-rust-reviewers

# Network and Async Code
/tower-batch-control/ @ZcashFoundation/network-reviewers
/tower-fallback/ @ZcashFoundation/network-reviewers
/zebra-network/ @ZcashFoundation/network-reviewers
/zebra-node-services/ @ZcashFoundation/network-reviewers
/zebra-tests/src/mock_service.rs @ZcashFoundation/network-reviewers
/zebra-tests/src/service_extensions.rs @ZcashFoundation/network-reviewers
/zebra-tests/src/transcript.rs @ZcashFoundation/network-reviewers
/zebrad/src/components/ @ZcashFoundation/network-reviewers
# /tower-batch-control/ @ZcashFoundation/network-reviewers
# /tower-fallback/ @ZcashFoundation/network-reviewers
# /zebra-network/ @ZcashFoundation/network-reviewers
# /zebra-node-services/ @ZcashFoundation/network-reviewers
# /zebra-tests/src/mock_service.rs @ZcashFoundation/network-reviewers
# /zebra-tests/src/service_extensions.rs @ZcashFoundation/network-reviewers
# /zebra-tests/src/transcript.rs @ZcashFoundation/network-reviewers
# /zebrad/src/components/ @ZcashFoundation/network-reviewers

# Cryptographic Code
/zebra-consensus/src/primitives/ @ZcashFoundation/cryptographic-reviewers
/zebra-chain/src/primitives/ @ZcashFoundation/cryptographic-reviewers
/zebra-chain/src/orchard/ @ZcashFoundation/cryptographic-reviewers
/zebra-chain/src/sapling/ @ZcashFoundation/cryptographic-reviewers
/zebra-chain/src/sprout/ @ZcashFoundation/cryptographic-reviewers
/zebra-chain/src/transparent/ @ZcashFoundation/cryptographic-reviewers
/zebra-chain/src/history_tree.rs @ZcashFoundation/cryptographic-reviewers
/zebra-chain/src/history_tree/ @ZcashFoundation/cryptographic-reviewers
# /zebra-consensus/src/primitives/ @ZcashFoundation/cryptographic-reviewers
# /zebra-chain/src/primitives/ @ZcashFoundation/cryptographic-reviewers
# /zebra-chain/src/orchard/ @ZcashFoundation/cryptographic-reviewers
# /zebra-chain/src/sapling/ @ZcashFoundation/cryptographic-reviewers
# /zebra-chain/src/sprout/ @ZcashFoundation/cryptographic-reviewers
# /zebra-chain/src/transparent/ @ZcashFoundation/cryptographic-reviewers
# /zebra-chain/src/history_tree.rs @ZcashFoundation/cryptographic-reviewers
# /zebra-chain/src/history_tree/ @ZcashFoundation/cryptographic-reviewers

# Devops Code
/.github/workflows/ @ZcashFoundation/devops-reviewers
/.github/mergify.yml @ZcashFoundation/devops-reviewers
/docker/ @ZcashFoundation/devops-reviewers
cloudbuild.yaml @ZcashFoundation/devops-reviewers
codecov.yml @ZcashFoundation/devops-reviewers
firebase.json @ZcashFoundation/devops-reviewers
katex-header.html @ZcashFoundation/devops-reviewers
# /.github/workflows/ @ZcashFoundation/devops-reviewers
# /.github/mergify.yml @ZcashFoundation/devops-reviewers
# /docker/ @ZcashFoundation/devops-reviewers
# cloudbuild.yaml @ZcashFoundation/devops-reviewers
# codecov.yml @ZcashFoundation/devops-reviewers
# firebase.json @ZcashFoundation/devops-reviewers
# katex-header.html @ZcashFoundation/devops-reviewers

# Unsafe Code
/zebra-script/ @ZcashFoundation/unsafe-rust-reviewers
# /zebra-script/ @ZcashFoundation/unsafe-rust-reviewers
Loading
Loading