Thanks to a grant from the Zcash Foundation, I’ve been working on a ZecWallet lightclient for Zcash. The lightclient has:
Full support for incoming, outgoing memos
Full support for t-addresses and z-addresses (send and receive)
Downloads only a fraction of the blockchain
The CLI version of the lightclient is now ready for a private beta test! If you’re interested in trying it out, please comment below or send me a message. The beta test is:
Testnet only at the moment
Command line version only
If you like trying out beta software and don’t mind filing bugs, please help me test it out!
Depending on how the beta test goes, I think we can open up the CLI beta to everyone in a couple of weeks, and then in 4-5 weeks, you’ll see a full ZecWallet integration as well.
The CLI interface is basically a command line version of ZecWallet. It is an interactive prompt, where you can type commands like “getaddresses” or “getbalance” or “rescan” or “send” etc…, and view the output right there.
Of course, there’s an underlying RPC, but I’m split on whether to expose that to the user (Doesn’t seem very user friendly). The RPC is modelled after the zcashd RPC, but of course, not 100% compatible, because this is a lightwallet.
First test of this went really smoothly . I want to nuke my local data so I can resync from scratch, where is this data persisted (macOS) - I know I can use rescan/sync but I want to simulate running it from scratch again.
The first tx received and I got a memo, I thought lightwalletd specifically didn’t include this information. Are you handling this in a different way?
{
"block_height": 609362,
"txid": "c8d3e4cf44e8ba0da6f9355c3d83aae35b76e97a08e58148b824272b836d57bc",
"amount": 1000000000,
"address": "ztestsapling1frpfev4gv4cxzt5lwkmvu34nuurzrcxpyj4j5xeyus2t8zsa0m6sz44nnsg8qgfhqz9fv0jfqjj",
"memo": "Thanks for using zfaucet!"
}
The wallet is stored next to the regular zcash wallet in the Zcash directory , and is called “zeclite.wallet.dat”. So, on a Mac, it should be in Library/Application Support/Zcash/testnet3
I’ve also forked lightwalletd for zeclite, and added support for transparent addresses and full support for memos.
Interesting, I thought the whole point of stripping it was that the memo took up a huge % of the tx size so this greatly increases the bandwidth required?
No, it doesn’t change the bandwidth required. What happens is that when Zeclite detects that one of the Tx belongs to the wallet, it goes to the server and fetches the full Tx, and then extracts the memo from that.
This, of course, means that the server learns which Txns belong to you. I’m adding a feature where zecite will download “decoy” transactions to hide even this info from the server. (Another option is to download the full block, so the server doesn’t learn which tx belongs to you)