Shielded Support for Ledger Hardware Wallets (NanoS+, NanoX)

I want to provide some background and context to the discussions that are happening in this thread.

Zondax received a grant from the Zcash Foundation to (a) develop a Ledger app (i.e. an app that runs on Ledger hardware wallet devices, enabling them to sign both transparent and shielded Zcash transactions), and (b) provide libraries that wallet developers could use to integrate Ledger support.

Zondax created the Ledger app but then hit an unexpected roadblock because Ledger requires that there must be an existing user-facing wallet that demonstrates the new Ledger app working. That new requirement stopped the grant in its tracks, as Zondax were unable to move forward without a working wallet integration.

Last year, in a bid to get things moving again, Zondax did the integration with the Zecwallet Lite desktop app. They demo’d it at Zcon3, and at the end of September they submitted a PR to add the new functionality to Zecwallet Lite.

In anticipation of that PR getting merged, and with the goal of making Ledger support available to as many Zcash users as possible, ZF asked Zondax to look into adding Ledger support to Ywallet.

I sent Hanh an email at the time (Sept 30th) to let him know that we’d asked Zondax to do this.

Aditya from Zecwallet hasn’t accepted Zondax’s PR, which leaves three potential paths forward:

  1. fork the Zecwallet Lite Desktop codebase to create a new desktop light wallet with Ledger integration, and submit it to Ledger for approval,
  2. add support for Ledger devices to Ywallet and submit it to Ledger for approval, or
  3. build an entirely new wallet with Ledger integration.

#3 seems like overkill so, in the interest of progressing #2, I reached out to Hanh (on 23rd February) to coordinate a meeting between him and the Zondax team to discuss adding Ledger support to Ywallet.

The purpose of that meeting, which took place on Monday 27th February, was:

  • to make sure that Hanh would be willing to accept a pull request from Zondax to add Ledger support to Ywallet, and
  • to figure out if there are any other pitfalls or hurdles that would need to be overcome.

(Note that Zondax have already built the Ledger app, and have already integrated it with Zecwallet Lite Desktop. The premise of the meeting with Hanh was that Zondax would do a similar integration with Ywallet, with Zondax doing most of the integration work, and relatively little effort required from Hanh.)

During the meeting, there was discussion about Hanh doing the GUI part of the integration because Ywallet uses a GUI framework (Flutter) that Zondax haven’t worked with previously, and it would also allow Hanh to retain control over the Ywallet user experience. I asked Hanh to let me know how much effort would be required from his side.

At the end of the meeting, I was expecting that the Zondax team and Hanh would continue to liaise via email to finalize who would be responsible for which parts of the integration, and that Hanh would let me know how much effort would be required from his side.

Based on my reading of Hanh’s grant proposal, it appears that the integration with Ywallet may be significantly more effort than we expected (possibly due to the fact that Ywallet supports multiple coins, which I believe makes the transaction builder element of the integration more complex than with a single coin wallet like Zecwallet).

To address the question of why only provide support for Sapling, and not Orchard: from my perspective, it makes sense to spend the minimum amount of resources and time required to get the Ledger app approved. Once it’s been approved by Ledger, we can extend its functionality with support for Orchard, Unified Addresses, and mobile devices. Ideally, we also want Zcash to be fully supported in the Ledger Live app, and add support for ZSAs when they get deployed.

Finally, I want to make something very clear. There have been multiple delays with this project, all of which were due to circumstances and dependencies that were entirely beyond Zondax’s control.

21 Likes