Zcash Wallet Community Developer 2024 Q2

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 )

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 Zero

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

I’m currently able to initialize a Ledger wallet with Zingo CLI as it can be shown on this X post celebrating this milestone!

7 Likes