Choosing a wallet

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.

Creating a new wallet

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.

Selecting an existing wallet

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.

Wallet storage formats

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:

  1. Unpassworded: The saved wallet file was just the direct text of the JSON format. Anyone could open the file in a text editor and see not only the private keys, but also any seed words for that wallet.
  2. Password with key encryption: The saved wallet file was the direct text of the JSON format. However the most critical data like private keys and seed words was encrypted with the password.
  3. Password with file encryption: The saved wallet file was completely encrypted with the password. In addition to this, critical data was also encrypted according in the same way as basic passworded wallets.

Migration

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.

Wallet encryption

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.

Privacy

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.