Provisional in-wallet help
This page allows you to either create a new wallet or select an existing wallet to load. If you want to create a new wallet, click on the button provided for that purpose. Otherwise, if you want to select an existing wallet there are a range of ways you can do this.
On choosing to create a new wallet, you will be first asked to select where it will be located and what it will be called. After doing so, you will then be asked to provide a password for the wallet — while in the past it was possible to have a wallet without a password, this is no longer supported. Finally, the new and empty wallet will be created and this wizard will close and the wallet user interface opened.
New wallets require their user to create an initial account before they can be used. For now, a wallet can only have one account, but when the wallet user interface has been redesigned to support multiple accounts this restriction will be removed.
Whichever method you use to select an existing wallet, depending on what that wallet is, there are several things that might happen. If the wallet storage is the latest one required by this version of ElectrumSV, then it will be opened. If it is an older storage format, then it required going through a migration process to update it, before it can open.
As of ElectrumSV 1.3.0, the wallet storage has changed from a JSON file to a database file. There are numerous reasons for this change that will not be documented here. Versions 1.2.5 and earlier use a JSON file. Versions 1.3.0 and above use a database file.
There are three different ways in which a wallet in the older JSON format might work:
The specific subject of wallet migration is not covered in this document, you can read about that if you are on the wallet migration wizard step. However, what the wallet selection process will ask you to do before proceeding to that step, depends on your wallet's format.
Unpassworded JSON wallets will require the user to provide a password, before migration is attempted. The password will be used to encrypt keys in the database, that were not previously encrypted in the original JSON wallet. Passworded wallets will require the user to provide the JSON wallet's existing password.
The naive way the wallets were stored using JSON was problematic, but because it was naive it allowed a simple encryption of the entire wallet file as part of the process of writing all the wallet data to disk. As long as no-one really used their wallets much, and they didn't create many transactions this was fine and it was workable.
With Bitcoin SV, a user may decide to store all their data on-chain. To continue to use the JSON files, would mean that potentially gigabytes if not terabytes of data would need to be loaded and decrypted every time the wallet was used. And it would all need to be encrypted and saved every time the wallet was exited.
For now the new database wallet files use key encryption. This is where only critical private key-related data like actual private keys or seed words, are encrypted in the database. We did prototype full privacy, but it complicated things to the point where it was unlikely we would ever make a release. So we stepped back and did what was feasible.
One concern about there no longer a way for wallets to have full encryption of all data, is that the balance, transactions and other data can be viewed if someone has access to your computer. However, if someone has access to your computer this is of less concern than their ability to run software that may extract your private keys when you access them — something that can be done regardless of full on-disk encryption of a wallet!
If a user really wants full privacy, and full on-disk encryption of their wallet they have two options.