Hello Zcash family!
Once again I’m seeing a lot of users with problems recovering their funds from ZecWallet Lite.
Even though we advanced a lot on this regard, with ZExCavator for instance, few users are still having trouble recovering their ZEC.
One of the main issues with recovering funds from ZecWallet Lite is the way that wallet derived keys and addresses. So even if thee user has their mnemonic phrase back up, they can’t recover funds with funds were on addresses derived with ZecWallet Lite.
Roughly speaking, and the engineers can correct me if i’m wrong, Most wallets works by having 1 master key, and many diversified addresses.
ZecWallet Lite on the other hand has 1 master key, many derived child keys and 1 address (per child key).
So, this new tool can convert ZecWallet Lite style addresses to a YWallet database, that can be plugged in and used directly with the YWallet app.
While ZecWallet Lite is something like “1 account, multiple addresses”, YWallet is "Multiple Accounts, single address (actually 1 for each pool plus diversified addresses).
So each address on ZecWallet Lite is converted to 1 account on YWallet:
7 addresses are converted to 7 accounts:
Each Ywallet accounts contains 1 orchard, 1 sapling and 1 transparent address related to that child derivation index on ZecWallet lite.
On my tests, I could successfully sync and build the transactions history:
Even tough I didn’t thoroughly tested it, I believe everything is working.
How to use it?
As I said on other opportunity, even though I share a good amount of respect and trust from the community, I don’t encourage members to download software on the internet, claiming to “solve your problems”. That’s why I’m not releasing any binary or executables. But here is how to compile the source code and use this app:
clone the repo GitHub - james-katz/uzw-parser: Universal Zcash Wallet Parser
$ git clone https://github.com/james-katz/uzw-parser.git
$ cd uzw-parser/
Build and run:
$ cargo run -- --from-seed "your 24 words seed" --num-addresses 7
The --num-addresses flag takes the argument and derives that many addresses. If you remember how many addresses you had in ZecWallet Lite, input it here, if you don’t remember, take a estimated guess, this is the most important information to do right (well, I guess the mnemonic phrase is the most important, but you know what i’m saying).
OR, if you have an zecwallet-light-wallet.dat file, you can provide it to the app, and it will convert to a YWallet database:
$ cargo run -- --from-path /path/to/zecwallet-light-wallet.dat
This one does not need the --num-addresses, it will extract every key directly from the .dat file.
Using it with YWallet
Now that the app generated a .db file (default name is generated_from_zwl.db), you will rename it to zec.db and place it into the YWallet databases folder. On my linux distro it’s located on $HOME/databases/
WARNING always backup any existing db files!!!
Then start up YWallet, it should display the all the created accounts on the main screen. Last step is to go for Rescan and select your wallet birthday (if unknown, take an estimated guess).
IIRC, YWallet syncs all accounts at once, so large number of addresses/accounts may be really slow to sync to the tip.
Alternative
If you don’t like messing with CLI and databases, you can slo try this hack of ZecWallet Lite with NU6.1 and zip317 support, and with working server. Although I don’t reccomend using such an outdated wallet. My recommendations is to use it to sync and see if any addresses has fund in them, and then exporting each and individual private key.
Ok, that’s it. I really, really hope this can help users recover their “lost” ZEC.





