Hello friends, how you doing today?
So, I noticed that recently many old zcash users are having some trouble recovering their funds from Zecwallet lite.
I know recently, the user @emersonian released a zecwallet-lite fix with working servers and high transaction fee.
But now with the Nu6 activation, I believe even his version is outdated.
The user @Edicksonjga invited me to a group discussion about recovering ZECs from ZecWallet, and since I have a good experience with zecwallet codebase, I decided to do some more fixes and updates.
Backend fixes:
- Support for Nu6 branch id / tx version.
- A naive implementation of proportional fees (zip317).
- Minor changes on grpc connector.
- Some UAs causes the lib to panic (unwrap on None), so I added an error handling code.
Frontend fixes:
- Fixed “Export all private keys” menu item (sapling and transparent, no orchard)
- A small synchronization logic change.
- Added a field on recovery screen, that allow the user to determine how many addresses to generate before synching.
Screenshots:
If the user has a zecwallet-light-wallet.dat
file, the wallet will start the sync process:
If the user wants to recover a wallet, now they can inform the number of addresses to recover:
Example of a successful transaction:
Export private keys screen was fixed, displaying private key and address:
Drawbacks and issues
- Naive zip317
- While the code works, the implementaion is solely based on number of input and output notes.
- Since we don’t know the fee before selecting the notes, the front-end doesn’t display the fee to the user. The fee will be automatically deduced from the sent amount.
- I don’t have time, incentive, or even the knowledge to do a proper implementation.
- gRPC fails
- Sometimes, specially with large number of addresses, the grpc connector will fail, making the sync process even slower.
Even though every test I did (send sapling, send orchard, send multiple notes, send mixed notes, send with change, send all) worked, I cannot guarantee it will work for everyone.
Source code
The source code is available here: GitHub - james-katz/zecwallet-lite-nu6
I still don’t know if i’m going to release binary / executable files, even though I have some degree of trust by the community, I don’t want to encourage anyone to download random wallets they find online, promising to “recover your funds”. This could be a bad precedence.
But I’ll be more than glad to discuss the code, for anyone who wants to understand what I did, and help compile the code from source, if anyone has any interest in this project.
If anything, I just learned a lot about Rust and librustzcash
(though a pretty old version).
That’s all, bye