The amount of ecosystem development for Zcash is very encouraging. Right now I keep my Zcash in a hardware wallet, which I feel is very safe.
But none of the hardware wallets that I know of can keep z transactions in them. I notice when running a node I need at least 4GB of memory or RAMdisk to complete a z transaction.
Would it be possible to make a super-Trezor with the internal hardware required to sign z transactions?
Maybe the calculation uses flash instead of RAM? It would be slower, but it would work.
I’d like that, because then I could store my zcash in shielded instead of public transactions.
work is in progress on the internals of zcash to allow a lightweight or hardware wallet to connect to a “proving service” that does the heavy lifting, and then it signs the transaction. I don’t think it’ll make it into the upcoming 1.0.7 release, but hopefully will in a release or two after that.
For a hardware wallet to do everything for a shielded transaction on-board, it’d have to have a copy of the blockchain and a LOT of horsepower. I’ve ported zcash to the arm64 processor, used by quite a lot of cellphones, and am going to be updating it to track the 1.0.6 release and port it to Android.
That’s good news - thanks!
Follow up question:
Assuming a “proving service” were to do the heavy lifting, would it be possible to send the destination z-address to the proving service in some sort of encrypted form?
In the case of a light client communicating with the proving service, this capability would eliminate the need for the light client to trust that the proving service would preserve the anonymity of the transaction.
In the case of sending from a hardware wallet, it is likely impractical to enter the destination address into the very limited physical interface. (Although theoretically it would be nice if the malware-proof property of the hardware wallet could be extended to protect not only the private key of the source wallet, but also the anonymity of the transaction).