Electric Coin Co. (ECC) has been working since June to resolve Zcash wallet performance issues that are affecting users of third-party apps Edge, Nighthawk, and Unstoppable.* All three of these mobile wallets utilize the ECC SDK.
Our engineers have made progress, however, work remains — including further updates to zcashd, lightwalletd, the ECC wallet SDKs, and the ECC prototype wallet — to fully restore good user experience in the impacted apps.
Solving these issues is our No. 1 priority, even taking precedence over our long term roadmap. Internally, we are calling this “Emergency Mode.”
The syncing problem
Starting in June 2022, the Zcash network began experiencing a huge increase in shielded transaction volume. This additional network load caused a “data pileup” that prevented some wallets from being able to sync in a reasonable amount of time. (The current wallet sync process requires scanning the entire blockchain before funds are available to be spent.) If a wallet won’t sync, a user can’t access or spend their funds.
It’s a complicated challenge to address, and at minimum, it requires developing and implementing (1) a faster algorithm that does not require a linear sync of all blocks on chain and (2) tooling modifications that will give users the ability to spend funds without having a fully synced chain. As mentioned, the solution comprises changes to every component in the shielded mobile wallet stack: zcashd, lightwalletd, the ECC wallet SDKs, and the ECC prototype wallet.
What we’ve done so far
Within weeks of identifying the problem, ECC released two updates to zcashd that resolved full node issues, and work was underway on the SDKs. In October, we released zcashd 5.3.0 to fix out-of-memory issues, but further public releases specifically relevant to these syncing issues were delayed, as ECC engineers were pulled off task to build zcashd 5.3.3 and 5.4.2 — critical updates that remediated vulnerabilities inherited from Bitcoin Core.
Here’s a summary of what we’ve done, so far, to address wallet performance issues:
- Released zcashd 5.1.0 and 5.2.0 in July to address performance in full nodes
- Released zcashd 5.3.0 to fix a number of intermittent out-of-memory issues
- Completed most of the code updates and testing for zcashd 5.5.0, which implements fee changes. The zcashd 5.6.0 release will provide functionality that allows mobile wallets to support the ability of users to spend funds without a full wallet sync.
- Completed a portion of the back-end work required to support the next release of the iOS and Android SDKs, which will include the first phase of an improved sync capability.
Exiting Emergency Mode
Our top priority is ensuring users can access and spend their ZEC (Zcash coins). This is fundamental to our mission of economic freedom and a requirement for real-world private digital cash.
Speed and reliability are also critical to Zcash user experience, so we’re building updates that will allow users to receive and spend new incoming funds faster,** and we’re implementing features that provide visibility on syncing progress.
Only after these capabilities are delivered — and when we’re confident that wallets are not being impacted by frequent crashes or inconsistent behavior — will we consider exiting Emergency Mode and widening our focus to include other initiatives.
The table below represents an estimated release schedule to address the wallet syncing issues. Each release is slated for delivery within a half-month window to allow for dozens of inherent dependencies. Interim releases may occur based on specific requirements or dependencies throughout this process. Version numbers listed may also change based on emergency or other unplanned impacts.
It’s important to note that after these releases are made available, third-party developers may need a number of days or weeks to implement and test.
|First half of April 2023||zcashd 5.5.0||A transaction-fee structure change based on overall size (inputs/outputs) and frequency of transactions (ZIP-317) will make attempts to spam or flood the network with txs much more expensive and unlikely. Mobile wallet users sending regular single recipient transactions will not be affected by this change.|
Fund availability improvement will provide the ability to spend funds before a wallet is fully synchronized.
While this release will have no immediate positive effect on the wallet user experience, this is a necessary step toward exiting emergency mode.
|Second half of April 2023||lightwalletd 0.5||Partners currently running lightwalletd servers will need to apply this update to allow the future SDK capabilities to properly function and deliver an improved user experience via the mobile wallets.|
Supports future zcash 5.6.0 update.
|Second half of April||ECC prototype wallet||This initial version of the app is being developed with a minimum feature set as a test platform to validate current Zcash functionality and serve as a prototype for future feature development.|
Initial distribution will be limited with a broader product launch later in 2023.
|Second half of May 2023||zcashd 5.6.0||DAGSync capability, which will enable fast sync and scanning of the blockchain|
Users will not see the changes to the UX until the SDK update 0.6 (outlined below) goes out.
|Second half of May 2023||Mobile SDK updates 0.6 (iOS & Android)||This update will include support for third-party app access to fund availability and improved sync capabilities.|
Once this update is live, it will be up to the individual wallet developers to integrate the new features into their application, which will enable users to access their funds without issues and improve the overall Zcash user experience. This will end the emergency mode.
* Based on community feedback, Ywallet has been working well and appears to be unaffected by high transaction load on the network.
** The speed benchmark we’ve set for downgrading from emergency mode is that a typical Zcash user can receive and spend funds at a rate of a month’s worth of transactions in one hour. This is not a perfect measurement (use cases can vary wildly), nor is it our end goal (we know a great user experience demands more), but we believe it’s important to set a reference goal for internal and community alignment. Future speed improvements will be planned once the critical issues are resolved.