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

Getting started guide #20

Merged
merged 65 commits into from
Dec 9, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
03f5b5a
Basic file structure and some content for personal finance section
GBKS Aug 31, 2020
45a4356
Commenting out some rougher content
GBKS Aug 31, 2020
91e4478
Image clean-up
GBKS Aug 31, 2020
933735e
First draft on bitcoin hardware
GBKS Sep 9, 2020
217c847
Update guide/getting-started/11-common-user-flows.md
GBKS Sep 10, 2020
47f9a90
Update guide/getting-started/12-technology-primer.md
GBKS Sep 10, 2020
17aa5ef
Update guide/getting-started/9-personal-finance.md
GBKS Sep 10, 2020
7a40705
Update guide/getting-started/9-personal-finance.md
GBKS Sep 10, 2020
ff20ef2
Update guide/getting-started/9-personal-finance.md
GBKS Sep 10, 2020
cfa62d7
Update guide/getting-started/14-hardware.md
GBKS Sep 10, 2020
71a478d
Mostly new content to common user flows, some other tweaks
GBKS Sep 22, 2020
d995618
Update guide/getting-started/11-common-user-flows.md
GBKS Sep 22, 2020
de0aed6
User flow copy additions and image folder re-org
GBKS Oct 5, 2020
2cdad0e
First draft on open design
GBKS Oct 6, 2020
9ceb3b6
Open design copy revision
GBKS Oct 13, 2020
2665d7f
First draft of software overview page (total WiP)
GBKS Oct 14, 2020
bef9136
Software and open design copy iteration
GBKS Oct 14, 2020
d151186
First draft of the technology primer page
GBKS Oct 20, 2020
edeefd1
Merge pull request #1 from BitcoinDesign/master
GBKS Oct 21, 2020
37a1840
Merge branch 'master' into feature/getting-started-guide-v1
GBKS Oct 21, 2020
8fb038f
Update _article.scss
GBKS Oct 21, 2020
d4d89ba
Tech primer content updates
GBKS Oct 21, 2020
37973e0
More tech primer copy
GBKS Oct 21, 2020
7622a8f
Tech primer copy updates
GBKS Oct 22, 2020
da2a6bf
Tech primer copy edits
GBKS Oct 22, 2020
70babac
Copy and image revisions
GBKS Oct 23, 2020
1653dd0
First draft of the visual language of bitcoin
GBKS Oct 26, 2020
657ffa3
Cleaning up sections
GBKS Oct 26, 2020
0b1504b
Fixing broken links
GBKS Oct 26, 2020
395907d
Restructuring and some content updates
GBKS Nov 9, 2020
b64f480
Added bitcoin island image
GBKS Nov 9, 2020
ed12ad1
Major copy updates
GBKS Nov 13, 2020
7d1716c
Added user research page
GBKS Nov 13, 2020
1ea7866
Small image revision
GBKS Nov 16, 2020
5a42957
Merge remote-tracking branch 'upstream/master'
GBKS Nov 16, 2020
30d7fb4
Merge branch 'master' into feature/getting-started-guide-v1
GBKS Nov 16, 2020
c09ac2e
URL and image updates
GBKS Nov 17, 2020
283bc86
Various images updates
GBKS Nov 19, 2020
aec630f
Some added page header graphics
GBKS Nov 20, 2020
b94286f
Common user flows image updates
GBKS Nov 24, 2020
b5712aa
Added wallet switching and coin mixing user flows
GBKS Nov 24, 2020
b3eb3d7
Tech primer and usage life cycle copy updates
GBKS Nov 30, 2020
8248b6d
Minor open design copy updates
GBKS Nov 30, 2020
24c57d5
Update guide/getting-started/open-design.md
GBKS Dec 1, 2020
4dea673
Update guide/getting-started/open-design.md
GBKS Dec 1, 2020
506e5c1
Update guide/getting-started/open-design.md
GBKS Dec 1, 2020
73f133e
Update guide/getting-started/open-design.md
GBKS Dec 1, 2020
a955ac7
Update guide/getting-started/open-design.md
GBKS Dec 1, 2020
444f0c6
Update guide/getting-started/open-design.md
GBKS Dec 1, 2020
a5df29b
Update guide/getting-started/open-design.md
GBKS Dec 1, 2020
a92437a
Update guide/getting-started/open-design.md
GBKS Dec 1, 2020
15c6190
Update guide/getting-started/open-design.md
GBKS Dec 1, 2020
40a218c
Fixing license URLs in the open design page
GBKS Dec 1, 2020
131f551
Merge branch 'feature/getting-started-guide-v1' of https://github.com…
GBKS Dec 1, 2020
e24676b
Image optimization
GBKS Dec 1, 2020
6c6a6d1
Added editor's notes to each page
GBKS Dec 1, 2020
9b83fdd
Added image attributions
GBKS Dec 1, 2020
177901a
Added link previews and image source links to editor's notes
GBKS Dec 2, 2020
de4c159
Added alt texts for images
GBKS Dec 2, 2020
a6825fc
Copy fixes via feedback
GBKS Dec 4, 2020
a600e81
Merge branch 'master' into feature/getting-started-guide-v1
GBKS Dec 4, 2020
ed43009
Added new and uncompressed images
GBKS Dec 7, 2020
84a9cde
Merge remote-tracking branch 'upstream/master' into feature/getting-s…
GBKS Dec 7, 2020
c7b0167
Update guide/getting-started/getting-started.md
GBKS Dec 8, 2020
959c44c
Update guide/getting-started/getting-started.md
GBKS Dec 8, 2020
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
6 changes: 4 additions & 2 deletions _includes/image.html
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
<figure{% if include.layout %} class="-{{ include.layout }}"{%- endif -%}>
<figure{% if include.layout %} class="-{{ include.layout }}"{% endif %}>
<img
src="{{ include.image | relative_url }}"
{% if include.retina %} srcset="{{ include.image | relative_url }} 1x, {{ include.retina | relative_url }} 2x"{% endif %}
{% if include.layout %} class="-{{ include.layout }}"{% endif %}
alt="{{ include.alt-text }}"
width="{{ include.width }}"
height="{{ include.height }}"
>
<figcaption class="small">{{ include.caption }}</figcaption>
{% if include.caption %}<figcaption class="small">{{ include.caption }}</figcaption>{% endif %}
</figure>
15 changes: 15 additions & 0 deletions _includes/picture.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<figure{% if include.layout %} class="-{{ include.layout }}"{% endif %}>
<picture>
<source
media="(max-width: 639px)"
srcset="{{ include.mobile | relative_url }}"
>
<img
src="{{ include.image | relative_url }}"
alt="{{ include.alt-text }}"
width="{{ include.width }}"
height="{{ include.height }}"
>
</picture>
{% if include.caption %}<figcaption class="small">{{ include.caption }}</figcaption>{% endif %}
</figure>
21 changes: 21 additions & 0 deletions _sass/minima/_article.scss
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ article.guide {
}

& > .-full-width {
display: flex;
flex-direction: column;
align-items: center;

@include media-query(medium-down) {
margin-left: -$spacing-unit / 2;
margin-right: -$spacing-unit / 2;
Expand Down Expand Up @@ -81,6 +85,23 @@ article.guide {
margin-top: $spacing-unit * 1;
margin-bottom: $spacing-unit * 1;
}
}

.image-gallery {
display: flex;
background-color: #f8f8f8;
justify-content: center;
max-width: none !important;

figure {
img {
box-shadow: 0 20px 10px -8px rgba(black, 0.05);
border: 1px solid rgba(black, 0.1);
}

& + figure {
margin-left: 40px;
}
}
}
}
Binary file modified assets/images/guide/getting-started/bandaid.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/guide/getting-started/car.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/guide/getting-started/coffee.png
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.
Binary file added assets/images/guide/getting-started/download.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/guide/getting-started/groceries.png
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.
Binary file added assets/images/guide/getting-started/maintenance.png
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.
Binary file modified assets/images/guide/getting-started/node-hardware.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/guide/getting-started/onboarding.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/guide/getting-started/receiving.png
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.
Binary file modified assets/images/guide/getting-started/safe.png
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.
Binary file added assets/images/guide/getting-started/sending.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/guide/getting-started/stocks.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/guide/getting-started/transactions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
195 changes: 190 additions & 5 deletions guide/getting-started/11-common-user-flows.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,223 @@
---
layout: guide
title: X Common user flows
title: Common user flows
nav_order: 11
parent: Getting started
permalink: /getting-started/common-user-flows/
---

# Common user flows
{:.no_toc}

<!--
Some applications are like Swiss Army Knives. They provide many different invidiual tools and it is up to each user to find the right one for their job and use it effectively. Other software is highly optimized for specific use cases and provides specific, more linear work flows for each one. And many applications use both approaches at different times. Particularly for new users and for initial software setup, offering linear workflows (also known as wizards), can be very helpful in successfully completing tasks.

Let's take a look at some common user needs and workflows that can be created for them.

1. Table of contents
{:toc}

## Orientation

This step is many times overlooked, but before anyone uses your product, they first need to find out that it exists, understand and develop interest and decide to start using it.

## Software download & installation
This step is many times overlooked, but before anyone uses your product, they first need to find it, get interested in it and choose to install it.

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

{% include image.html
image = "/assets/images/guide/getting-started/download.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}

Mobile app stores do a good job at providing previews of what using an app will be like. Through copy, videos, images and reviews, users can make informed decisions about the product the are evaluating. Open-source software is typically downloaded via a website or from Github and each project decides what information to present.
GBKS marked this conversation as resolved.
Show resolved Hide resolved

</div>

Here are two different examples of webpages for downloading bitcoin wallet software. Which one allows users to better understand what using the software will be like? Which one builds more trust?

<div class="image-gallery" markdown="1">

{% include image.html
image = "/assets/images/guide/getting-started/common-user-flows/app-store-bluewallet.jpg"
retina = "/assets/images/guide/getting-started/common-user-flows/app-store-bluewallet@2x.jpg"
alt-text = ""
caption = '<a href="https://apps.apple.com/us/app/bluewallet-bitcoin-wallet/id1376878040" target="_blank">BlueWallet landing page</a> on the App Store'
width = 400
height = 480
%}

{% include image.html
image = "/assets/images/guide/getting-started/common-user-flows/bitcoincore-com.jpg"
retina = "/assets/images/guide/getting-started/common-user-flows/bitcoincore-com@2x.jpg"
alt-text = ""
caption = '<a href="https://bitcoincore.org/" target="_blank">bitcoincore.org</a>'
width = 400
height = 480
%}

</div>

The App Store landing page includes screenshots, a description and updates in the latest version, as well as user reviews and information about the developer. The bitcoincore.org landing page does not allow me to get an idea of how the product works, what it looks like, or what others think of it. Instead it provides multiple download links, requirements, and information about how to verify that it is indeed the software I am looking for. The two approaches are for different phases of the usage life cycle. One is for the aware user who wants to determine whether they are interested in the product. The other is for the interested user who wants to start using the product. Make sure to satisfy both of these users.

## Software onboarding

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

{% include image.html
image = "/assets/images/guide/getting-started/onboarding.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}

Bitcoin is complex, and so it is recommended to think through and carefully shape the first experience users have in your product. Without being overwhelming or getting into too much detail, this user flow should explain core concepts and features that allow users to create mental models on how they will use the application.

Onboarding may be purely informational based on the content, but many times it also includes an initial setup that helps personalize the software towards the users specific needs and context.
Onboarding may be purely informational based on the content, but many times it also includes an initial setup that helps personalize the software towards the users specific needs and context. After onboarding, users are mostly on their own, so the goal is to leave users with a clear idea on how to achieve what they came for.

The example below shows a series of approaches:

1. Guide the user through forms one small step at a time
1. Offer a slideshow of information users can choose to read through
1. Provide a guided tour of the interface to orient users in the product
1. Offer prompts to primary actions and use cases

</div>

{% include image.html
image = "/assets/images/guide/getting-started/common-user-flows/blockchain-com-onboarding.jpg"
retina = "/assets/images/guide/getting-started/common-user-flows/blockchain-com-onboarding@2x.jpg"
alt-text = ""
caption = 'Onboarding screens of the <a href="https://www.blockchain.com/wallet" target="_blank">blockchain.com wallet</a> as of September 2020'
width = 1024
height = 630
layout = "full-width"
%}

A whole section about onboarding is in development for this guide, stay tuned for more.

## Creating a new wallet

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

{% include image.html
image = "/assets/images/guide/getting-started/create-wallet.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}

It is important here to distinguish between wallet software, and the wallet that represents the users "account". This particular experience may be almost invisible or highly elaborate. While some mobile wallet applications choose to automatically create and secure a wallet during first launch, other wallets provide extensive configuration wizards.

</div>

Not all wallets are the same as new standards have emerged over time. So some software may create wallets via outdated technical formats, and others allow users to choose different technical formats during wallet creation for wider compatibility with other software. [Wallets Recovery](https://github.com/nvk/wallets-recovery){:target="_blank"} provides a great overview of different implementations and how nuanced some of the differences are. Generally, these differences are very difficult to understand for regular users and should either be automatically handled by the system, or explained in layman terms.

One of the most complex users flows in Bitcoin is the creation of multisignature wallets. Multisignature means that there are multiple keys that control the wallet. All keys are required for the creation of the wallet, and users can choose the number of keys required to sign transactions. This is typically done to increase security because it avoids having a single point of failure. For a hacker to get access to 2 out of total of 3 keys that are geographically distributed is much harder than if there is just a single key. While a single user can more easily set up a multisignature wallet with one computer and multiple hardware wallets, it is harder when multiple users hold keys. In that scenario, a file needs to be sent around for each participant to sign. Some wallet software providers hosts servers that seamlessly connect these users. However, this provides another potential attack vector and introduces risk.

## Importing an existing wallet

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

{% include image.html
image = "/assets/images/guide/getting-started/import-wallet.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}

</div>



## Securing a wallet

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

{% include image.html
image = "/assets/images/guide/getting-started/secure-wallet.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}

</div>

## Sending bitcoin

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

{% include image.html
image = "/assets/images/guide/getting-started/sending.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}

</div>

## Requesting bitcoin

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

{% include image.html
image = "/assets/images/guide/getting-started/receiving.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}

</div>

## Managing transactions

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

{% include image.html
image = "/assets/images/guide/getting-started/transactions.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}

</div>

## Wallet maintenance

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

{% include image.html
image = "/assets/images/guide/getting-started/create-wallet.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}


</div>

## Resolving a problem

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

{% include image.html
image = "/assets/images/guide/getting-started/create-wallet.png"
alt-text = ""
width = 100
height = 100
layout = "float-left"
%}

This can be a tricky experience to address. For one, non-custodial cryptocurrency management by nature places a lot of responsibility on the user. This also puts much of the burden of solving problems on users. The second aspect is that open-source software typically relies on online documentation and forums for "customer service". Ideally, software helps prevent errors as much as possible through techniques like validating user input and requiring extra approvals for impactful actions. When this is not possible though, and errors do occur, they should be communicated as clearly as possible.
GBKS marked this conversation as resolved.
Show resolved Hide resolved

-->
</div>
7 changes: 4 additions & 3 deletions guide/getting-started/14-hardware.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Generally, any hardware with an internet connection can interact with the bitcoi

## Recovery phrase storage

Simple, cheap and robust storage solutions for recovery phrases come in modest forms. [Seedplate](https://bitcoinseedbackup.com/), for example, is a metal plate in which users can etch the words of their recovery phrase for long-term offline storage. [CardWallet](https://www.cardwallet.com), in comparison, is the size of a credit card and comes pre-loaded with a recovery phrase (hidden behind a security seal) and a matching bitcoin address. And if you like an even simpler solution, a piece of paper will do. Although paper is not as durable and may be easy to loose, it is one of the strengths of Bitcoin that such simple solutions are possible.
Simple, cheap and robust storage solutions for recovery phrases come in modest forms. [Seedplate](https://bitcoinseedbackup.com/){:target="_blank"}, for example, is a metal plate in which users can etch the words of their recovery phrase for long-term offline storage. [CardWallet](https://www.cardwallet.com){:target="_blank"}, in comparison, is the size of a credit card and comes pre-loaded with a recovery phrase (hidden behind a security seal) and a matching bitcoin address. And if you like an even simpler solution, a piece of paper will do. Although paper is not as durable and may be easy to loose, it is one of the strengths of Bitcoin that such simple solutions are possible.
GBKS marked this conversation as resolved.
Show resolved Hide resolved

{% include image.html
image = "/assets/images/guide/getting-started/hardware-seed-storage.png"
Expand Down Expand Up @@ -48,8 +48,9 @@ Because hardware wallets are so optimized for this specific uses case, they have

Thousands of computers participate in the Bitcoin network. They are called nodes and continuously exchange, verify and compare transaction data. Running your own node, instead of relying on a third-party node, has the benefit that transactions are getting validated by your own personal device. Nodes also improve privacy and help secure the network. Several DIY and consumer hardware products have been created to make it easy to run your own node on a dedicated device.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Several DIY and consumer hardware products have been created to make it easy to run your own node on a dedicated device.

IMO this give an impression that you need a consumer-grade device to run a node. You can run a node on your computer just by running adequate software.


{% include image.html
{% include picture.html
image = "/assets/images/guide/getting-started/node-hardware.png"
mobile = "/assets/images/guide/getting-started/node-hardware-mobile.png"
alt-text = "Examples of hardware wallets"
width = 1600
height = 800
Expand All @@ -61,7 +62,7 @@ While plug-and-play hardware nodes can solve various problems for bitcoin users,

## Miners

Bitcoin mining has turned into a professional undertaking years ago. Today, dedicated hardware (so-called ASICS, or application-specific integrated circuits) is being developed that is optimized to continuously execute the bitcoin hashing algorithm over and over until an acceptable hash is found. A modern miner (in 2020) can generate around 14,000,000,000,000 hashes per second. The more hashes generated, the higher the chance of "finding" a new block and receiving freshly minted bitcoin as a reward.
Bitcoin mining has turned into a professional undertaking years ago. Today, dedicated hardware (so-called ASICS, or application-specific integrated circuits) is being developed that is optimized to continuously execute the Bitcoin hashing algorithm (called [SHA-256](https://en.wikipedia.org/wiki/SHA-2){:target="_blank"}) over and over until an acceptable hash is found. A modern miner (in 2020) can generate around 14,000,000,000,000 hashes per second. The more hashes generated, the higher the chance of "finding" a new block and receiving freshly minted bitcoin as a reward.

{% include image.html
image = "/assets/images/guide/getting-started/mining-hardware.png"
Expand Down
20 changes: 15 additions & 5 deletions guide/getting-started/9-personal-finance.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ parent: Getting started
permalink: /getting-started/personal-finance/
---

<!--

Editor's notes

This page provides a rough framework for how to think about transactions in the general context of typical personal finances. It can provide a great jumping-off point into different other pages like private key management solutions, payment types and hardware wallets.

-->

# Personal finance and bitcoin
{:.no_toc}

Expand All @@ -25,11 +33,13 @@ Let's take a look at six different categories of how somebody may want to organi
## Day-to-day spending

<!--
- Use case explanation
- Risk
- Convenience
- Privacy
- Mobility

Section structure

- Describe the current use case (typical transactions)
- Discuss risk factors and risk/convenience trade-offs
- Other factors like privacy, mobility, etc

-->

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