ElectrumSV and seed-based wallet restoration

I have a memory of Craig Wright saying something like seeds were bad and people should just backup their wallet file — or something along those lines. At the time, I thought he was being a little extreme, but as time passes I have come to believe that the expectation that seeds can restore a wallet using only the blockchain and the wallet’s seed words, is a leftover fallacy from Bitcoin Core.

Bitcoin Core fallacies

You already know, or are soon going to be confronted with the first real open frontier of Bitcoin development — on Bitcoin SV. If you cling to the Bitcoin Core fallacies, you are probably going to have to write and maintain your own tools. Wallets and applications with any real future on Bitcoin SV cannot be designed around them.

Bitcoin addresses

If as a user you ever see a Bitcoin address, whatever you are doing is more than likely being done badly. If you ever have to use a QR code with a Bitcoin address in it, whatever you are doing is more than likely being done badly.

The network is the source of truth

Because there was no payment infrastructure, there was an expectation that you could be paid on any address you ever gave out. So a wallet had to monitor all the addresses you might ever have used, and obtain any transactions for payments that others make to them whenever they happen.

  1. Receive notification that one of it’s addresses had spend or receive activity. The wallet then went away and fetched the transactions it did not have, which generally meant the same ones that had been sent to the network and discarded seconds before!

Seed-based restoration

The way that seed-based restoration works is that eventually when you manage to guess the right derivation path, and you’ve found where your wallet usage was, the new wallet enumerates the receiving and change addresses. It keeps on enumerating addresses until it finds 20 consecutive addresses which have not been used in any transactions. At that point it considers the wallet fully restored.

The limitations of seed-based restoration

Let’s look in a bit more detail why seed-based restoration will not work.

Future ElectrumSV usage

At this point you should realise that ElectrumSV can no longer support seed word based restoration, without choosing to stay a useless Bitcoin Core wallet that cannot do the interesting things happening and coming on the Bitcoin SV blockchain. But let’s look at how the wallet experience will change.

Creating a new wallet

We will no longer show or allow the user to copy down a seed when they create a wallet in ElectrumSV. The wallet creation process will instead just ask for a password and for it to be confirmed (unpassworded wallets will no longer be possible), and then the wallet will be created.

Restoring an older wallet

We will of course allow people to import their seed words into an ElectrumSV wallet, and we will give the ability to scan the addresses. This will even eventually be superior to how it is currently done, but we will warn the user strongly that they should only be doing this for historical wallets, and even then it is risky.

Wallet backups

With seed-based restoration no longer being an option, our users will need ways to keep their wallets backed up. This is no problem, the simplest solution to begin with is to do regular wallet file backups. And we can even do simple incremental journaling of changes that have not been applied to the last file backup, so that every wallet change can be reapplied to that file if the need arises.

Summing up

With the Genesis upgrade, Bitcoin SV is no longer broken like Bitcoin Core and Bitcoin Cash are. People will be able to write smart contracts, and with the removal of the standard transaction rules, no longer be limited to P2PK, P2PKH, P2SH and bare multi-signature transactions. There will be no way to say for this sequence of keys these are the transactions I am looking for on the blockchain. It will be impossible for seed based restoration to work the way it currently does. It will simply fail to find your wallet activity.

ElectrumSV developer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store