Important warning for Zodl users: If maximum privacy is essential to you, do not move funds in Zodl until they update to support the safe migration flow.
Their team is hard at work to make this happen. Use wallets supporting safe fund migration if your personal threat model depends on the safest Zcash use.
ZODL’s article regarding this: Ironwood migration features in Zodl (upcoming) - Zodl Support
Updated August 1. Watch the new pool fill at cipherscan.app/ironwood.
Ironwood is ACTIVE on mainnet. It activated July 28 at block 3,428,143, and migration is now flowing: mainnet Orchard-to-Ironwood transactions are confirmed working across multiple wallets. This is a huge accomplishment on a very short timeframe, congratulations to everyone involved.
This means that not only is Zcash more provably secure than ever before, but legacy C++ code is completely out of our stack. Zcash is now powered by memory safe Rust (zebra, zakura), on a common stack of libraries called librustzcash. The old code was slowing this ecosystem down big time, get ready for a huge burst of innovation ahead!
I’m most excited about Tachyon, Crosslink, and light wallet PIR, but it’s easier than ever before to jump in and contribute to Zcash on the new unified Rust stack.
Seeing wallet errors?
If you’re seeing errors in your Zcash wallet, the software you’re using hasn’t been updated for Ironwood (“NU6.3”) yet. Try updating from your app store of choice. Almost everything essential has shipped.
Orchard is now sealed
Per ZIP 258, the Orchard pool permanently closed to inflows at activation. No new Orchard outputs, and no Orchard-to-Orchard transfers. Funds already in Orchard can only leave through the turnstile into Ironwood, or out to a transparent address.
Your address does not change. Ironwood reuses Orchard receivers, so existing addresses keep working and wallets simply deliver new payments to Ironwood instead.
The practical consequence: every Zcash user needs Ironwood-capable software, and everyone holding Orchard funds will need to migrate them.
If you run a node or indexer: check your version
A node on an older version stopped following the chain at activation, and will continue to appear healthy.
- lightwalletd: v0.5.2 (July 30). This is the third security release in a week: v0.5.1 bounded oversized client input, and v0.5.2 narrows the
GetMempoolTxmutex to the cache it protects. If you are on v0.5.0 or v0.5.1, update. - Zebra: run the latest release, currently v6.2.3 (July 28). v5.1.0 stopped following the chain at height 3,428,143. v6.2.3 also includes peer connectivity hardening around the activation window. Check the binary version, not the config.
- Zebra zcashd-compat sidecar:
zebra-compat-v1.0.0was built before the mainnet activation height was set, so it stops following the chain at block 3,428,143 while continuing to serve wallet RPCs from its last block. Zebra v6.2.3 pins the correctedzebra-compat-v1.1.0(July 27). Operators onzcashd_source = "embedded"should upgrade, or setzcashd_pathto a current sidecar binary. - Zaino: 0.6.0 (July 13) has full Ironwood support - activation heights, v6 transaction format, database migration, and the Orchard-to-Ironwood pool transition. It also takes activation heights from the validator now instead of hardcoding them.
- Zakura: the new full node from Sean Bowe and Dev Ojha has supported Ironwood since its v1.0.0 release on July 15. Latest stable is v1.0.5 (July 28), with v1.1.0-rc0 tagged August 1. It also offers a compatibility path for zcashd operators, plus faster initial sync, pruning, and snapshot bootstrapping. The Zcash Foundation recommends that if you switch to Zakura you keep a Zebra node running alongside it as an independent consensus check.
Deploying the whole stack
zcash-stack is worth knowing about if you run infrastructure, it is the open source foundation that Zec.rocks uses to host its global Zcash infrastructure.
Zcash-stack packages Helm charts for Kubernetes, Docker Compose configurations, and a step-by-step workshop for standing up Zcash services, and it is published on Artifact Hub. It has been tracking Ironwood closely: zcashd was marked deprecated on July 25, Zakura node and DNS seeder components landed July 28, and 0.3.2 (July 30) adds a zecd component and moves to lightwalletd v0.5.2. If you’re rebuilding your deployment for Ironwood, start here rather than assembling it by hand.
Wallets
Two separate questions for every wallet below. Ironwood means it works correctly after activation and can see the new pool. Migration means it can move your existing funds out of Orchard.
How to read the Migration column. There is only one way out of Orchard: the protocol’s one-way turnstile, and every crossing publishes its amount and block height. Wallets differ only in how they shape that crossing:
- Basic: moves your funds in one visible transaction. It works, but your amount is public, and a distinctive amount is recognizable.
- Private: a wallet-specific privacy-aware flow, splitting funds into common denominations and spreading them out.
- ZIP 318: follows the ZIP 318 migration spec, using standard denominations and shared anchor-height buckets. This is the gold standard, because blending only works if migrators cross the turnstile identically, and the spec is what everyone can agree to be identical to.
With Orchard sealed, everyone needs migration eventually. If privacy matters to you, use a ZIP 318 wallet, or a private flow at minimum.
Store versions matter more than repo tags. Several teams shipped Ironwood on GitHub before their store listing updated, so the version on your phone may not be the version in the release notes. Thanks @Autotunafish for flagging this on the 27th.
Mobile
| Wallet | Latest release | On the store | Ironwood | Migration | Notes |
|---|---|---|---|---|---|
| Vizor (iOS) | 0.0.21, Jul 30 | 0.0.21, Jul 30 | Yes | ZIP 318 | Fully follows the ZIP 318 migration spec, per the Vizor team. Two updates since launch for migration stability. Also imports Keystone hardware accounts. |
| Vizor (Android) | 0.0.21 | 0.0.21 | Yes | Basic | Now on Google Play. The private path is not in the Android build yet, with an update planned. |
| Cake Wallet | 6.4.0, Jul 27 | 6.4.0, Jul 28 | Yes | ZIP 318, mostly | Auto-migration confirmed working on mainnet. Opening your Zcash wallet walks you through a privacy-preserving migration automatically. Thanks @sethforprivacy for the heads up. |
| Zkool | 6.26.0, Jul 31 | Play 6.26.0; App Store 6.23.0 | Yes | Private | Google Play is current. 6.26.0 adds streaming migration with progress tracking, cancellation, and migration transactions labelled in history. The iOS store build is four releases behind and cannot migrate. |
| Zingo! | 2.0.22 (313), Jul 31 | 2.0.21 (311), Jul 31 | Yes | Basic | iOS finally updated on July 31, closing the longest-standing gap on this list. Thanks @dismad for confirming. |
| Zodl (iOS) | 3.8.1, Jul 30 | 3.8.1, Jul 30 | Yes | Basic | 3.8.1 fixes balance and transaction display issues; it does not add the private flow. See the warning at the top of this post. |
| Zodl (Android) | 3.8.1 (2027), Jul 30 | 3.8.1, Jul 30 | Yes | Basic | Same as iOS. Their support article describes the planned private flow: standard denominations, randomized schedules, and the full schedule shown up front. |
| Gem Wallet | Current | Current | Transparent only | n/a | Transparent ZEC works past activation with the correct Ironwood branch ID. Shielded transactions and migration are not supported yet. Thanks @Anzus_GemWallet for the report. |
Vizor across platforms, per Josh from the Vizor team: all their products support Ironwood and migration, with both a private ZIP 318 path and an immediate path. They recommend the desktop wallet for private migrations, which run anywhere from 12 hours to multiple days and need the wallet online. You can export the wallet to mobile once migration completes.
Controlling your own migration amounts. @Shawn asked whether you can set the per-transaction amount rather than letting auto-migration pick. @hanh confirmed Zkool’s migration uses standard power-of-ten denominations rather than all sub-ZEC amounts, and that a direct Orchard-to-Ironwood send can be any amount you choose. @Autotunafish notes you can also control which input notes are used. Manual control is available if you want it, but the defaults exist for a reason: see the privacy section below.
zcashd wallet replacements (server side)
| Software | Latest release | Ironwood | Migration | Notes |
|---|---|---|---|---|
| zallet | v0.1.0-beta.2, Jul 28 | Yes | Basic | The official zcashd wallet replacement. beta.2 adds a zcashd migration guide, an RPC status matrix, operations and backup guides, z_exportviewingkey, and verification of security-relevant wallet.db records before use. |
| zecd | v0.5.0, Jul 28 | Yes | Basic | Final release, out of RC. The zcashd wallet alternative from Zec.rocks: audited with zero critical findings, builds entirely from crates.io. v0.5.1-rc3 (July 31) adds coinbase spending. Quickstart. |
Desktop and CLI
| Wallet | Latest release | Ironwood | Migration | Notes |
|---|---|---|---|---|
| Vizor (desktop) | See notes | Yes | ZIP 318 | The Vizor team recommends desktop for long private migrations, with export to mobile afterward. GitHub still shows testnet previews, so ask in their thread for the current mainnet build. |
| Zkool | 6.26.0, Jul 31 | Yes | Private | Uses power-of-ten denominations, per @hanh. 6.26.0 adds a one-shot migration option, streaming with progress tracking, cancellation support, and migration transactions identified in history, plus dust filtering and per-pool note locking. |
| NozyWallet | 2.4.3, Jul 31 | Yes | ZIP 318 | @Lowo confirms ZIP 318 migration across CLI and desktop. The CLI remains the production surface; desktop is at beta.4 (Windows) as of August 1. Their migration case breakdown is a thorough write-up of the privacy tradeoffs. |
| Zingo-PC | 2.0.22 (163), Jul 30 | Yes | Basic | Bug fix release. A private path exists in the code but ships deactivated for now. |
Browser extension
| Wallet | Latest release | Ironwood | Notes |
|---|---|---|---|
| Noir Wallet | 0.1.26, Jul 27 | Yes | Also resolves .zcash and .zec addresses via ZcashNames, and auto-connects at app.zknoir.com. Distributed in developer mode, so updates are manual. |
| NozyWallet | 0.1.8, Aug 1 | Yes | Adds Sapling legacy companion methods. Load unpacked from the Chromium or Firefox zip. The CLI remains the production surface. |
Hardware
| Device | Version | Ironwood | Notes |
|---|---|---|---|
| Keystone | Firmware 3.0.2, Jul 27 | Yes | Adds batch PCZT signing, which is what makes a multi-transaction migration practical on a signing device. Cypherpunk edition only, and it cannot be downgraded to 3.0.0 Multi-Coin or BTC-Only afterward. @dismad posted a walkthrough. |
| Ledger | Not yet released | Merged | PCZT v2 signing merged into app-zcash on July 27. Still subject to Ledger’s own review and Ledger Live rollout, so treat it as in flight. |
Keystone Cypherpunk users need 3.0.2 to transact on Ironwood, so this is a required update rather than an optional one. Zodl separately requires firmware 3.0.1 or newer at signing time, on both platforms. Verify the checksum on-device before flashing.
Not adding Ironwood support
| Wallet | Last release | Notes |
|---|---|---|
| Ywallet | v1.15.3, Jun 4 | Ywallet has told me directly that it will not be updated for Ironwood. It supports up to NU6.2, with no commits since June 4. |
Ywallet users need to move, and with Orchard sealed this isn’t something to defer. A Ywallet seed phrase restores into any of the wallets above. Ywallet and Zkool share a developer and Zkool is the successor project, so that is the shortest move for anyone wanting to stay in familiar software.
In development
| Project | Status | Notes |
|---|---|---|
| Gem Wallet (shielded) | Planned | Transparent ZEC already works (see mobile table); shielded support and migration are not there yet. |
| Vizor (Android private path) | Planned | Android is on the store but only does basic migration for now. |
| Gleyo | Expected to carry over | Built entirely on Orchard unified addresses, so gilmore expects a clean transition. No Ironwood-specific release yet. |
On migration privacy
When funds cross from Orchard into Ironwood, the amount and the block height are public, even though the sending Orchard notes and the receiving Ironwood addresses stay shielded. @zk_nd3r’s testnet scan found distinctive amounts like 0.37663757 TAZ alongside common ones like 1.0 and 10.0, and a distinctive amount is identifiable across the turnstile.
Practical advice now that migration is live:
- Use common, denominated amounts. Powers of ten are the natural choice.
- Don’t migrate your whole balance in one transaction.
- Spread migrations across time rather than emptying an account in one block.
- Avoid mixing transparent or Sapling activity into the migration.
NozyWallet’s breakdown frames the options cleanly: stay in Orchard (the remaining anonymity set shrinks as others leave), migrate everything at once (a distinctive footprint), a ZIP 318 scheduled migration using power-of-ten denominations and shared anchor-height buckets, or route ordinary sends to Ironwood afterward to finish the job. Sharing anchor heights with other migrators is easy to overlook, and it is what makes your transactions blend in with everyone else’s.
This is why the ZIP 318 spec is what really matters, and why the tables above track it. A private flow only blends with users of the same wallet; a spec-conformant flow blends with everyone following the spec. Vizor and NozyWallet follow ZIP 318, Cake Wallet is mostly compatible, and Zkool uses power-of-ten denominations. Whatever you use, take the wallet’s defaults rather than hand-rolling amounts.
A private migration is slow by design: expect 12 hours to multiple days of the wallet being online, which is why Vizor recommends running it from desktop. Plan for that rather than abandoning it partway.
On timing. There is no hard deadline, but Orchard is closed, turnstile exit capacity is finite, and ZIP 2005 advises migrating everything into Ironwood, including transparent and Sapling funds. Migrate deliberately rather than deferring it: denominated pieces over days rather than all at once, and not put off indefinitely.
Ironwood for developers
| Project | Status | Notes |
|---|---|---|
| zcash-devtool | Merged into main, Jul 10 |
Balance, list-unspent and send-max surface the Ironwood pool, pczt prove builds Ironwood proofs, wallet send accepts --tx-version 6, and shielding targets Ironwood now that NU6.3 is active. No branch checkout needed. |
| librustzcash | Mostly final on crates.io | Final: zcash_primitives 0.30.0, zcash_proofs 0.30.0, zcash_transparent 0.10.0, orchard 0.15.4, zcash_protocol 0.10.1, zcash_keys 0.16.1, pczt 0.9.1. The wallet crates are at rc.6 and closing in on final: zcash_client_backend 0.24.0-rc.6, zcash_client_sqlite 0.22.0-rc.6, zip321 0.9.0-rc.1. |
| zcash-stack | 0.3.2, Jul 30 | Helm charts, Docker Compose configurations, and a deployment workshop for running Zcash infrastructure. Now includes Zakura, DNS seeder, and zecd components, on lightwalletd v0.5.2. |
| zingolib | Merged into dev |
The old feat/ironwood-migration branch no longer exists, so build from dev. |
| z:kv | v0.0.1-rc5, Jul 29 | Supports Ironwood, with a built-in wallet and faucet. Create a database and use the faucet to exercise Ironwood end to end. |
zingolib CLI
git clone https://github.com/zingolabs/zingolib.git
cd zingolib && git checkout dev
cargo run --release --bin zingo-cli -- --chain testnet --server https://testnet.zec.rocks:443 --data-dir ./zingo-testnet
At the interactive prompt:
- new_address o # generate an address
- balance
- send (address) (amount in zatoshis) “(optional memo)”
- migrate - upgrade all Orchard funds into the Ironwood pool.
Building Vizor from source
The Vizor iOS and Android apps are both live (see the mobile table). For development, the migration work is in PR #73 with follow-ups in #80 and #85.
git clone https://github.com/valargroup/vizor-wallet.git
cd vizor-wallet && git checkout adam/migration-tab
fvm install && fvm flutter pub get # fvm pins Flutter 3.41.6
fvm flutter build macos --release \
--dart-define=ZCASH_DEFAULT_NETWORK=test \
--dart-define=ZCASH_ENABLE_LOCAL_IRONWOOD_TESTNET=true \
--dart-define=ZCASH_DEFAULT_RPC_ENDPOINT_PRESET=local-ironwood-testnet
# Run: build/macos/Build/Products/Release/Vizor.app
Their README also documents a ZCASH_ENABLE_LOCAL_IRONWOOD_TESTNET=true local-stack define for running against your own Ironwood lightwalletd.
Explorers and trackers
CipherScan by @Kenbak has been showing real Ironwood shielded spends on testnet since July 13 (testnet.cipherscan.app). It is also the explorer to watch for the circulating supply verification story, which is a large part of why Ironwood exists, and it now reports ZIP 318 conformance across migrations.
ironwood.live is a community-built migration tracker showing what share of Orchard ZEC has crossed the turnstile, live pool balances, and volume over 24h, 7d, 30d and all time. It is independent and not affiliated with ECC, ZF or Shielded Labs.
Zcash teams are firing “on all cylinders”
Node, indexer, wallet, and hardware wallet support for a consensus change, across more than a dozen independent teams, inside a month. Recent velocity in our ecosystem has been really impressive to witness.
This is a “living document” that I will keep updated as I hear about more apps supporting Ironwood.
It’s extremely important for the community to test Ironwood as it rolls out. My intention in making this list is to make it straightforward for anyone technical to pick up bleeding-edge software and start trying out the latest Zcash update, to help the ecosystem catch any glitches.
Adding Ironwood support to your Zcash wallet? DM me and i’ll add your repo+branch to this list.
Ironward.
