Wallet creation
Onboarding #
During their research, Bob and Alice came across an interesting application that looks like it fits their needs. It’s a mobile application specifically designed for long-term bitcoin custody. Alice and Bob each download the app on their phones and get started.
After downloading the app, the app walks the users through the purpose of the product and highlights some of the most important features.
Wallet creation #
After going through the app onboarding flow, Bob and Alice are ready to create their savings wallet. The wallet creation flow consists of three main tasks:
- Configure the wallet
- Import the signing keys
- Review and finalize the wallet
Try out the prototype below. It covers the entire wallet creation process.
Step 1: Wallet configuration #
The first is the wallet configuration, where Bob and Alice define the rules for how the wallet should work. In the second part, they add all the signing keys.
Creating the primary key set #
Bob starts the wallet creation process on his phone, while Alice will use the app on her own phone to add her signing key. The app gives them a choice between two of the most commonly used wallet types: a standard, single-key wallet or a 2-of-3 multi-key wallet, which is suited for larger savings.
There is also a third option that allows users to create their own custom setups. But Bob and Alice choose the multi-key approach.
Enabling the recovery path #
After configuring the primary key set, the app asks the users whether they would like to enable a recovery path. We have covered this in the time-based reference design as well. Here we show an alternative design option for this same feature.
We could also call the recovery path a recovery key set, since it technically is just that. However, the point of the recovery path is that we want to use the same keys that are used in the primary key set. To make this distinction more clear, we treat recovery paths as a different feature from alternative key sets in our application. You might want to take a different approach in your own application, based on your specific user base.
Creating the inheritance key set #
After enabling the recovey path, the app offers users to create a dedicated inheritance key set. This works in more or less the same way as for the primary key set.
The main exception is that the inheritance key set should only be unlocked after a certain amount of time. After choosing the appropriate key set type, Bob is prompted to define the rules under which the key set should be unlocked.
Step 2: Adding the signing keys #
The wallet is now fully configured. What is left to do is to add the necessary amount signing keys. Adding a key technically means that users have to import the extended public key (XPUB) from each signing device that should be used to sign transactions.
Adding the primary keys #
This sounds more complicated than it actually is. Depending on the specific signing devices that are being used, it can be as simple as scanning a QR code, connecting it via NFC or Bluetooth, or by using a USB cable.
Bob adds the first two keys #
Bob gets started and imports the first two keys by himself. One from his personal Trezor and one from a Coldcard that he shares with Alice.
Bob requests the third key from Alice #
Next, it’s time to add Alice’s key, which will be imported from her Bitbox. Our app makes this process easy, because Bob can just create a key request that Alice can scan with her phone. Alternatively, he can also send it to her via a secure channel.
Alice imports the key from her signing device #
Alice has also downloaded the app, so she taps the big plus button on the homescreen and selects “provide a key” from the menu that pops up. On the next screen, she chooses to scan the key request. After doing that, the app displays the wallet configuration. Alice sees that her key will be used in the primary key set. She taps “provide key” and the app takes her through the same process like Bob.
Alice provides her key to Bob #
But there is one additional step to take: Alice needs to transfer the information about her key back to Bob, so that he can add it to the wallet configuration. Since they are in the same room together, Bob scans the QR code that is shown on Alice’s screen and goes through the same process as for the first two keys.
Time to hit pause #
All primary keys have now been added to the wallet. Next, Bob and Alice need to add the inheritance keys in the same way. They plan to do that during a family gathering which is coming up on the following weekend. For now, Bob hits “Save and finish later”. The application saves the progress locally and allows Bob to continue later.
Adding the inheritance keys #
Bob and Alice already met with Edward, their lawyer, ahead of the family meeting and imported his key to the wallet. So only Christina’s and David’s keys remain to be added to the wallet.
During the family reunion, Bob opens our application and resumes the wallet creation process. Just like with Alice’s key, he creates a key request for Christina and David.
Christina creates a new key in the app #
Christina could follow the same procedure for importing a key from her existing signing device, as described above. However, Christina does not want to use her existing hardware wallet from the family savings. Instead, she wants to create a new key for the family savings wallet, so that she can keep it on a seperate signing device.
The mockups below show how our app allows Christina to generate an entirely new key and provide it to her father.
David forgot his hardware wallet #
Unfortunately, David forgot his hardware wallet at home, so he will have to add his key later. So Bob creates the same request as usual and sends it to David via direct message. The user flow for David is the same as for Alice and Edward. The only difference is that he sends his key back to his father over a direct message as well.
Step 3: Finalizing the wallet #
After all of the keys have been added, Bob can proceed to create the wallet. They review the details and hit “create wallet”.
On the confirmation screen, he is asked to download the wallet backup kit. The couple doesn’t want to deal with the backup right now, so they decide to skip it. After all, there are no funds in the wallet yet.
The homescreen shows the newly created wallet. In addition, the app shows a couple of reminders that they should still download the backup as well as scheduling a regular key check.