fyi, that’s also in ywallet
(@ceb9ceb4ceb9cf89cf84 This live iso is non-persistent for strong opsec but it is pretty easy nowadys to create a live Linux iso that is persistent. )
It’s documented.
Hi hanh,
I’m reaching out because you’re one of the few people who deeply understands both Zcash protocol internals and Ledger integration.
My situation:
-
Device: Original Ledger Nano S (functional, PIN known)
-
Amount: 100 ZEC (~€40,000)
-
Address: t1ZsfDa4kpk8aYjffUgv149suF2i54hLH4P
-
Transaction date: May 25, 2018 — one month BEFORE Overwinter activation (block 347500)
-
Problem: Pre-Overwinter UTXOs (v1 transaction format)
-
Critical issue: I lost my 24-word recovery phrase
What I’ve tried:
-
Ledger Live + standard Zcash app →
bad-tx-consensus-branch-id-mismatch -
Zondax ZecWallet + Zcash Shielded app → syncs but doesn’t find 2018 UTXOs
-
Contacted Zondax → they confirmed no solution for pre-Overwinter format
-
Contacted Ledger support → they confirmed Zkool solution requires Nano S Plus (Zcash Shielded app on Nano S doesn’t support NU6)
The core problem:
-
Zkool + Zcash Shielded can recover old UTXOs (v1, v2, v3), but only on Nano S Plus/X/Stax
-
Original Nano S has old Zcash Shielded version that doesn’t support NU6
-
Without seed, I can’t migrate to a newer device
-
The private key is locked inside the Secure Element
My question:
Is there ANY technical path to spend pre-Overwinter transparent UTXOs from an original Ledger Nano S without the seed phrase?
I’m thinking:
-
Modified Ledger app that supports v1 transaction signing on Nano S?
-
Some way to use the old Zcash app (not Shielded) with correct branch ID?
-
Any other approach I haven’t considered?
I am willing to fund development of a solution — up to €40,000 (the value of the locked funds). If you’re interested or know someone who could help, please let me know.
Thank you for your time.
Best regards, Andrey
Yes, it should be possible to compile the ledger app for nano S. Even if Ledger doesn’t support it, the code itself should build. I wrote the PR, so all Ledger did was release it on Nano S+.
Then you can sideload it on your Nano S. AFAICR, it doesn’t require a device reset.
That’s the critical part. I don’t remember it for sure but I believe that’s the case.
Then zkool will work and make your tx.
Thank you! This is great news.
Could we continue this conversation via private message or email? I’d like to discuss the technical details and possibly compensate you for your help with the build process.
What’s the best way to reach you directly?
@hanh I have a similar problem, but luckily I do have the seed phrase. Does Zkool suport scanning for pre 2018 transparent addresses? Small note, I might have to increase the gap limit to find the right addresses, is that supported by Zkool?
Does Zkool suport scanning for pre 2018 transparent addresses?
Yes
Small note, I might have to increase the gap limit to find the right addresses, is that supported by Zkool?
Yes
@Zkool. I did see the option to enter the birth block for the wallet, but I could not find where to change the gap limit. Awesome work, this is the wallet I have been searching for all day! I also found the zebra node rather impressive, just a pity that is so hard to find information on how to connect a wallet to it and which wallet to use. To many ‘scammy’ website makes it hard to find true information on Zcash. This forum appears so far to be the best source of information.
We have a wallet page here you may find useful. More info to check out as well ( tutorials / wiki / research )
When you create an account, it asks you to scan for additional transparent addresses. You can enter the gap limit then.
@hanh Thank you, I did not get the screen last time, I think because I did not select “Restore Hardware wallet”.
This time I did select it and did get the option to change the gap limit.
What I find strange is that when I click on “Run”, the pop up screen stays and in the left bottom corner the wallet I directly get the message “Scan completed”. Changing the Gap Limit does not change this behavior. To remove the pop up I can only click Close. Is this behavior as it should be? I only tested the wallet on Windows 10, so I can try on a Linux machine if this should solve the issue.
I tried with a different mnemonic and restarting the wallet, the issue stays the same.
When I click “Close” automatically it sets the birth hight or scan hight to 419200, I think the block where the Sapling network upgrade was made. Since I am looking for older outputs, it means the wallet will not find them.
I tested with not select H/W Ledger, in this case the issue does not arise. It appears this is a bug that only appears when restore from “H/W Ledger” is enabled.
I just finished testing it on Linux using flatpack, it has the same specific issue when selecting restore from H/W Ledger.
Unfortunately that does mean I cannot access these old funds for now until the issue has been fixed. If an older version of the wallet does not have this bug, let me know. Thanks for all the help so far and for developing this awesome wallet.
It is not a hardware wallet. You are restoring from seed, aren’t you ?
I get your point. I thought I needed to select this option since Ledger might have used a different derivation path for Zcash. But it is literally for when you connect a hardware wallet, my bad
.
Thanks to this awesome wallet I just recovered part of my Zcash.
Small feedback on the wallet,
-
When selecting max amount in the wallet, the fee is not taken into consideration, meaning you get a “not enough funds error” when sending, stating the missing amount. Not a big problem, after seeing that error I just subtracted the missing amount assuming it was needed for fees.
-
I see that “light node” is enabled by default in the wallet. However, when I disable it, I do not know how to connect my own node. Or is there perhaps a node started in the background without my know, not sure. Would be nice to get some information when you de-toggle “light node”.
For a second batch of outputs I want to recover (another account), I first get an error about the need for additional funds (fee needs to be extracted), however even when subtracting it I get the following error (see below). I kept on decreasing the amount I send to free up more for thee well beyond 5000 Zats, so fart without success. Meaning I am stuck on this error:
I think the root error is still that the fee is not calculated and subtracted from the total amount.
- The trick is to choose MAX amount and then in the next page select “Receiver pays fees” (or something like that). It will automatically deduct the fee from the amount, but Check the amount on the tx output is ok on the transaction confirmation page. If you have many small inputs, it may not be worth using them. You pay 5000 zats per input. So check the actual fees.
Payments | Zkool Documentation - Zebra? You put the URL of your Zebra RPC endpoint (ask AI if you don’t know).
Thanks, now I finally understand where the receiver pay fees stands for, quite logical actually. However, at the same time I think in case of max send, why toggle receiver pays fees automatically, would automatically lead to the right results.
It turned out the error was cause by sending max amount would involve too many outputs. I reduced the amounts iteratively until it worked, and then found the fee was not the issue. I could just send the remaining in a second transaction. So I think perhaps some check is needed to not exceed the max size/number of UTXO’s in a transaction and just tell the user to chop it up in a few transactions.
The amount sent has no impact on the number of outputs. I don’t see how splitting into more txs would help. Anyway, you got your funds out. ![]()


