Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 114
Adds multiple pages to the Onboarding chapter#302
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
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
342b0fd2b93c82e1f2a03cdd3262bfc448a9c7955bc8dfc4a7f25db5cf896619f32fe6fc218996a098a053feb7a15443ee0af115450ce82aeea3eed0b22fca91581fc1b97cfee596f17f622a67471952e6e950e99133f323bd2d2ce0af1812f8541a86a664c3c40e91c6412a5c58bf0401d116888ee5be71f2c199287f93519557b9010802bb7df43d6b586e4aa011ba16452a8cc868da093da47e18f3082bfbcb6cd55a3a4e3820821a183fd34972ec8782f65c2373a5d6369be3b7511a2ddf6380987e88c4b6383a0d73486606029a413a4525c43cd1df70a7579363ce93ad349ee6bd3417395ee2a20a42d5a500b7316d043499a667b545d1c3d2fdccb3e84aeca99cf50c468ae31f4f659660b5767e42c1927eab2be77094d4fe56f034fc7a53e5b416164cb71940b364985f48650fed9fa5f3c73d385bf62eFile filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,108 @@ | ||
| --- | ||
| layout: guide | ||
| title: Automatic cloud backup | ||
| description: How to backup a recovery phrase automatically | ||
| grand_parent: Onboarding | ||
| parent: Backing up a recovery phrase | ||
| nav_order: 1 | ||
| permalink: /guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/ | ||
| main_classes: -no-top-padding | ||
| --- | ||
| # Automatic cloud backup | ||
| ### How it works | ||
| The user’s key is encrypted and backed up on their respective device/cloud storage provider. If their device is lost, stolen, or broken, the user can log into their cloud storage account (such as Apple iCloud or Google Drive) to regain access to their funds. To learn more about the technical details, hop over to the [private key management]({{ '/guide/private-key-management/introduction' | relative_url }}) section on this topic. | ||
| > Crypto rookies perceive themselves as “incapable of self-managing keys”. | ||
| > | ||
| > <cite>As researched by <a href="https://voskart.de/pdf/u_in_crypto.pdf">Abramova et al</a></cite> | ||
| This method provides users with the feeling that they can rely on their cloud provider to regain access to their funds rather than putting the responsibility on themselves. | ||
| Below is an example of what the user interface might look like for an automatic cloud backup that significantly reduces friction during onboarding. | ||
| <div class="image-slide-gallery"> | ||
| {% include picture.html | ||
| image = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-intro.png" | ||
| retina = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-intro@2x.png" | ||
| layout = "shadow" | ||
| caption = "Describe to the user know what is about to happen and how it works." | ||
| alt-text = "Screen explaining automatic cloud backups" | ||
| width = 250 | ||
| height = 541 | ||
| %} | ||
| {% include picture.html | ||
| image = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-PIN.png" | ||
| retina = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-PIN@2x.png" | ||
| class = "shadow" | ||
| caption = "Allows the user to set a PIN used for authentication." | ||
| alt-text = "The user can set a PIN which will be used to authenticate and access the wallet" | ||
| width = 250 | ||
| height = 541 | ||
| %} | ||
| {% include picture.html | ||
| image = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-service.png" | ||
| retina = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-service@2x.png" | ||
| class = "shadow" | ||
| caption = "Give the user different cloud provider options, others such as Dropbox might also be included." | ||
| alt-text = "Screen showing saving a password to encrypt the recovery phrase" | ||
| width = 250 | ||
| height = 541 | ||
| %} | ||
| {% include picture.html | ||
| image = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-provider.png" | ||
| retina = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-provider@2x.png" | ||
| class = "shadow" | ||
| caption = "This UI will be very different depending on the cloud provider and what permissions are required." | ||
| alt-text = "Screen of placeholder where cloud provider UI would be" | ||
| width = 250 | ||
| height = 541 | ||
| %} | ||
| {% include picture.html | ||
| image = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-confirmation.png" | ||
| retina = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup/cloud-backup-confirmation@2x.png" | ||
| class = "shadow" | ||
| caption = "Once the upload is complete it's a good idea to show a success screen and give some reassurances." | ||
| alt-text = "Screen showing completing a cloud backup" | ||
| width = 250 | ||
| height = 541 | ||
| %} | ||
| </div> | ||
| ### How to discuss/explain It | ||
| One approach is to explicitly explain within onboarding carousels that a user’s recovery phrase is stored on the cloud; this means that if they lose or break their device, they can regain access to their funds by logging into their respective cloud account on a different device. | ||
| On a similar note, it’s crucial that you also explain that if someone else knows their cloud account information, they can gain access to their funds, too. | ||
| {% include tip/open.html color="green" icon="check" label="Do: Inform your Users" %} | ||
| Before automatically backing up a recovery phrase via cloud backup, make sure the user knows what they are about to do. Once the backup is complete, provide a summary and some reassurances before moving on. This is a good place for loading interactions and animation because there will likely be a few seconds between when a user clicks to upload to the cloud provider and when it completes. | ||
| {% include tip/close.html %} | ||
| ### Tradeoffs | ||
| By not making users manually backup, you decrease the risk of self-inflicted loss of funds. Automatic cloud backups put less pressure and responsibility on the user. | ||
| While this is an easier way for users to set up a wallet, it brings in the potential threat of malicious third-party access. If a user’s cloud account is hacked or they forget their cloud login information, their funds could be compromised. | ||
| By bringing cloud storage providers into the equation, we assume that users trust their providers. This also raises the question of [decentralization]({{ 'guide/foundations/principles/#decentralization' | relative_url }}): a guiding principle of the Bitcoin space and could be considered in conflict with the popular saying, “not your keys, not your coins”. | ||
Collaborator There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I know photon is kind of on hold but could it recommended to designers to integrate some kind of encryption on the data stored in the cloud? Ideally by a users entered PIN as that is much harder to forgot than a passphrase. CollaboratorAuthor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I updated the gallery image to use PIN-based auth 👍 | ||
| {% include tip/open.html color="red" icon="forbid" label="Don’t: Use for High Value Amounts" %} | ||
| Automatic cloud backups should not be considered for products with users that are storing high-value amounts. This is because there are potentially more security threat vectors. | ||
| {% include tip/close.html %} | ||
| To grant users some ownership of their keys, you can create an optional manual backup within settings. A great way to do this is by framing it as an extra layer of security or a good alternative in the case that the user loses access to their cloud account/if they feel uncomfortable trusting their provider. | ||
| In the next section we will show different methods for [manual backups]({{ 'guide/onboarding/backing-up-a-recovery-phrase/manual-backup' | relative_url }}). | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| --- | ||
| layout: guide | ||
| title: Backing up a recovery phrase | ||
| description: Handling recovery phrases during onboarding | ||
| parent: Onboarding | ||
| has_children: true | ||
| nav_order: 3 | ||
| permalink: /guide/onboarding/backing-up-a-recovery-phrase/ | ||
| main_classes: -no-top-padding | ||
| --- | ||
| # Backing up a recovery phrase | ||
| When a user generates a new wallet, it creates something called a recovery phrase. A [recovery phrase]({{ 'guide/glossary/#recovery-phrase' | relative_url }}), is a group of 12 or 24 words that let users recover funds if wallet access is lost. Likewise, users who lose both their recovery phrase and wallet access permanently lose their bitcoin. Arguably, this creates one of the toughest design problems within the space. | ||
| <div class="center" markdown="1"> | ||
| {% include image.html | ||
| image = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/copy-recovery-phrase.png" | ||
| retina = "/assets/images/guide/onboarding/backing-up-a-recovery-phrase/copy-recovery-phrase@2x.png" | ||
| width = 250 | ||
| height = 460 | ||
| alt-text = "Recovery phrase mobile interface" | ||
| caption = "Typical recovery phrase UI from the [UI Kit](https://www.figma.com/file/VB3GQdAnhl8yta44DY3PSV/Bitcoin-Wallet-UI-Kit?node-id=649%3A760)" | ||
| layout = "float-left-desktop -background -shadow" | ||
| %} | ||
| When new users are presented with a recovery phrase, they are often asked to write 12 or 24 words on a piece of paper and store it safely. This kind of recovery scheme can create an unfamiliar and frustrating onboarding experience. It also poses potential threats to the safety of their funds, as new users may not know how to properly store their recovery phrase, increasing their risk of losing it. It also creates a decent amount of friction, ultimately driving new users away from self-custodying their bitcoin. | ||
| Regardless of the type of scheme you decide to go with, it’s crucial to be explicit about how your product is handling key management. | ||
| </div> | ||
| Recent [studies](https://voskart.de/pdf/bits_under_mattress.pdf) show users are often confused or unaware of where their private keys are being stored, ultimately causing inadequate risk assessment and poor storage behavior. This risk of user negligence may be avoided with transparent messaging around the scheme your wallet is using. | ||
| > New-to-crypto users often expect a recovery mechanism that allows them to “regain access to their funds in the case that they lose their seed phrase.” | ||
| > | ||
| > <cite>As researched by <a href="https://voskart.de/pdf/bits_under_mattress.pdf">Voskobojnikov et al</a></cite> | ||
| In the [private key management]({{ 'guide/private-key-management/introduction/' | relative_url }}) chapter, we recommend using an automatic cloud backup for newer users. Users can simply press a button to have their recovery phrase backed up to the cloud without having to physically write down and store it. On top of this, the onboarding process is then sped up and less cumbersome. This type of gateway gives a beginner security without overwhelming them with unfamiliar onboarding actions. | ||
| However, there may be times when it is necessary to use a manual backup alternative, as it can be low tech and easily accessible. | ||
| The next sections will look at some UI considerations for [automatic cloud backups]({{ '/guide/onboarding/backing-up-a-recovery-phrase/automatic-cloud-backup' | relative_url }}) and [manual backups]({{ 'guide/onboarding/backing-up-a-recovery-phrase/manual-backup/' | relative_url }}). |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.