Hello Everyone!
Apologies for the delay. It’s been a very busy milestone! This milestone took more time than expected, since it had a lot of external dependencies and unknowns. That’s the grantee’s life, sometimes you underestimate dependencies or efforts and things take a bit longer. The important thing is to keep working and get through the bumps on the road!
Executive Summary:
Deliverable 3.1 Was refocused to FROST instead of ZIP-315 since that work is already in the hands of ZIP editors and it’s started to be implemented by ECC on the Rust crates. Brings orchard support FROST UniFFI SDK. The librustzcash and Orchard crates now have a FROST feature so that the FROST crates don’t depend on forks of those crates and can be advanced with the rest of the tech stack. For deliverable 3.2 I attended Z|ECC where a lot of good and necessary discussions took place representing the community and wrote a series of chronicles on Free2z. Finally for Deliverable 3.3 development work for bringing Shielded Zcash Ledger support to Zingo CLI which will finally enable Zingo PC and other platforms to also support it. This work is necessary because Zondax and Ledger agreed on deploying the Shielded Zcash Ledger App on Zondax’s fork of ZecWalletCLI and Lite. I grabbed the barebones PR from Zondax into ZingoLib and brought it back to life, updated it’s codebase and was able to initialize a Ledger wallet with Zingo CLI as it can be shown on this X post
Full report
Deliverable 3.1:
Orchard support for FROST SDK
Status: Delivered (pending PR reviews)
The FROST crate is agnostic of the protocol payment. In order to be able to use FROST for payments it has to be articulated with Orchard Keys and their generation as it is explained in the “Frost Book” published by ZF. Technical Details - The ZF FROST Book
Achievements:
The Orchard crate has a deliberately opinionated API to handle keys. This is very good because mishandling keys is the main reason why someone can lose funds. It’s important that wallet developers can’t shoot themselves in their feed by wrongly handling Orchard Keys with a public API that is “too vague” or “too permissive”. This means that in order to maintain this good practice of the Orchard crate but still be able to accommodate FROST requirements. For these I spoke to Orchard, librustzcash, FROST crates maintainers to agree on how we would handle all the missing pieces. Also, credits to @conradoplg for creating this issue to track some of the needed changes API changes required for FROST · Issue #430 · zcash/orchard · GitHub. How we shape these changes will end up in ZIP-312 and some of them are already in flight. [ZIP 312] Key generation by str4d · Pull Request #883 · zcash/zips · GitHub
I presented the FROST UniFFI SDK project to the FROST Implementers group where Conrado from ZF and Luke from SeraiDEX and other developers presented their advances on FROST.
Details of the tasks
(all tasks of the milestone can be found here ZWCD Q2 2024 - 2 Milestone · GitHub )
task | link |
---|---|
Orchard Crate unstable-frost feature and allow “spend validating key” to be created from bytes. | Allow SpendValidatingKey to be constructed from bytes by pacu · Pull Request #428 · zcash/orchard · GitHub |
Allow creating a FullViewingKey from a given SpendValidatingKey | Allow creating a FullViewingKey from a given SpendValidatingKey by pacu · Pull Request #432 · zcash/orchard · GitHub |
Allow Orchard-only UFVK be created from an Orchard FVK | [#1477] Allow Orchard-only UFVK be created from an Orchard FVK by pacu · Pull Request #1478 · zcash/librustzcash · GitHub |
Orchard FFI work | GitHub - pacu/frost-uniffi-sdk at orchard |
Deliverable 3.2:
Z|ECC Summit + debrief for the community
Status: delivered
I attended the Z|ECC summit and wrote these chronicles.
Z | ECC Diaries Day One - All of these men are dead
Z | ECC Diaries Day two - Part One: “Who likes Zcashd?”
Z | ECC Diaries Day Two - Part Two: Overcoming our Reputation(al damage) Era
Z | ECC Diaries Day Three: you cannot build a new economic system on a transparent ledger
Deliverable 3.3:
Hardware Wallet (ledger) Support other wallets (ongoing)
Status: ongoing
The Ledger release cycle is complex on its own and it is piling on to the inherent complexity of supporting shielded Zcash on Ledger devices. I dedicated some time to determine the current state of this development given it being a long living effort with its (somewhat) known that sometimes it went forward and some others backwards.
I met personally with Juan Leni, CEO of Zondax and the developers in charge of this project to know the specific blockers on this project. Also met with Zingo folks and coincidentally because we were all attending the same conference event we could get all together to discuss a path forward. This would have taken many hours of conference calls but smother thanks physically being in the same place.
Zondax is committed to release the HW wallet support on Zecwallet lite according to what they have agreed with the hardware manufacturer. We will work profusely on making a transition to Zingo PC. For this several steps have to be taken. Some of those steps Zondax has discussed with librustzcash maintainers, but I estimate that given the tight schedule that team is working in other higher priority task like deprecating zcashd and zcashd wallet there will be a lot of work that they won’t be able to accommodate and myself and probably others could contribute to in order to get a more stable, actively maintained and modern zcash wallet to support ledger hw wallet and finally going past the Zecwallet problems
I met with Zingo folks to follow up on what I had scrapped from the surface on what is needed to support Ledger on Zingo Pc after Zondax goes live with Zecwallet-lite. And that the roadmap could look like this if there’s consensus for it:
Track A: Ledger Release process | Track B: Migration to Zingo PC |
---|---|
Zondax implements Ledger app | |
Integrates into ZecWallet-Lite | Zondax starts migrating from zecwallet-cli to zingo-lib |
Ledger Approval / change request cycle (we are here) | Zingo-lib development to support ledger (Pacu, Zondax and Zingo) |
Zondax replies changes if so | Zingo-lib development to support ledger (Pacu, Zondax and Zingo) |
Zcash Ledger App Released with ZecWallet-lite | Zingo-lib development to support ledger (Pacu, Zondax and Zingo) |
Zcashers can use Zondax’s Zecwallet-lite version | Zingo-PC development to support ledger (Pacu, Zondax and Zingo) |
“” | Zingo-PC testing (Pacu, Zondax and Zingo) Least authority Audit of Zingo PC |
“” | Audit fixes if so |
Deprecation of Zondax fork Zecwallet-lite Following wallet EOS/EOL draft zip | Press F for Respect for ZecWallet Lite |
I opened some issues in the zcash-ledger-app repo to track these items
- [Feature Request] Don't ask users to confirm non-visible FVK information · Issue #34 · Zondax/ledger-zcash-rs · GitHub
- "Send NF?" approval after creating address or sending ZEC. · Issue #35 · Zondax/ledger-zcash-rs · GitHub
I’m currently able to initialize a Ledger wallet with Zingo CLI as it can be shown on this X post celebrating this milestone!