Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inheritance wallet - Chapter 2 - Cosigner onboarding #1100

Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
8ccb0df
Updates from master
rabbitholiness Jul 8, 2024
de524a1
Initial commit
rabbitholiness Jul 8, 2024
0727e9f
Text updates
rabbitholiness Jul 8, 2024
b652b43
Removes unused images
rabbitholiness Jul 8, 2024
db293f2
Back link for reader convenience
rabbitholiness Jul 8, 2024
1cb801d
Delete _includes/bitcoin-tv 2.svg
rabbitholiness Jul 16, 2024
1e2d710
Delete _includes/nostr 2.svg
rabbitholiness Jul 16, 2024
94ab36d
Removed duplicated files
rabbitholiness Jul 16, 2024
bff4334
Incorporated final round of feedback
rabbitholiness Aug 15, 2024
b19ec19
Update guide/inheritance-wallet/onboarding-cosigners.md
rabbitholiness Sep 13, 2024
fa7d668
Update guide/inheritance-wallet/onboarding-cosigners.md
rabbitholiness Sep 13, 2024
cf0c481
Update guide/inheritance-wallet/onboarding-cosigners.md
rabbitholiness Sep 13, 2024
6f3bc77
Update guide/inheritance-wallet/onboarding-cosigners.md
rabbitholiness Sep 13, 2024
d068383
Update guide/inheritance-wallet/onboarding-cosigners.md
rabbitholiness Sep 13, 2024
2d06685
Update guide/inheritance-wallet/onboarding-cosigners.md
rabbitholiness Sep 13, 2024
9e8726b
Update guide/inheritance-wallet/onboarding-cosigners.md
rabbitholiness Sep 13, 2024
3bf2c48
Incorporating Daniel's feedback
rabbitholiness Sep 13, 2024
ba719d6
Text tweak
rabbitholiness Sep 13, 2024
0d39855
Updated process overview image
rabbitholiness Oct 17, 2024
844cca0
Multiple smaller tweaks
rabbitholiness Oct 17, 2024
0e3edb5
Added header and preview images
rabbitholiness Oct 17, 2024
303cf48
fixing preview image
rabbitholiness Oct 17, 2024
6752408
Removed editor's notes
rabbitholiness Oct 17, 2024
f395c9f
Update guide/inheritance-wallet/onboarding-cosigners.md
rabbitholiness Oct 21, 2024
3db4a51
Preview and header image fixes
rabbitholiness Oct 21, 2024
f8da700
fixing image paths
rabbitholiness Oct 21, 2024
a37a631
image file size optimizations
rabbitholiness Oct 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
116 changes: 6 additions & 110 deletions guide/inheritance-wallet/landing-page.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,142 +50,38 @@ All of this is done without compromising your financial privacy. You don't want

### [Overview]({{ '/guide/inheritance-wallet/overview/' | relative_url }})

<div class="center" markdown="1">

{% include image.html
image = "assets/images/guide/inheritance-wallet/icon-introduction.png"
retina = "assets/images/guide/inheritance-wallet/[email protected]"
alt-text = ""
width = 80
height = 80
layout = "float-left"
link-url = "/guide/inheritance-wallet/introduction/"
%}

Before we dive into the details, we will introduce you to the Jones family. We are also going to look at how they plan to set up their family savings in general.

</div>

---

### [Wallet creation]({{ '/guide/inheritance-wallet/wallet-creation/' | relative_url }})

<div class="center" markdown="1">
Our application lets users create flexible multi-key wallets with timelocked recovery paths to help them recover funds while they are still alive. On top of that, users can create and manage dedicated inheritance keys that are held by their heirs.
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved

{% include image.html
image = "assets/images/guide/inheritance-wallet/icon-wallet-creation.png"
retina = "assets/images/guide/inheritance-wallet/[email protected]"
alt-text = ""
width = 80
height = 80
layout = "float-left"
link-url = "/guide/inheritance-wallet/wallet-creation/"
%}
---

Our application lets users create flexible multi-key wallets with timelocked recovery paths to help them recover funds while they are still alive. On top of that, users can create and manage dedicated inheritance keys that are held by their heirs.
### [Onboarding cosigners]({{ '/guide/inheritance-wallet/onboarding-cosigners/' | relative_url }})

</div>
After a multi-key wallet has been created, the cosigners need to be onboarded so that they can sign transactions. Our app let's them import the wallet to their phone and then enable their hardware signing device.

---

### Wallet backup (coming soon)

<div class="center" markdown="1">

{% include image.html
image = "assets/images/guide/inheritance-wallet/icon-backup.png"
retina = "assets/images/guide/inheritance-wallet/[email protected]"
alt-text = ""
width = 80
height = 80
layout = "float-left"
link-url = "/guide/inheritance-wallet/backup/"
%}

When backing up multi-key wallets, there are more moving parts to consider than with single-key wallets. Our application helps users with that.

</div>

---

### Testing (coming soon)

<div class="center" markdown="1">

{% include image.html
image = "assets/images/guide/inheritance-wallet/icon-testing.png"
retina = "assets/images/guide/inheritance-wallet/[email protected]"
alt-text = ""
width = 80
height = 80
layout = "float-left"
link-url = "/guide/inheritance-wallet/testing/"
%}

To help users make sure that their wallet works as intended, the app offers features that let them test their setup, before they move all of their savings to their newly created wallet.

</div>

---

### Operational phase (coming soon)

<div class="center" markdown="1">

{% include image.html
image = "assets/images/guide/inheritance-wallet/icon-operations.png"
retina = "assets/images/guide/inheritance-wallet/[email protected]"
alt-text = ""
width = 80
height = 80
layout = "float-left"
link-url = "/guide/inheritance-wallet/regular-use/"
%}

Involving the potential heirs early on is great, but it also has implications for privacy and security. Our application combines built-in features with social processes to mitigate this risk. It also helps to prevent premature activation of the inheritance keys.

</div>

---

### Managing change (coming soon)

<div class="center" markdown="1">

{% include image.html
image = "assets/images/guide/inheritance-wallet/icon-changing.png"
retina = "assets/images/guide/inheritance-wallet/[email protected]"
alt-text = ""
width = 80
height = 80
layout = "float-left"
link-url = "/guide/inheritance-wallet/managing-change/"
%}
### Making changes (coming soon)

Over time, it might become necessary for users to make changes to their savings wallet because someone lost a key or they want to make changes to the overall wallet configuration. Our app helps users make such changes and update the backup and inheritance documentation.

</div>

---

### Recovery & inheritance (coming soon)

<div class="center" markdown="1">

{% include image.html
image = "assets/images/guide/inheritance-wallet/icon-recovery.png"
retina = "assets/images/guide/inheritance-wallet/[email protected]"
alt-text = ""
width = 80
height = 80
layout = "float-left"
link-url = "/guide/inheritance-wallet/wallet-recovery/"
%}
### Succession (coming soon)

When it's time for the heirs to claim their inheritance, the Jones' children can use their own signing devices to recover their funds.

</div>

---

**Resources**
Expand Down
156 changes: 156 additions & 0 deletions guide/inheritance-wallet/onboarding-cosigners.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
---
layout: guide
title: Onboarding cosigners
description: This page describes how Alice sets up the wallet in her app and activates it on her signing device.
nav_order: 3
parent: Inheritance wallet
permalink: /guide/inheritance-wallet/onboarding-cosigners/
main_classes: -no-top-padding
image_base: /assets/images/guide/inheritance-wallet/onboarding-cosigners/
images_bob-export-config:
- file: bob-export-config/onboard-alice-home
alt: Home screen showing three tasks that are associated with the wallet for the user to complete.
caption: A contextual task list helps users to complete all the necessary steps to safely use their new wallet.
- file: bob-export-config/onboard-alice-dialog
alt: Sharing dialog showing a QR code and sharing options.
caption: Bob exports the wallet configuration, so that Alice can set up the wallet on her phone.
- file: bob-export-config/onboard-alice-mark-complete
alt: Home screen showing three tasks that are associated with the wallet for the user to complete.
caption: After Alice has successfully set up the wallet on her end, Bob checks off the task.
- file: bob-export-config/onboard-alice-completion-dialog
alt: Screen showing a confirmation dialog.
caption: Bob confirms that all cosigners have been onboarded. In our use case, Bob and Alice are the only cosigners.
- file: bob-export-config/onboard-alice-done
alt: Home screen showing two tasks associated with the wallet.
caption: The cosigner onboarding task is gone from the list and Bob can continue with the the next task.
images_alice-import-config:
- file: alice-import-config/app-home-initial
alt: Screen showing an empty app home screen.
caption: Alice taps the plus button to start adding the wallet.
- file: alice-import-config/add-wallet-sheet
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved
alt: Screen showing different options for adding a wallet.
caption: She selects "Recover an existing wallet"
- file: alice-import-config/alice-import-config-options
alt: Screen showing different options for importing the wallet configuration.
caption: The easiest way to import the configuration is to scan the QR code from Bob's screen.
- file: alice-import-config/alice-scan-config
alt: Screen showing an open QR code scanner.
caption: Alice scans the QR code.
- file: alice-import-config/alice-review-wallet
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved
alt: Screen showing the final wallet configuration, with an option to review the details of the signing keys.
caption: Alice reviews the wallet configuration and finishes the import.
- file: alice-import-config/alice-wallet-success
alt: Screen showing a success message and the option to download a wallet backup kit.
caption: On the success screen the app prompts Alice to download the wallet backup kit. She will do that later.
- file: alice-import-config/app-home-done
alt: App home screen showing the newly created wallet.
caption: Back on the home screen, Alice sees that she should download the backup kit and enable her signing device.
images_alice-enable-device:
- file: alice-enable-device/enable-alice-home
alt: Home screen showing the wallet with two tasks associated.
caption: Alice is ready to enable her BitBox to sign transactions for the wallet.
- file: alice-enable-device/enable-alice-dialog
alt: Scren showing an informational dialog about enabling signing devices.
caption: The app tells her what this step is about and how it works.
- file: alice-enable-device/enable-alice-wallet-export
alt: Screen showing different options to export the wallet configuration.
caption: Alice connects her BitBox via USB-C to export the wallet configuration.
- file: alice-enable-device/enable-alice-device-flow
alt: Placholder screen representing the device-specific wallet activation flow.
caption: The app guides her throught the import flow on her BitBox.
- file: alice-enable-device/enable-alice-success
alt: Success screen showing the option activate another device or go to the home screen.
caption: On the success screen, the app shows the option to enable another signing device.
- file: alice-enable-device/enable-alice-completion
alt: Home screen showing the wallet with two tasks associated.
caption: On the home screen, Alice checks off the task.
- file: alice-enable-device/enable-alice-completion-dialog
alt: Screen showing a confirmation dialog.
caption: The app asks whether she has enabled all signing devices.
- file: alice-enable-device/enable-alice-done
alt: Home screen showing the wallet with only one task associated.
caption: The last thing to do is to download the wallet backup kit.
---

<!--

Editor's notes

This page covers how Alice imports the savings wallet to her own app and enables her signing device to create and sign transactions.

Illustration sources

https://www.figma.com/file/h5GP5v5dYfpXXfEUXf6nvC/Family-inheritance-wallet?type=design&node-id=5542%3A2119&mode=design&t=sBtcvrDzb8MPtWaK-1

-->

# Cosigner onboarding
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved
{: .no_toc }

---

<div class="glossary-toc" markdown="1">
* Table of contents
{:toc}
</div>

---

[So far]({{ '/guide/inheritance-wallet/wallet-creation/' | relative_url }}), the wallet has been created on Bob's app. The next step is to get Alice set up as a cosigner and to enable her to sign transactions. To do this Alice needs to:
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved

1. Import the wallet configuration to her app.
2. Enable her BitBox to sign transactions.

### Wallet onboarding
The first step is to add the family savings wallet on Alice's app.
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved

#### Bob shares the wallet configuration
Bob shares the wallet configuration with Alice by tapping on the "onboard cosigner" task. Just like during wallet creation, this displays a QR code that Alice can scan to import the configuration. Alternatively, Bob can share the configuration over a secure channel.
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved

{% include image-gallery.html pages = page.images_bob-export-config %}

The app also shows an option to view the [wallet descriptor](https://bitcoin.design/guide/glossary/#output-script-descriptor). The wallet descriptor is a small piece of text that contains all the information that a wallet application needs to recover a multi-key wallet. We will cover this topic in more detail in the chapter about the wallet backup.

After Alice has successfully set up the wallet on her end, Bob checks off the task. For our application, this is a manual step, because it does not run a server that coordinates activity between the users. This adds a bit more friction to the user experience but minimizes reliance on the wallet provider.
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved

#### Alice sets up the wallet on her app
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved

Alice will scan the QR code from Bob's phone to import the wallet into her app. She reviews the final wallet configuration and hits "add wallet".

{% include image-gallery.html pages = page.images_alice-import-config %}

On the home screen, the app shows the wallet, along with a task list that reminds her to:
- Save the wallet backup kit.
- Enable her BitBox to sign transactions.
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved

### Enabling the signing devices
GBKS marked this conversation as resolved.
Show resolved Hide resolved

Bob and Alice's signing devices need to be enabled to sign transactions for the family savings wallet. This is done by importing the wallet configuration to each device.
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved

#### Bob did it during wallet creation
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved
Bob has already completed this step during the creation of the wallet. When he imported the keys from his Trezor and the shared ColdCard, he did so using a wired connection. During that process the wallet was automatically activated on the devices. If Bob had used an airgapped method (e.g. via QR code or SD card) he would also need to explicitly import the wallet to these two devices.

#### Alice enables her BitBox

What is left to do is for Alice to activate the wallet on her BitBox, so that she can sign transactions with it.

{% include image-gallery.html pages = page.images_alice-enable-device %}

#### The wallet is ready
The family savings wallet is now fully functional:

- Bob and Alice now have access to the shared wallet.
- They can view the wallet and its balance in their respective apps.
- Both can initiate and sign transactions using their respective devices.
- Neither their children nor their lawyer has access to the wallet, as the wallet configuration hasn't been imported into their respective apps.
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved

On the next page we will look into how the couple backs up the wallet.

---

{% include next-previous.html
previousUrl = "/guide/inheritance-wallet/wallet-creation"
previousName = "Wallet creation"
nextUrl = "/guide/upgradeable-wallet"
nextName = "Upgradeable wallet"
%}
27 changes: 23 additions & 4 deletions guide/inheritance-wallet/wallet-creation.md
Original file line number Diff line number Diff line change
Expand Up @@ -212,10 +212,29 @@ https://www.figma.com/file/h5GP5v5dYfpXXfEUXf6nvC/Family-inheritance-wallet?type
</div>

---
## How it works
Now that we have a [good understanding]({{ '/guide/inheritance-wallet/overview/' | relative_url }}) of how Bob and Alice want to set up their inheritance wallet, let's examine the initial user experience and wallet setup process. To create a fully functional wallet, the Joneses need to complete the following high-level steps:

<div class="center" markdown="1">

{% include picture.html
rabbitholiness marked this conversation as resolved.
Show resolved Hide resolved
image = "/assets/images/guide/inheritance-wallet/wallet-creation/process-overview.png"
retina = "/assets/images/guide/inheritance-wallet/wallet-creation/[email protected]"
alt-text = "A diagram showing the wallet creation and cosigner onboarding process."
width = 1106
height = 1659
layout = "float-right-desktop"
%}

1. Bob creates the wallet template in his app and shares it with Alice (cosigner) and Christina, David, and Edward (inheritance key holders).
2. Everyone creates a key on their respective signing devices and provides it to Bob.
3. Bob adds all keys to the configuration and finalizes the wallet.
4. Bob shares the final wallet configuration with Alice, but not with the inheritance key holders.
5. Alice imports the wallet and activates it on her signing device.

## Onboarding
</div>

Now that we have a [good understanding]({{ '/guide/inheritance-wallet/overview/' | relative_url }}) of how Bob and Alice want to set up their inheritance wallet, let's take a close look at the first use experience and wallet setup.
## App onboarding

After downloading the app, it walks them through the purpose of the product and highlights some of the most important features.

Expand Down Expand Up @@ -333,6 +352,6 @@ The homescreen shows the newly created wallet. In addition, the app shows a coup
{% include next-previous.html
previousUrl = "/guide/inheritance-wallet/overview"
previousName = "Overview"
nextUrl = "/guide/upgradeable-wallet/"
nextName = "Upgradeable wallet"
nextUrl = "/guide/inheritance-wallet/onboarding-cosigners"
nextName = "Onboarding cosigners"
%}
4 changes: 2 additions & 2 deletions guide/upgradeable-wallet.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ The screens below show how this architecture allows users to get onboarded quick
---

{% include next-previous.html
previousUrl = "/guide/inheritance-wallet/wallet-creation/"
previousName = "Wallet creation"
previousUrl = "/guide/inheritance-wallet/onboarding-cosigners/"
previousName = "Onbarding cosigners "
nextUrl = "/guide/shared-wallet/"
nextName = "Shared wallet"
%}