Dear Zcash community,
I present here our proposal to finalise the last steps towards public release of a Zcash Ledger App with Sapling support and 12 months of maintenance.
Official Shielded Support for Zcash in Ledger HW Wallet
Official Public release of Zcash Ledger app w/ Sapling support and 12 months of maintenance.
Zondax developed a Ledger app with Sapling z-address support as part of a Zcash Foundation grant. However, the grant didn’t cover pending steps that are required by Ledger for the official release. This proposal aims to complete this integration.
We have received funding for the development of the application from ZF but it didn’t cover the work that is being described in this proposal.
Experience and repositories
Zondax is a growing and distributed team with experience and projects for more than 50 blockchains. Zondax has been contributing to the Blockchain ecosystem since 2018-2019. The team has received and completed a large number of grants and currently maintains most Ledger apps for the ecosystem (+30). Our team includes experts in most blockchain aspects, cryptography and programming languages.
Most of our contributions to the blockchain ecosystem can be found in our GitHub organization: https://github.com/zondax
We have experience in the review and release process by Ledger and have a streamlined workflow to simplify this. Zondax has successfully delivered over 30 Ledger Nano App projects https://docs.zondax.ch/ledger-apps/overview and 4 Ledger Live integrations that are either publicly released or currently under security review.
License: Zondax source code will be delivered under Apache 2.0 License and/or MIT License (this is also required by Ledger). Deliverables will include source code, unit tests, continuous integration, and integration tests.
Zondax developed a Ledger app with Sapling z-address support as part of a Zcash Foundation grant. More recently Zondax upgraded the app, improving its application structure, refactoring it and adding support for new Ledger Devices (Ledger Nano S plus) and completed integration with a fork of the Zecwallet Lite Desktop wallet for demo and testing purposes.
We’ve been diligently working on this application for a while now, encountering various obstacles and external blockers along the way. We are currently at the final stages of preparing for the official public release, and we are seeking this grant to complete the remaining tasks that have emerged due to recent updates in both Ledger’s requirements and the latest changes in Zcash.
Our main goal is to help make the Zcash Ledger application with shielded support publicly available through an official release by Ledger. What we already have accomplished:
Development of a Ledger app with sapling support, available under: https://github.com/Zondax/ledger-zcash
Full integration with latest Ledger SDK and Ledger Stax device
Fork of Zecwallet lite https://github.com/Zondax/zecwallet-light-cli to fulfill Ledger requirements to initiate a submission.
To accomplish this we need to add support to ZIP317 fees, have a security audit executed by a third party partner approved by Ledger SAS, and demonstrate we will maintain the application for at least 12 months.
Zondax source code will be delivered under Apache 2.0 License and/or MIT License (this is also required by Ledger). Deliverables will include source code, unit tests, continuous integration, and integration tests.
Technical Approach: Dive into the how of your project. Describe your approaches, components, workflows, methodology, etc. Bullet points and diagrams are appreciated!
Agile methodology + streamlined coordination process with Ledger towards public release.
CI testing and continuous integration.
Phase 1 - Final steps towards public release
M1 - Adding support for ZIP317
We need to update the embedded app and our fork of Zecwallet Lite to support ZIP317 fees. ZIP 317 was adopted after we developed the embedded app and forked Zecwallet Lite. Without this work, Ledger won’t be able to test the new embedded app (because the shielded transactions will probably not get mined).
M2 Security Audit by one of Ledger’s approved audit partners.
We will coordinate an external security audit, and execute any relevant fixes. The external auditor will be selected from a list provided by Ledger SAS.
Phase 2 - Maintenance and Support
M3 - Technical support & maintenance of embedded Ledger App for 12 months
During this period we will maintain the Ledger App covering the following areas:
Ledger SDK or firmware upgrades that affect the application
Device support for Ledger Nano S Plus, Nano X and Stax
Security fixes related to Ledger SDK layers
Repository and issue monitoring and triage
Resource availability (ensure internal training in your chain, rotation of resources, etc.)
Analysis and early warnings in the case of known security issues that may affect the application
Early warnings and prioritization in the case of urgent issues or vulnerabilities
Periodic coordination with Ledger
Note* This does not include development of new features or upgrades to new protocols or the cost of additional security audits.
We will also take responsibility for maintaining our fork of Zecwallet for 12 months after we submit the application to Ledger. While our team would be interested in continuing to maintain the fork beyond this period, that is not within the scope of this grant. By maintaining the fork for 12 months, the team is committing to ensuring that the modified version of Zecwallet Lite Desktop continues to work properly and can be used with the Ledger Nano App during that time.
M4 Documentation of the integration to support other Zcash Desktop Wallet teams
At least x2 blog post explaining step by step the integration process
Support via slack channel for up to 60h
Dependencies: What external entities is your project dependent on? What involvement is required from ZF, ECC, and/or other external organizations? Who would have to incorporate your work in order for it to be usable?
This proposal aims to reduce our dependencies on external organizations. Additionally, by adhering to Ledger’s recommendations and conducting an external audit, we expect to expedite our review and release processes. While we still rely on Ledger for the release, we are confident we can complete this project.
Execution risks: What obstacles do you expect? What is most likely to go wrong? Which unknown factors could jeopardize success? Who would have to incorporate your work in order for it to be usable?
We already possess extensive experience in developing apps for Ledger. In the past, one of the obstacles we encountered in achieving an official release was our dependence on an external party to merge changes on the web wallet side. Fortunately, we no longer face this hindrance as we will be using our own fork of Zec wallet, eliminating this dependency.
While we still rely on Ledger for the release, we expect to significantly reduce our risks by leveraging our existing relationship with them and by taking over the full integration process.
Unintended Consequences: What are the negative ramifications if your project is successful? Consider usability, stability, privacy, integrity, availability, decentralization, interoperability, maintainability, technical debt, requisite education, etc.
The community has been expecting this for already long time, it will bring numerous benefits.
Evaluation plan: What metrics for success will you share with the community once you’re done? In addition to quantitative metrics, what qualitative metrics will you commit to report?
Official public release of the Ledger App Public release of the Ledger App (Nano S+, Nano X, Stax) , SDK and firmware upgrades of the app during the maintenance period.
Only time and materials for the development have been considered. Zondax has already provided its employees with licenses, software and hardware.
Zondax AG runs its own infrastructure in a Datacenter in Zurich. The costs of the infra is already considered in the project/hourly rate.
Services include implementation, development, integration, infrastructure costs, external audit costs and coordination. Zondax AG will receive all payments and pays its employees on a monthly basis.
Update of Zecwallet Lite and Zcash Ledger App to support ZIP317 fees.
Zcash Ledger app with Sapling support including the necessary fixes resulting from the audit
12 months of maintenance of Zcash Ledger App
x2 blog post explaining step by step the integration process
Support via slack channel for up to 60h
Timeline has been determined based on previous experience with development, effort estimation and experience of the team. Given that we do not know the initial start date of the proposal, timeline is approximated. We will be able to work on some of these Milestones in parallel (support for integration of other wallets can start as soon as the app has been submitted to Ledger) M1 is expected to be completed in 2-3 weeks M2 is expected to be completed in 3 weeks M3 consists of 12 months of maintenance work M4 will take between 6-8 weeks.