Zcash Z3 updates (formerly Zcashd Deprecation)

March 21st

Hello! This is an unusual Zcash Z3 update from Sofia, Bulgaria. The ZkProof space is preparing for a special week: Zk Week. Many Zcash members are travelling to the ZF Dev Summit near the ZkWeek conferences, so work may have been slowed down a bit due to some team members preparing to spend some days away from home.

I invite you to access the quote on quote “dashboard” (in development) https://zecdev.github.io/zcash-z3/dashboard

Zebra

Project Roadmap board
Priority board

ZF has been mostly engaged with ZF dev summit but still progress is being made in their front. The following issues will close the ongoing sprint

According to what it was discussed during ZF’s dev summit and their board, the Zebra team is marking “Ready for Zcashd deprecation” on mid-May 2025. What does this mean?

In short, it means that Zebra is exposing all the functionality that Zaino and Zallet would need according to the new architecture that the different Zcash dev teams agreed upon plus the requirements that so far have been collected from Exchanges, Miners and Block explorers. At this point other teams will be able to fully rely on Zebra for their projects and start working on full integration of Zebra into them, meaning, more development work needed will be able to be started.

Zebra is not only a modern Rust codebase. It is a project that makes heavy use of continuous integration. This means that when Zebradoers make changes in the Zebra code, a bunch of cloud machines start testing the code by spinning up some portion of code that solely dedicates to asserting whether some conditions continue to hold after those changes were made. Mindblowing huh?

“The current state of Zebra’s CI let’s me sleep very well. I know that if we modify some code we can notice if something broke or note, that means that we can cut a new release from our main code branch at any time” - Zebra Dev.

This is a key aspect of Zcash Z3 and it will continue to be. But don’t take it for granted. Continuous Integration also require a continuous commitment to testing your code with more code. We all need to commit to add tests for every piece of code we contribute to Zebra so it can stay fresh and keep advancing Zcash into the future.

Zaino (ZingoLabs)

  • Status: almost back on track!

Project Board

Zaino is starting to work on milestone three of their grant this includes work to make Zaino read directly from the remote ReadStateService from Zebra and also to make Zaino serve the lightwalletd replacement part of its functionality from that service. There’s a bucket of allocated time to unforeseen work or bug fixing.

Zingo devs are fully committed to deliver Zaino and shifting most of its development team to their “winning horse”. @zancas can correct me if I misrepresent this but I have the impression that 75% of their Dev team is shifting entirely on Zaino.

In-Memory backend wrap up

- status: pending review :warning:

This has been falling through the cracks a bit, we still need to provide reviews to this PR https://github.com/zcash/librustzcash/pull/1634

Zallet full node wallet

  • Status: delayed :warning: (but rapidly catching up)

ECC has notified a deviation of 2 months from the original schedule.

tracking work on this repository.

Part of ECC’s engineering team is preparing for attending ZF dev summit and ZkWeek but progress is still being made.
@str4d is starting to sync wallet using a full node via Zaino instead of a lightwalletd! And also reporting some issues to Zaino developers. Any differences in the implemented wallet RPCs are being tracked here

Wallet Export format

  • Status: On-track

ZCG as acknowledged and approved the planning changes from Zingo and Blockchain Commons and teams continue to work on Milestones 2 and 3 at the same time. They are still looking for wallet files to test on! See message below.

TESTING TESTING!

I forward you a message from Wolf McNally from Blockchain Commons

I’d be happy to test against any drained wallets provided, and would obviously keep them in confidence unless explicit permission to release them publicly were granted. Also, I don’t even have to know the identity of the provider, as that’s immaterial to ensuring compatibility. Obviously in that case there would be no way to identify the submitter and therefore no way for the submitter to grant permission for release, so any anonymously-submitted wallets would have to remain permanently confidential. I’m also fine with pledging to sequester them on separate storage, and destroy all copies once the work is complete.

This is quickly becoming CRITICAL PATH, so anything you can do to help Wolf push forward: testing, advice, comments, and wallet files would be greatly appreciated.

Regtest? What is that?

  • Status: First round of review comments addressed

As you may have seen in the forums, I created a ZIP draft according to the ZIP process to address this undefinition problem we’ve faced.

I addressed the first round of comments on this PR https://github.com/zcash/zips/pull/986

You can read, review and comment too!

Thanks for reading!

7 Likes

March 28th

This update corresponds to Friday March 28th. Apologies for the Delay!

Hello! Last Zcash Z3 update from Sofia, Bulgaria. Many Zcash developers are attending Real World Crypto.

I invite you to access the quote on quote “dashboard” (in development) https://zecdev.github.io/zcash-z3/dashboard

Zebra

Project Roadmap board
Priority board

The Zebra team has been collaborating with Zaino folks and there’s a very positive synergy that came out as a result of the Dev Summit. Please give a virtual round of applause to the Zcash Foundation Team for organizing this event!.

In three days a new sprint will start that has a bunch of work that will feel more like a marathon! I want to personally thank @pili for prioritizing work needed for Zaino and Block explorer support.

Zaino (ZingoLabs)

  • Status: almost back on track!

Project Board

Zingo’s “winning horse” keeps striding. Milestone 3 of Zaino is progressing + some updates to the codebase were done

In-Memory backend wrap up

- status: pending review :warning:

This has been falling through the cracks a bit, we still need to provide reviews to this PR https://github.com/zcash/librustzcash/pull/1634

We need reviewers for this!!

Zallet full node wallet

  • Status: delayed :warning: (but rapidly catching up)

ECC has notified a deviation of 2 months from the original schedule.

tracking work on this repository.

ECC devs are on fire! @nuttycom si currently working on using ZeWIF for wallet.dat files from the Zcashd wallet while @str4d (among many things) is going through the RPC list and implementing them

Wallet Export format

  • Status: On-track

Remember that the ZeWIF bunch is still looking for wallet files to test on!

@shannon-bc has posted an update on ZeWIF progress. Nobody’s better for an update on it than the team working on it. I leave you the link here

Regtest? What is that?

  • Status: First round of review comments addressed

As you may have seen in the forums, I created a ZIP draft according to the ZIP process to address this undefinition problem we’ve faced.

I addressed the first round of comments on this PR https://github.com/zcash/zips/pull/986 and I see more comments coming!

You can read, review and comment too!

Thanks for reading!

5 Likes

April 4th

Hello! The teams are back from their trips to ZF Dev Summit and conferences in Sofia. Last arborist call already showed a lot of progress made on all fronts. Don’t miss it!

Zebra

Project Roadmap board
Priority board

Kudos to Zaino and Zebra devs for squashing this annoying bug bug: Repeated error in TrustedChainSync when syncing coinbase spend that was affecting Zaino development!

Marek had been battling with Continuous Integration infrastructure that was slowing down Zebra development and the team announced those problems were solved. To those who don’t know, CI is crucial for development.It provides quick (but not instant) feedback to developers on how changes may have impacted the overall system. The downside is that CI is very difficult to deal with. Requires maintenance and when it breaks, it’s hard and slow to fix. Imagine that you had to troubleshoot a problem on your PC, but in this case you are not home, you call your house and someone does the steps you instructed and tell you what happened. That’s how working with cloud-based CI is. The advantages are HUGE but there are moments like these where the benefits are shadowed by the maintenance efforts.

The Zebra team is currently working on important things for Zaino and Block Explorer support.

Zaino (ZingoLabs)

  • Status: almost back on track!

Project Board

Team continues to progress on Milestone 3 of their grant. Also they’ve presented another follow-up grant for work that was not scoped at the time Zingo and the rest of the team designed the requirements for Zaino and you can read about it here
Things that are being work this week are
- Implementing compact block fetch-by-hash for the `get_block` gRPC service
- fix for str4ds `get_latest_block` issue (in review)

In-Memory backend wrap up

- status: pending review :warning:

This has been falling through the cracks a bit, we still need to provide reviews to this PR https://github.com/zcash/librustzcash/pull/1634

We need reviewers for this!!

Zallet full node wallet

  • Status: delayed :warning: (but rapidly catching up)

ECC has notified a deviation of 2 months from the original schedule.

tracking work on this repository.

  • Transparent Gap Limit has been implemented.
  • Zallet has been able to sync the chain using Zaino!!!
  • Implementing ZeWIF import of wallet.dat files from Zcashd
  • Implementing z_sendmany RPC

Wallet Export format

  • Status: On-track

Remember that the ZeWIF bunch is still looking for wallet files to test on!

@shannon-bc has posted an update on ZeWIF progress. Nobody’s better for an update on it than the team working on it. I leave you the link here

Regtest? What is that?

  • Status: First round of review comments addressed

Same state as last update: I addressed the first round of comments on this PR https://github.com/zcash/zips/pull/986 and I see more comments coming!

You can read, review and comment too!

Thanks for reading!

8 Likes

April 11th

A lot of discussions have been going on. There’s a ton of work to do and limited time. What to prioritize? What are the bottlenecks? How to avoid burnout of the development team?

In line with the Decentralized But Organized mindset I shared in this Zcash Dev Summit article, I tend to think of the group of people in charge of deprecating Zcashd and bringing the Z3 stack to life as one team composed of people from different organizations. This is a challenge because Z3 has its own priorities while the different organizations also have their own objectives, development practices, project commitments and therefore, priorities.

This is where “Unstoppable Private Money” technology like Zcash meets the “Human Scale” constraints. We are human, we can only do a certain amount of things in a given period of time. Although everyone is juggling many things in the air, one thing at a time has our deepest attention. That’s ok. We are not machines and have to be aware of our limitations to work around them. The burnout topic appeared at the last Zcashd deprecation meeting. We should take this as a serious matter. The continuously sustained effort by all development teams has a toll, ignoring it will only make the price higher. Forcing the engine of this team of teams will make us slower, not faster. Also, we are reaching the point where integration of each one of the Z’s of the Z3 stack is happening. Things will break, code-pairings will have to happen, changes will have to be made in the different components and all of that contributes to heating up the system.

“How can we avoid burnout or unsustainable work practices throughout this project?”

I believe these principles will help us through the hard working months we have ahead of us:

  • Work as one team and help each other.
  • Pick your teammate up if they are falling behind.
  • Favor cross-pollination to grow overall knowledge. Tear down team silos.
  • Stuck on something? Bring it up! Others can’t help you with problems they are not aware of.
  • Beware of the dangers of Side-Quests! If you need someone’s time, try to think about how you can compensate for that time given that you certainly know they are already overbooked as you probably are.
  • Software Engineering is inherently frustrating. Don’t let stress talk for ourselves. Everyone is fighting a battle you don’t know of. Be kind, always.

I’m in a strange spot, because I can’t enforce any of these things. I work and collaborate with all teams, but I’m not part of any of them. But I’m certainly here to contribute in every single way I can to deprecate Zcashd and deploy Z3 to production.

Now, the usual updates

New webpage from Z.cash team:

Check it out!

Zebra

Project Roadmap board
Priority board

The Zebra team is wrapping Sprint 7 right on target for their schedule.

Although some CI issues keep the team slashing and hacking. Shoutout to Marek and Gustavo who are working this!

Done:

Zaino (ZingoLabs)

  • Status: almost back on track!

Project Board

Team continues to progress on Milestone 3. Also Zaino is being integrated to Zallet which is bringing up some work for the Zaino devs. A lot of collaboration is going on there.

There was an issue stopping zecrocks from fully moving from Lightwalletd to Zaino.

Also a new release candidate tag is being cooked!

In-Memory backend wrap up

- status: pending review :warning:

This has been falling through the cracks a bit, we still need to provide reviews to this PR https://github.com/zcash/librustzcash/pull/1634

We need reviewers for this!!

Zallet full node wallet

  • Status: delayed :warning: (but rapidly catching up)

ECC has notified a deviation of 2 months from the original schedule.

tracking work on this repository.

Zallet has been getting a lot of updates and I’m not exaggerating.

Things merged to the main codebase this week. Sync wallet using a full node via Zaino instead of a lightwalletd which tells us that Zaino is feeding the wallet with blockchain info. Added support for async operations so that clients of Zallet can spin up some long running task and check it periodically along with these RPCs:

Contributors are welcome!

@str4d and @nuttycom have taken the time to create the github issues of the RPC methods to be implemented and this is a great opportunity to start contributing to the Z3 stack.

Wallet Export format

  • Status: On-track

Blockchain Commons and Zingo Labs folks continue to work on their grant milestones while Kris from ECC is starting to integrate ZeWIF into Zallet. ZeWIF folks will have their bi-weekly meeting next week. Stay tuned for more updates!

Regtest? What is that?

  • Status: First round of review comments addressed

Same state as last update: I addressed the first round of comments on this PR https://github.com/zcash/zips/pull/986 and I see more comments coming!

You can read, review and comment too!

Thanks for reading!

7 Likes

April 18th

Hello! Another week! Another Zcash Z3 update!

Outreach

As Zcashd 6.2.0 kicks in, the z.cash people have put together this site to accompany communications which has been deemed to be very useful.

To deploy Zcashd 6.2.0, node operators have to add i-am-aware-zcashd-will-be-replaced-by-zebrad-and-zallet-in-2025=1 into their node configuration. Additionally, they have to enable the deprecated RPCs manually by using the allowdeprecated parameter in their zcashd.conf to enable certain RPCs that they depend on and have been deprecated (long time ago).

Zebra

Project Roadmap board

Priority board

The ZF engineering team keeps checking boxes in their To Do list. While also actively collaborating with Zaino and Zallet folks. CI issues and tech debt are being resolved which will undoubtedly contribute to a more reliable development infrastructure and better developer tooling for the various teams working on Zebra. In terms of Zcashd deprecation support there are several changes in review: feature: Remote ReadStateService. which is important for Zaino and Zallet deployment and several others. Currently 7 of 9 items in the review queue of Zebra are directly related to Zcashd Deprecation which shows the commitment of the Zebra team to support this ecosystem effort.

Zaino (ZingoLabs)

  • Status: almost back on track!

Project Board

The follow-up grant “Complete Zaino” was approved by @ZCG! As it is explained by @idky137 from Zingo labs in this post, this grant covers for a lot of work not scoped in the original grant which were requirements and features discovered along the way or during the integration of the different pieces of the stack.

Milestone 3 of the current grant keeps progressing with many things in-flight:

Bonus!

@emersonian from Zec.rocks has started to roll out Zaino servers! And some integration issues have been encountered in a pretty convenient and timely fashion for developers to make the appropriate changes with enough time. Thank You Zec.Rocks!

In-Memory backend wrap up

  • status: pending review :warning:

This has been falling through the cracks a bit, we still need to provide reviews to this PR https://github.com/zcash/librustzcash/pull/1634
We need reviewers for this!!

Zallet full node wallet

  • Status: delayed :warning: (but rapidly catching up)

ECC has notified a deviation of 2 months from the original schedule.

tracking work on this repository.

Zallet folks are also on a roll! Besides implementing various RPCs, @nuttycom is all over the place implementing the wallet.dat migration using ZeWIF. More comments on this on the ZeWIF section.
merged:

In review:

Contributors are welcome!

@str4d and @nuttycom have taken the time to create the github issues of the RPC methods to be implemented and this is a great opportunity to start contributing to the Z3 stack.

Wallet Export format

  • Status: On-track

ZeWIF has held its fourth meeting. And a lot of collaboration and code walkthrough happened. Thanks to @bc-shannon for putting this together.

Meeting page is here: ZeWIF Meeting #4 (4/16/25) - Developer Resources

Video is here: https://www.youtube.com/watch?v=oXm2FsR4KTs

ZeWIF page updated with current work: Zcash Extensible Wallet Interchange Format (ZeWIF) - Developer Resources

Contributors needed!

The ZeWIF team is definitely looking for PRs from the community at this point, to make sure we have all the abstractions for wallet contents right. Just be sure you have the latest pull, since the repos were updated this morning.

Regtest? What is that?

  • Status: First round of review comments addressed

Same state as last update: I addressed the first round of comments on this PR [#985] Create a ZIP Draft to document Regtest mode by pacu · Pull Request #986 · zcash/zips · GitHub and I see more comments coming!

You can read, review and comment too!

Thanks for reading!

5 Likes

April 25th

Hello! Another week! Another Zcash Z3 update!

Outreach

The Z3 team is working on some request for information that came back from some bug partners for them to prioritize the integration of the new Zcash stack into their work planning.

Zebra

Project Roadmap board
Priority board

@pili has posted an excellent summary of ZF’s past sprint! Don’t miss it! Nothing to add on my part!

Once more I want to recognize Pili’s work on work visibility to the public developer community of the whereabouts and progress of her team. If you take a stroll by the Zebra boards you’ll see how everything is laid out and that’s a ton of work that does need to be often recognized and appreciated.

Zaino (ZingoLabs)

  • Status: almost back on track!

Project Board

Zallet integration is helping to iron out some integration wrinkles and also revealed some shortcomings of the overall Zcashd deprecation planning during Q3 2024 that revealed themselves during this phase of development which teams are working together to address.

Last update I mentioned that Zaino folks were progressing with something called “remote read state service”. During conversations with the ECC team Zingo folks learned that this functionality was not finally needed this early and that Zallet folks would have expected some items in the follow-up grant “Complete Zaino” to be developed instead among other things. @ZingoLabs and @ZCG are working out a way to fit these priority changes into the existing grant structure and minimize budget impact on Zingo as org and Timeline impact to the Z3 project.

Despite all of this progress keeps its pace and every day it passes we are closer to our goal.

In-Memory backend wrap up

- status: pending review :warning:

This has been falling through the cracks a bit, we still need to provide reviews to this PR https://github.com/zcash/librustzcash/pull/1634

We need reviewers for this!!

Zallet full node wallet

  • Status: delayed :warning: (but rapidly catching up)

ECC has notified a deviation of 2 months from the original schedule.

tracking work on this repository.

Collaboration keeps flowing. @0xarbitrage paid a visit over the Zallet house and left a PR for inclusion of regtest params in Zallet’s config and also reviewed cli-tests work from @str4d.
merged:

In review:

@str4d found and extensively documented some troubles found during integration with Zaino
Here and here.

Contributors are welcome!

@str4d and @nuttycom have taken the time to create the github issues of the RPC methods to be implemented and this is a great opportunity to start contributing to the Z3 stack.

Wallet Export format

  • Status: On-track

ZeWIF migrate tool development continues an as Kris integrates zmigrate to Zallet, some issues are being discovered and fixed.

Contributors needed!

The ZeWIF team is definitely looking for PRs from the community at this point, to make sure we have all the abstractions for wallet contents right. Just be sure you have the latest pull, since the repos were updated this morning.

Regtest? What is that?

  • Status: First round of review comments addressed

Same state as last update: I addressed the first round of comments on this PR https://github.com/zcash/zips/pull/986 and I see more comments coming!

You can read, review and comment too!

Thanks for reading!

9 Likes

Hi, a key point is current zcashd graphical frontends requires extensive ᴊꜱᴏɴ‑ʀᴘᴄ access (especially GitHub - ZcashFoundation/zecwallet: A z-address first full node and UI wallet for zcash). Zaino can’t be a replacement for such programs as they need to write data for shielded transactions and not only need to read.

This goes well beyond graphical frontendeds as exchanges relies on those extensive uses of ᴊꜱᴏɴ‑ʀᴘᴄ. As currently proposed, dropping zcashd now would lead to a decrease used to zcash through a lot of delistings.

Zaino is not a frontend :blush:, for a replacement of ZecWallet, you have Zenith by @pitmutt which is a full node wallet

2 Likes

Or try Zingo’s (light) wallets, which can connect with Zaino or Lightwalletd, depending on if you want to use what’s new and being developed actively (Zaino) or what’s been around but is on the way out and hasn’t been updated a lot (Lightwalletd).

Zingo offers mobile, desktop, and cli options.

Maybe someone has already encountered this, is it possible to use the blockchain database from zcashd with zebra? some kind of conversion tool?
It would be useful so as not to drag 300 GB from net

Unfortunately, no. Zebra uses a much-improved technology called RocksDB to store the local copy of the blockchain.

The blockchain can take around ten days to sync from scratch, or less depending on your internet connection. If you’re in a hurry, Zec.rocks maintains regular snapshots of the Zcash blockchain here (or scroll around here for zcashd and block explorer snapshots). But it’s best practice to fully sync the chain yourself.

on fast internet and cpu ive managed to sync the whole chain in about 2 days in Zerba

edited: it wasnt even super fast cpu by todays standards. desktop intel i5 10th gen

2 Likes

I’d prefer not to download the whole database over the network.
It seems that the node (Zebra) config no longer has parameters similar to addnode or connect ?
This is a bit strange since node is supposed to be a tool for P2P interaction between nodes)
If I add my node to the config as initial_mainnet_peers, it is treated as a seed node, and blocks are not fetched from it.
It looks like the addnode RPC command was removed as well?

curl  --data '{"jsonrpc": "2.0", "id": 1, "method": "addnode", "params": []}' -H "Content-Type: application/json" http://127.0.0.1:8232
{"jsonrpc":"2.0","id":1,"error":{"code":-32601,"message":"Method not found"}}

I wanted to connect Zebra to my zcashd node and sync the blockchain from it, but everything here seems somewhat non-trivial.
Does anyone have any advice, please?

If a specific listener address is configured, Zebra will advertise it to other nodes. But by default, Zebra uses an unspecified address (“0.0.0.0” or “[::]”), which is not advertised to other nodes.

Maybe add a specific listner address?

Curious of your sync times / hardware specs/ when you finish :eyes:

Thanks. I want to connect Zebra to my zcashd node. But for now, I’ll actually try adding Zebra to zcashd config-maybe that will work.
I just don’t understand where the peer management functionality went; is it considered unnecessary?

This is precisely what we are developing Zallet for: GitHub - zcash/wallet: Repo for replacing the zcashd wallet

Yes. This is apparently what I need, but I’m still quite far from getting to Zallet. So far, I can’t even get Zebra to run :grinning_face: :cowboy_hat_face:

Adding to initial_mainnet_peers should be enough, they are not handled specially and blocks should be fetched from those peers. If that’s not happening then it’s a bug, can you please double check? If keeps not working then please open a bug report with the logs.

addnode and connect were not removed - they were never added in the first place! We might add support for them in the ongoing zcashd deprecation process.

I’m pretty sure that a conversion tool could be written relatively easily. My main limitation is not knowing the zebra codebase well enough, but I’ll see what I can achieve within a timebox…

1 Like

Look into the FinalizedState::commit_finalized_direct() method.

(As a heads up, performance might be worse than you expect due to perf: Stop expensive cryptographic validation when deserializing shielded transactions · Issue #7939 · ZcashFoundation/zebra · GitHub which is something I want to fix but we just have higher priority stuff at the moment)

1 Like