Skip to content

Ironwood (NU6.3) 0.5.0-rc0#3

Closed
emersonian wants to merge 15 commits into
release/0.4.xfrom
ironwood
Closed

Ironwood (NU6.3) 0.5.0-rc0#3
emersonian wants to merge 15 commits into
release/0.4.xfrom
ironwood

Conversation

@emersonian

@emersonian emersonian commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Draft for CI validation of the ironwood 0.5.0-rc0 release candidate. Not for merge - ironwood is maintained as a force-pushed RC line and must not land in the stable 0.4.x release line.

Delta over release/0.4.x:

  • Ironwood (NU6.3) support behind the default-off ironwood feature.
  • Pin shardtree/incrementalmerkletree to the working zecrocks fork.
  • Rebase the librustzcash fork onto the latest ironwood-scan-model; route Ironwood sends through the fused build path; add the ironwood receive-memo e2e.
  • Set version to 0.5.0-rc0.

The librustzcash/shardtree pins point at currently-working zecrocks forks and will be repointed to mainline before release.

emersonian and others added 4 commits July 7, 2026 11:22
Add opt-in Ironwood (NU6.3 / V6) support behind a default-off `ironwood` cargo feature: the PostNu6_3 proving key and proof step, the NU6.3 regtest activation height, ironwood receive discovery and balance rollup, and `pool == "ironwood"` labelling. The librustzcash set is pinned to a currently-working zecrocks fork of librustzcash, which will be repointed to mainline librustzcash before release. With the feature off the default build is unchanged. Also adds transparent recovery-window policy controls and an ironwood regtest.

Co-authored-by: AI <noreply+norm@overpay.com>
…checkpoint-pruning fix

Repoint shardtree and incrementalmerkletree to a currently-working zecrocks fork for the explicit-checkpoint-retention APIs plus a fix for a panic when pruning a checkpoint whose flags need clearing; this will be repointed upstream before release. Also run the ironwood NU6.3 regtest tier for PRs targeting the ironwood branch.

Co-authored-by: AI <noreply+norm@overpay.com>
Rebase the pin onto the latest ironwood-scan-model on the currently-working zecrocks fork of librustzcash, which will be repointed to mainline librustzcash before release, and bump the patch rev.

- Route Ironwood sends through the fused build path (the ironwood_forces_fused gate) since upstream still rejects Ironwood PCZTs; input selection now takes SpendPolicy.
- Add an ironwood receive-memo end-to-end regtest proving Ironwood-domain memo decryption.

Co-authored-by: AI <noreply+norm@overpay.com>
The zecrocks incrementalmerkletree fork existed only to carry the clear_flags checkpoint-pruning panic fix, which has now landed upstream. Repoint shardtree and incrementalmerkletree from the fork to zcash/incrementalmerkletree main (same crate versions, API-compatible) and drop the fork. The librustzcash pin is unchanged.

Co-authored-by: AI <noreply+norm@overpay.com>
@emersonian
emersonian force-pushed the ironwood branch 2 times, most recently from ea63511 to 9372d18 Compare July 9, 2026 08:00
@emersonian emersonian changed the title Ironwood (NU6.3) 5.0.0-rc0 Ironwood (NU6.3) 0.5.0-rc0 Jul 9, 2026
Drop the dev-only `ironwood` cargo feature and its 16 cfg gates; ironwood is now always compiled and activated purely by consensus height, so it is on for testnet (NU6.3 height 4_134_000), off for mainnet, and opt-in on regtest via the `ZECD_REGTEST_NU63_HEIGHT` env var, with no build flag. The proving-key cache is unconditionally the V5 Orchard circuit, since every post-NU6.3 send routes through the fused build path that builds its own key. This is an RC posture; the real release will pin published crates.io librustzcash instead of the git rev.

Co-authored-by: AI <noreply+norm@overpay.com>
@emersonian
emersonian force-pushed the ironwood branch 2 times, most recently from c13fc67 to e96f90e Compare July 9, 2026 13:03
emersonian and others added 5 commits July 9, 2026 09:00
Also make the numeric version encoding take each component's leading digit run, so the -rc0 pre-release suffix parses instead of panicking.
The bundled stack pinned zebra 5.0.0, which carries no NU6.3, so the testnet deployment could never activate ironwood. Point the testnet base at the ironwood release candidate and pin mainnet back to the stable release, since ironwood is testnet-only.

Co-authored-by: AI <noreply+norm@overpay.com>
Add an ironwood regtest assertion that `getnewaddress` yields a non-empty, valid unified address once NU6.3 is active, guarding the address path on a post-activation chain.

Co-authored-by: AI <noreply+norm@overpay.com>
Pin the librustzcash set by git rev to the official zcash/librustzcash ironwood line (dw/ironwood-scan-model) instead of the zecrocks fork, and drop the self-send received-note memo backfill cherry-pick that only the fork carried (it is being submitted upstream separately). The ironwood wallet crates are not published to crates.io yet, so the set stays git-pinned to upstream until they land.

Co-authored-by: AI <noreply+norm@overpay.com>
emersonian and others added 3 commits July 12, 2026 09:08
Zebra 6.0.0 is released and serves both networks (Orchard on mainnet, ironwood on testnet), so bump the testnet compose base, the regtest ironwood tier, and the workflow default from the 6.0.0-rc.0 candidate to 6.0.0. The mainnet overlay no longer needs a separate zebra pin and reuses the base image.

Co-authored-by: AI <noreply+norm@overpay.com>
Co-authored-by: AI <noreply+norm@overpay.com>
Rebase the ironwood line onto 0.4.3 and repoint librustzcash to the
upstream zcash/librustzcash ironwood branch, retiring the interim
zecrocks fork. Ironwood now carries every 0.4.x fix through 0.4.3.

Co-authored-by: AI <noreply+norm@overpay.com>
emersonian and others added 2 commits July 13, 2026 15:03
…leases

The ironwood wallet crates were published to crates.io on 2026-07-12
(zcash_client_backend 0.24.0-rc.1, zcash_client_sqlite 0.22.0-rc.1, pczt
0.8.0-rc.1, zip321 0.9.0-rc.1), alongside the leaf crates as finals
(zcash_primitives/zcash_proofs 0.29.0, orchard 0.15.0, zcash_protocol 0.10.0,
zcash_keys 0.15.0, zcash_address 0.13.0, zcash_transparent 0.9.0). This is the
repin the branch was waiting on:

- Drop the [patch.crates-io] git pin of the whole librustzcash workspace
  (dw/ironwood-scan-model rev 1105d8203) and the shardtree/incrementalmerkletree
  git pins; published shardtree 0.7.0 / incrementalmerkletree 0.8.2 carry the
  checkpoint-retention APIs and the clear_flags panic fix the pins existed for.
  Only the vendored i18n-embed-fl patch remains.
- Adapt to API drift between the old rev and the RC: create_proposed_transactions
  no longer takes a target-expiry argument; create_pczt_from_proposal and
  BuildConfig::Standard gain a trailing orchard_pool_bundle_type (DEFAULT, matching
  zecd's padded-bundle change strategy).
- The RC now builds Ironwood PCZTs (librustzcash#2543 landed), so
  ironwood_forces_fused is a conservative choice rather than an upstream
  constraint; keep the gate (the fused path is the one the ironwood regtest
  validates) and note the follow-up.

Builds clean; offline suite green (267 lib tests), fmt and clippy clean.

Co-authored-by: AI <noreply+norm@overpay.com>
Consume the librustzcash set from crates.io (wallet crates as release
candidates, the rest as finals) instead of a pinned git revision, so the
build no longer needs any git dependency and 0.5.x can publish to crates.io.

Co-authored-by: AI <noreply+norm@overpay.com>
@emersonian emersonian closed this Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant