Requirement Specification to build Zcash Wallet

I am interested in building a secure storage hardware backed Zcash wallet that supports shielded transactions. More precisely, a wallet based on the Zcash reference wallet announced here
The link above has links to zcash code but not the backing requirements. I am looking for some documentation that lists the requirement specs for a Zcash wallet. Can anyone help me out with a link or a document?
Thanks!
Shenoy

3 Likes

Hi,

Welcome to the forums. :slight_smile:

I am not 100% sure of the requirements you are after. Are you trying to make a bespoke device that uses shielded transactions? like a tezor or whatever. Or are you trying to build the network diagram?

Does this help?

Or are you after the technical specs of the machines needed in the process?

I looked at hardware wallets back when sapling was launched, feel free to pm me. (a lot has changed since then though, and someone beat me to the punch on getting running on a pi.)

1 Like

Hi Steve,

Sorry for not making my intent clear.

Yes, I am trying to put together a proposal for a secure element backed mobile wallet.

Our interest is in mobile user agents for Verifiable Credentials. I see Zcash as an application of VC.

I figure if I can get my hands on the requirement specs backing the components of the reference wallet implementation it will help me in hardware/software partitioning and help me spec out the hardware capabilities. For instance, what crypto capabilities should this hardware subsystem have to support Zcash shielded transactions.

Best,

Shakti

1 Like

Reposting from Rocket.Chat:

See [ZIP 305] Best practices for hardware wallets supporting Sapling · Issue #346 · zcash/zips · GitHub for the list of things you’d need to make this work. The most important part is support for the Jubjub curve, to derive keys and make RedJubjub signatures. Our new jubjub Rust crate supports no_std for embedded use cases (and is faster than the implementation we currently use), so may be useful depending on the specs you are looking at. I’ve used it to create RedJubjub signatures on a Ledger Nano S (though that was really pushing into stack space limits, so a larger Secure Element would be useful if you were going that route).

3 Likes

Got it. Thanks. This is very helpful.

Best,

Shakti

1 Like