Send from Z address Failed. Missing witness for Sapling note

Long story short - my wallet became corrupt after updating to the Fullnode Zecwallet from Zecwallet. I attempted to restore using an older backed up wallet.dat file but none of the older addresses or funds were shown. I imported the private keys for the zaddresses I had all the ZEC in. It took a while and a few tries but eventually the wallet showed the addresses and coins again in the wallet. I also did zcashd -rescan and -reindex throughout this process.

I’m now having an issue where the ZEC in those two zaddresses aren’t able to be sent and just give this error: “Missing witness for Sapling note”

I’ve tried reindexing, rescanning, redownloading, using a backed up wallet.dat file and importing private keys, using a new wallet.dat file and importing private keys. No matter what, I get the same error. It actually worked for one of the addresses for a little while (sent small amounts). After I closed and re-opened the wallet though, it gave an error about the database on start up and I had to reindex and then it stopped working and both addresses give the same error. I still have older wallet files and the private keys but nothing seems to work and each time I have to reindex or redownload, it takes days to complete with the same result. Any idea what the cause of this error is or what I could do to resolve it?


I would recommend using Zecwallet Lite instead of the full node version, because the Lite client can both (1) backup and recover the entire wallet using just the seed phrase and (2) Do a full rescan in minutes instead of days.

There is currently a bug in zcashd that you seem to be running into (zcashd assertion failure CopyPreviousWitnesses() Assertion (nd->witnessHeight == -1) || (nd->witnessHeight == indexHeight - 1) · Issue #4301 · zcash/zcash · GitHub). I’d recommend creating a new Zecwallet Lite client to get a new z address, then reindexing your full node one last time and then sending all funds to the lite client address, and switch over to using that one.

Thanks for the response. I already created a ZecWallet Lite wallet to take advantage of that but as of right now I’m unable to send funds from the old wallet so they’re all stuck there until I can work around this error. I’ll look more into that zcashd issue and hopefully can get it resolved soon.

For anyone else who has this issue, the solution I found was to update to the latest Zecwallet Fullnode v0.9.12 (zcashd v3.0.0), rename the old wallet.dat file, start zcashd and allow it to create a new wallet.dat file, then import the private key for the address. Once I did all that, I was able to send the funds out of ZecWallet Fullnode without any isues (for one of the addresses at least).