From c0a5081cbd6baacddb28e584005c0144a77eb72d Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 09:47:36 +0000 Subject: [PATCH 01/97] Create new principles folder and page --- guide/principles/principles.md | 165 +++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 guide/principles/principles.md diff --git a/guide/principles/principles.md b/guide/principles/principles.md new file mode 100644 index 000000000..2702a996c --- /dev/null +++ b/guide/principles/principles.md @@ -0,0 +1,165 @@ +--- +layout: guide +title: Principles +description: The key principles to follow when designing Bitcoin products. +nav_order: 2 +has_children: false +permalink: /guide/principles/principles/ +main_classes: -no-top-padding +--- + + + +# Bitcoin Design Principles + +As a new technology, Bitcoin offers the opportunity of an open financial system without intermediaries. To make this a reality, we encourage everyone that is working on products to deliberately support the core principles of designing for Bitcoin: + +- Decentralization +- Inclusion +- Transparency +- Self-custody +- Security +- Privacy +- Interoperability + +Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, all applications should strive to follow these principles. Diverging from them should only be done with very good reason. + +--- + +## Decentralization + +Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any node on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. + +*Build products that are permissive in terms of what users can do with Bitcoin.* +*Have fall-back options for connections to the network.* + +**Do** +- Manage your own private keys +- Run a full Bitcoin node when possible +- Alternatively, use a light client with the p2p network (BIP157) using compact block filters (BIP158) +- Offer the user choice of what node to connect to + +**Don't** +- Introduce a single point of failure between the user and the Bitcoin network + +--- + +## Inclusion + +There are no background checks, credit checks, or gatekeepers to Bitcoin. A Kenyan farmer has the same access to Bitcoin as a Wall Street trader. + +And while Bitcoin is already widely used by a large number of people, it pales in comparison with the billions that will use it in the future. Without dumbing down or reducing the possibilities we need to design products that are prepared for people that are new to Bitcoin. This means using plain and ordinary language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. + +*Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements.* +*Design Bitcoin products that are usable by the widest range of people possible.* + +**Do** +- Use plain language that people new to Bitcoin can understand regardless of prior knowledge +- Use more languages than just english +- Educate in place, when people are presented with a new concept +- Treat users with impairments, or who rely on assistive technologies, as first-class citizens + +**Don't** +- Introduce requirements that might exclude many people, for example by building only for high end hardware, requiring US KYC etc +- Avoid technical detail that is not required knowledge, or technical terms like seed phrase XPUBs, mnemonics etc. +- Do not put all education up front and expect people to read and remember it + +--- + +## Transparency + +While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on and so forth. Let people verify that your claims are true. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. + +*Be open and transparent with how your product works.* +*Explain what risks the user is taking on, and how best to mitigate them.* + +**Do** +- Build your product as open source when possible +- Let people verify, without having to trust +- Be clear about what risk the user is taking on, and how they can lose access to their funds + +**Don't** +- Make claims that are not explained or verifiable + +--- + +## Self-custody + +Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, there is no longer a need for people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that really enables the open financial system of peer-to-peer transactions. + +*Give end users full control of their funds.* + +**Do** +- Let users control their private keys, and funds directly + +**Don't** +- Custody funds for your users + +--- + +## Security + +Self-custody means that the end user is ultimately responsible for keeping their funds and private keys safe. They can only do that if we provide them with good, appropriate tools and awareness of good practice. It is therefore our responsibility as designers and makers to really take their security seriously and make Bitcoin products that are as secure as possible by default. We should strive for no loss of funds, regardless of whether this happens through negligence or theft. + +Security is especially important when onboarding people new to Bitcoin where solutions that might be fine for advanced users might backfire for beginners. New users are likely to start by storing small amounts until they get comfortable with self-custody. A scheme suited for storing large amounts of funds is likely overkill and scary to a beginner, so the concept of progressive security is a good idea. This could let a user upgrade their security and private key management scheme as their savings grow. + +A big part of security is also education and awareness, protecting users from bad actors and potentially their own bad behavior. Bad actors may already know what most users don’t, and be aware of new vulnerabilities. It is unrealistic to expect beginners to take onboard all the knowledge acquired by advanced users of several years in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. + + +*Provide appropriate and progressive security for all types of users.* + +**Do** +- Take safeguarding of users funds seriously +- Provide suitable private key management schemes for beginners +- Offer progressive security and upgrade paths +- Build with bad actors in mind +- Minimize risk of self-inflicted loss from user negligence +- Continuously educate users on best practice and risks + + +**Don't** +- Blame the user for losing funds +- Expect beginners to implement best practice backup strategies + +--- + +## Privacy + +A common misconception of Bitcoin is that it provides complete anonymity and privacy of transactions. Since the blockchain is an unchangeable ledger of all transactions ever made, it is in fact very hard to not have your complete transaction history visible once even a single one of your addresses is connected to you. If Bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions publicly. + +The Bitcoin network doesn’t need to know your name for you to use it. Strive to collect as little personal information as possible about your users. When it is absolutely required to provide the product services, collect only the bare minimum and consider if and when this can be discarded when no longer necessary. If you do collect personal information, be transparent about why and how you will use and store it. + +*Minimize collection of personal information.* +*Maximize financial transaction privacy.* + +**Do** +- Minimize the personal information you collect +- Avoid address reuse +- Embrace privacy-preserving options when relevant (link to other page: running a full node, using compact block filters, tor, LN, privacy-oriented coin selection, schnorr, payjoin, coinswap, etc.) + +**Don't** +- Collect and store personal information not required for the functionality of your product + +--- + +## Interoperability + +Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. + +*No lock-in, users should be able to port wallets and data.* +*Maximum compatibility with open standards.* + +**Do** +- Support import and export of wallets +- Support as many relevant BIPs as possible +- Be transparent with which ones you do and don’t support + + +**Don't** +- Implement proprietary solutions when open standards exist \ No newline at end of file From 18a7cbdc94b23d578a1f19f658d0d71e958dcdbc Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:03:11 +0000 Subject: [PATCH 02/97] Update nav order of other top level pages --- guide/contribute/contribute.md | 2 +- guide/foundations/foundations.md | 2 +- guide/glossary.md | 2 +- guide/onboarding/introduction.md | 2 +- guide/payments/introduction.md | 2 +- guide/private-key-management/introduction.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/guide/contribute/contribute.md b/guide/contribute/contribute.md index f2bbcba0f..9d9f4c0b5 100644 --- a/guide/contribute/contribute.md +++ b/guide/contribute/contribute.md @@ -2,7 +2,7 @@ layout: guide title: Contribute to guide description: Additional material for both readers and writers of the guide. -nav_order: 9 +nav_order: 8 has_children: true permalink: /guide/contribute/ image: /assets/images/guide/contribute/contribute-preview.jpg diff --git a/guide/foundations/foundations.md b/guide/foundations/foundations.md index 50da29612..6d79641f8 100644 --- a/guide/foundations/foundations.md +++ b/guide/foundations/foundations.md @@ -2,7 +2,7 @@ layout: guide title: Foundations description: Basics for designing great Bitcoin products. -nav_order: 5 +nav_order: 6 has_children: true permalink: /guide/foundations/ image: /assets/images/guide/foundations/foundations-preview.jpg diff --git a/guide/glossary.md b/guide/glossary.md index cecad8142..96992df67 100644 --- a/guide/glossary.md +++ b/guide/glossary.md @@ -2,7 +2,7 @@ layout: guide title: Glossary permalink: /guide/glossary/ -nav_order: 6 +nav_order: 7 --- # Glossary diff --git a/guide/onboarding/introduction.md b/guide/onboarding/introduction.md index 2a93f8aa9..4ee8a63a9 100644 --- a/guide/onboarding/introduction.md +++ b/guide/onboarding/introduction.md @@ -2,7 +2,7 @@ layout: guide title: Onboarding description: An overview of some of the concepts to consider when building onboarding experiences. -nav_order: 2 +nav_order: 3 permalink: /guide/onboarding/introduction/ main_classes: -no-top-padding image: /assets/images/guide/onboarding/onboarding.png diff --git a/guide/payments/introduction.md b/guide/payments/introduction.md index 80ff5ccd3..62d597c9e 100644 --- a/guide/payments/introduction.md +++ b/guide/payments/introduction.md @@ -2,7 +2,7 @@ layout: guide title: Payments description: Diving into the user experience of moving Bitcoin -nav_order: 4 +nav_order: 5 has_children: false permalink: /guide/payments/ main_classes: -no-top-padding diff --git a/guide/private-key-management/introduction.md b/guide/private-key-management/introduction.md index 628457963..3fe1f6c46 100644 --- a/guide/private-key-management/introduction.md +++ b/guide/private-key-management/introduction.md @@ -2,7 +2,7 @@ layout: guide title: Private key management description: An overview of private key management schemes, including descriptions of available approaches, some advice and best practices. -nav_order: 3 +nav_order: 4 has_children: true permalink: /guide/private-key-management/introduction/ main_classes: -no-top-padding From c0b32c925bf8dc0a4aa80ffdf23dd94d449e11fc Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:13:08 +0000 Subject: [PATCH 03/97] Internal page links, styling --- guide/principles/principles.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 2702a996c..098b58ee4 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -18,17 +18,16 @@ The key principles of designing for Bitcoin # Bitcoin Design Principles -As a new technology, Bitcoin offers the opportunity of an open financial system without intermediaries. To make this a reality, we encourage everyone that is working on products to deliberately support the core principles of designing for Bitcoin: +As a new technology, Bitcoin offers the opportunity of an open financial system without intermediaries. To make this a reality, we encourage everyone that is working on products to deliberately support the core principles of designing for Bitcoin. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, all applications should strive to follow these principles. Diverging from them should only be done with very good reason. -- Decentralization -- Inclusion -- Transparency -- Self-custody -- Security -- Privacy -- Interoperability -Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, all applications should strive to follow these principles. Diverging from them should only be done with very good reason. +- [Decentralization](#decentralization) +- [Inclusion](#inclusion) +- [Transparency](#transparency) +- [Self-custody](#self-custody) +- [Security](#security) +- [Privacy](#privacy) +- [Interoperability](#interoperability) --- @@ -37,6 +36,7 @@ Some of these come from the technology itself, and others from the behaviour and Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any node on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. *Build products that are permissive in terms of what users can do with Bitcoin.* + *Have fall-back options for connections to the network.* **Do** @@ -57,6 +57,7 @@ There are no background checks, credit checks, or gatekeepers to Bitcoin. A Keny And while Bitcoin is already widely used by a large number of people, it pales in comparison with the billions that will use it in the future. Without dumbing down or reducing the possibilities we need to design products that are prepared for people that are new to Bitcoin. This means using plain and ordinary language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. *Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements.* + *Design Bitcoin products that are usable by the widest range of people possible.* **Do** @@ -77,6 +78,7 @@ And while Bitcoin is already widely used by a large number of people, it pales i While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on and so forth. Let people verify that your claims are true. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. *Be open and transparent with how your product works.* + *Explain what risks the user is taking on, and how best to mitigate them.* **Do** @@ -136,6 +138,7 @@ A common misconception of Bitcoin is that it provides complete anonymity and pri The Bitcoin network doesn’t need to know your name for you to use it. Strive to collect as little personal information as possible about your users. When it is absolutely required to provide the product services, collect only the bare minimum and consider if and when this can be discarded when no longer necessary. If you do collect personal information, be transparent about why and how you will use and store it. *Minimize collection of personal information.* + *Maximize financial transaction privacy.* **Do** @@ -153,6 +156,7 @@ The Bitcoin network doesn’t need to know your name for you to use it. Strive t Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. *No lock-in, users should be able to port wallets and data.* + *Maximum compatibility with open standards.* **Do** From 4744f2299642de08fea19a106d930320e4ef0a7b Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:29:25 +0000 Subject: [PATCH 04/97] Links, tweaks. --- guide/principles/principles.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 098b58ee4..53729638d 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -42,7 +42,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use **Do** - Manage your own private keys - Run a full Bitcoin node when possible -- Alternatively, use a light client with the p2p network (BIP157) using compact block filters (BIP158) +- Alternatively, use a light client with the p2p network [BIP157]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using compact block filters [BIP158]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) - Offer the user choice of what node to connect to **Don't** @@ -67,7 +67,7 @@ And while Bitcoin is already widely used by a large number of people, it pales i - Treat users with impairments, or who rely on assistive technologies, as first-class citizens **Don't** -- Introduce requirements that might exclude many people, for example by building only for high end hardware, requiring US KYC etc +- Introduce requirements that might exclude many people, for example by building only for high-end hardware, requiring US KYC (Know-your-customer) information etc - Avoid technical detail that is not required knowledge, or technical terms like seed phrase XPUBs, mnemonics etc. - Do not put all education up front and expect people to read and remember it @@ -144,7 +144,7 @@ The Bitcoin network doesn’t need to know your name for you to use it. Strive t **Do** - Minimize the personal information you collect - Avoid address reuse -- Embrace privacy-preserving options when relevant (link to other page: running a full node, using compact block filters, tor, LN, privacy-oriented coin selection, schnorr, payjoin, coinswap, etc.) +- Embrace privacy-preserving options when relevant (running a full node, compact block filters, Tor, Lightning Network, coin selection, schnorr signatures, payjoin, coinswap, etc.) **Don't** - Collect and store personal information not required for the functionality of your product @@ -153,7 +153,7 @@ The Bitcoin network doesn’t need to know your name for you to use it. Strive t ## Interoperability -Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. +Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). *No lock-in, users should be able to port wallets and data.* From e740e97d1bfd723b34e5c1c41ef563b061b35351 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:40:20 +0000 Subject: [PATCH 05/97] Delete principles page in PK chapter, clean up in PK chapter --- guide/private-key-management/introduction.md | 8 ++- .../multi-user-schemes.md | 2 +- guide/private-key-management/principles.md | 61 ------------------- 3 files changed, 7 insertions(+), 64 deletions(-) delete mode 100644 guide/private-key-management/principles.md diff --git a/guide/private-key-management/introduction.md b/guide/private-key-management/introduction.md index 3fe1f6c46..8291ba7c1 100644 --- a/guide/private-key-management/introduction.md +++ b/guide/private-key-management/introduction.md @@ -43,9 +43,13 @@ This chapter is meant to give an overview of private key management schemes, inc An overview of the most common private key management schemes for bitcoin products, and thoughts on picking a suitable scheme for your target audience and their use case. -**[Principles]({{ '/guide/private-key-management/principles/' | relative_url }})** +**[Personal schemes]({{ '/guide/private-key-management/single-user-schemes/' | relative_url }})** -Every use case and product is different but there are things that all wallet applications should strive for, and only diverge from with very good reasons. +The schemes that are most common for the personal use of one individual. + +**[Shared schemes]({{ '/guide/private-key-management/single-user-schemes/' | relative_url }})** + +When more than one person wants to share a Bitcoin wallet, multi-key schemes become essential. **[Case studies]({{ '/guide/private-key-management/case-studies/' | relative_url }})** diff --git a/guide/private-key-management/multi-user-schemes.md b/guide/private-key-management/multi-user-schemes.md index 6a6f5842f..3e44d0d4b 100644 --- a/guide/private-key-management/multi-user-schemes.md +++ b/guide/private-key-management/multi-user-schemes.md @@ -87,4 +87,4 @@ Few tailor-made products exist for shared wallets, but any wallet application th --- -Next up, common [principles]({{ '/guide/private-key-management/principles/' | relative_url }}) we should strive to follow. \ No newline at end of file +OK, let's have a look at some [case studies]({{ '/guide/private-key-management/case-studies/' | relative_url }}). \ No newline at end of file diff --git a/guide/private-key-management/principles.md b/guide/private-key-management/principles.md deleted file mode 100644 index 8d98d314a..000000000 --- a/guide/private-key-management/principles.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: guide -title: Principles -description: Principles to strive for while building bitcoin applications for end-users. -nav_order: 4 -parent: Private key management -permalink: /guide/private-key-management/principles/ -main_classes: -no-top-padding -image: /assets/images/guide/private-key-management/principles/page-principles.jpg ---- - - - -{% include picture.html - image = "/assets/images/guide/private-key-management/principles.jpg" - retina = "/assets/images/guide/private-key-management/principles@2x.jpg" - mobile = "/assets/images/guide/private-key-management/principles-mobile.jpg" - mobileRetina = "/assets/images/guide/private-key-management/principles-mobile@2x.jpg" - alt-text = "Principles header illustration" - width = 1600 - height = 600 - layout = "full-width" -%} - -# Principles - -Although every use case and product is different, there are a number of things that all wallet applications should strive for. Diverging from them should only be done with good reason. - -## No loss of funds - -Even though non-custodial wallet-makers don’t technically hold their users’ funds, and are less exposed to regulation, you are still providing a financial service product. It is essential to take the safekeeping of users’ funds seriously. Regardless of how loss could occur, whether it is self-inflicted or through theft, you should have thought this through and implemented adequate measures for the risk-profile of the use-case. This includes not simply blaming a first-time bitcoin user for not manually backing up their recovery phase when you told them to. - -Any loss is ultimately bad for both the user, the wallet application maker and the whole bitcoin community. Strive for *No loss of funds*. - -## Interoperability - -The bitcoin community is firmly built on open-source, decentralization, and the idea that the individual should be in full control of their funds. This has led to a number of standards that should make it fairly easy to switch and move your bitcoin wallet to a different wallet application. Making sure that your product supports these standards when relevant is best practice and builds trust. - -At a minimum, strive for supporting interoperability by enabling import and export, and using standard [address]({{ '/guide/glossary/#address' | relative_url }}){:target="_blank"} derivation schemes. - -## Privacy - -A common misconception of bitcoin is that it provides anonymity and privacy of transactions. Since the blockchain is literally an unchangeable ledger of all bitcoin transactions ever made, it is in fact very hard to not have your complete transaction history visible to knowledgable parties once even a single one of your addresses is connected to you. If bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions publicly. So when building wallet-applications we should strive to implement best practice for maintaining and improving the financial privacy of bitcoin. - -At a minimum, make it easy for your customers to avoid address re-use. - -## Progressive security - -While it is possible to own and store immense wealth in a non-custodial bitcoin wallet, most new users of bitcoin are likely to start with much smaller sums before they get comfortable with depositing material parts of their savings in a wallet where they are responsible for security. There are many guides out there for how to best keep your recovery phrase backup safe, and conduct advanced op-sec to minimise every conceivable threat-vector. This might be appropriate for someone already intimately familiar with bitcoin technology, but is very likely both overkill and scary to the point of turning away new users. Think carefully about who your target customer is and choose a private key management scheme that is well suited to them. - -Strive for your product to grow with the user and provide progressively stronger security. For example, offering the ability to *sweep* a wallet into a new one, with a higher level security scheme once certain thresholds are reached. This way, a beginner could start out with an automatic cloud backup scheme but know that as they grow their funds could upgrade to a multikey setup down the line. - -*** - -OK, let's have a look at some [case studies]({{ '/guide/private-key-management/case-studies/' | relative_url }}). From 3ad7884666194f88bbfdbbab2515a4af56db6129 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:41:02 +0000 Subject: [PATCH 06/97] Remove Principles from PK chapter in Readme content list --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index a354d726f..01b989e1c 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,6 @@ Here is an initial outline that will be updated as needed, content that is live * Private key schemes * Personal schemes * Shared schemes - * Principles * Case studies * Payments and transactions - [Discussion about WIP](https://github.com/BitcoinDesign/Guide/discussions/98) * Transactions overview From 2a6caba5075ffe539f5b393b62551d5076042084 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:43:52 +0000 Subject: [PATCH 07/97] Add link to page from Readme content list --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 01b989e1c..2f3e6e5f4 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Here is an initial outline that will be updated as needed, content that is live * Technology primer * Software overview * Hardware overview -* Bitcoin design principles (to be discussed) +* [Bitcoin design principles](https://bitcoin.design/guide/principles/principles/) * Decentralization * Self-sovereignty * Security From 60adf0b6eba20f9d5d6b2a5085b0e53113c07444 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:44:26 +0000 Subject: [PATCH 08/97] Clean up use of principles word in Foundations description --- guide.md | 2 +- guide/foundations/foundations.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/guide.md b/guide.md index 1ba73f054..a8a53e57b 100644 --- a/guide.md +++ b/guide.md @@ -50,7 +50,7 @@ With Bitcoin being so new and different, a big focus of the guide lies on provid - [Onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) goes in-depth on the delicate process of introducing new users to bitcoin and how to use specific products and features - [Private key management]({{ '/guide/private-key-management/introduction/' | relative_url }}) provides extensive details and guidance on the many techniques for storing private keys - [Payments]({{ '/guide/payments/' | relative_url }}) deals with the complexities of sending and receiving bitcoin across various use cases -- [Foundations]({{ '/guide/foundations/' | relative_url }}) highlights principles, best practices and other useful information for designing Bitcoin products +- [Foundations]({{ '/guide/foundations/' | relative_url }}) basics and best practices and other useful information for designing Bitcoin products - [Glossary]({{ '/guide/glossary/' | relative_url }}) explains common Bitcoin terminology, from Address to ZPUB. ## How to use the guide diff --git a/guide/foundations/foundations.md b/guide/foundations/foundations.md index 6d79641f8..2c78823b0 100644 --- a/guide/foundations/foundations.md +++ b/guide/foundations/foundations.md @@ -10,7 +10,7 @@ image: /assets/images/guide/foundations/foundations-preview.jpg # Foundations -Learn about some of the basic principles to keep in mind when designing Bitcoin applications. +Learn about some of the basics to keep in mind when designing Bitcoin applications. --- From 75387b3b859c9c14846dce1713557110da1146ce Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:48:27 +0000 Subject: [PATCH 09/97] Tweak sentence after feedback. --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 53729638d..78912e4da 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -18,7 +18,7 @@ The key principles of designing for Bitcoin # Bitcoin Design Principles -As a new technology, Bitcoin offers the opportunity of an open financial system without intermediaries. To make this a reality, we encourage everyone that is working on products to deliberately support the core principles of designing for Bitcoin. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, all applications should strive to follow these principles. Diverging from them should only be done with very good reason. +As a new technology, Bitcoin offers the opportunity of a decentralized open financial system without intermediaries. To make this a reality, we encourage everyone that is working on products to deliberately support the core principles of designing for Bitcoin. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, all applications should strive to follow these principles. Diverging from them should only be done with very good reason. - [Decentralization](#decentralization) From 9d4f8a95be93a15815056290e563ae21adc037a2 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:50:38 +0000 Subject: [PATCH 10/97] Remove Principles section from Onboarding chapter intro page cc: @ConorOkus --- guide/onboarding/introduction.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/guide/onboarding/introduction.md b/guide/onboarding/introduction.md index 4ee8a63a9..262d549c1 100644 --- a/guide/onboarding/introduction.md +++ b/guide/onboarding/introduction.md @@ -42,12 +42,6 @@ Remember: Onboarding should not be a crutch for bad design. Avoid trying to expl --- -**Principles (coming soon)** - -Onboarding experiences can look very different depending on your target audience, however, some things should be consistent across Bitcoin products. - ---- - **Getting to know your users (coming soon)** This section will give you some tips on how best to understand and develop knowledge about your users. From 17d7b45f775a5db51657d881ec6d0a8e6ab73ca7 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:52:45 +0000 Subject: [PATCH 11/97] Update page name to 'Bitcoin design principles' --- guide/principles/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 78912e4da..877663ce1 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -1,6 +1,6 @@ --- layout: guide -title: Principles +title: Bitcoin design principles description: The key principles to follow when designing Bitcoin products. nav_order: 2 has_children: false @@ -16,7 +16,7 @@ The key principles of designing for Bitcoin --> -# Bitcoin Design Principles +# Bitcoin design principles As a new technology, Bitcoin offers the opportunity of a decentralized open financial system without intermediaries. To make this a reality, we encourage everyone that is working on products to deliberately support the core principles of designing for Bitcoin. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, all applications should strive to follow these principles. Diverging from them should only be done with very good reason. From 136f9271e82bd22149fef5125e9b6fae09cb67f8 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 10:54:25 +0000 Subject: [PATCH 12/97] Styling --- guide/principles/principles.md | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 877663ce1..9ebaa06a3 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -35,8 +35,7 @@ As a new technology, Bitcoin offers the opportunity of a decentralized open fina Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any node on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. -*Build products that are permissive in terms of what users can do with Bitcoin.* - +*Build products that are permissive in terms of what users can do with Bitcoin.*
*Have fall-back options for connections to the network.* **Do** @@ -56,8 +55,7 @@ There are no background checks, credit checks, or gatekeepers to Bitcoin. A Keny And while Bitcoin is already widely used by a large number of people, it pales in comparison with the billions that will use it in the future. Without dumbing down or reducing the possibilities we need to design products that are prepared for people that are new to Bitcoin. This means using plain and ordinary language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. -*Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements.* - +*Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements.*
*Design Bitcoin products that are usable by the widest range of people possible.* **Do** @@ -77,8 +75,7 @@ And while Bitcoin is already widely used by a large number of people, it pales i While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on and so forth. Let people verify that your claims are true. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. -*Be open and transparent with how your product works.* - +*Be open and transparent with how your product works.*
*Explain what risks the user is taking on, and how best to mitigate them.* **Do** @@ -137,8 +134,7 @@ A common misconception of Bitcoin is that it provides complete anonymity and pri The Bitcoin network doesn’t need to know your name for you to use it. Strive to collect as little personal information as possible about your users. When it is absolutely required to provide the product services, collect only the bare minimum and consider if and when this can be discarded when no longer necessary. If you do collect personal information, be transparent about why and how you will use and store it. -*Minimize collection of personal information.* - +*Minimize collection of personal information.*
*Maximize financial transaction privacy.* **Do** @@ -155,8 +151,7 @@ The Bitcoin network doesn’t need to know your name for you to use it. Strive t Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). -*No lock-in, users should be able to port wallets and data.* - +*No lock-in, users should be able to port wallets and data.*
*Maximum compatibility with open standards.* **Do** From c2ffe7373f5c40adb435f56be26b2333cf61f147 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Feb 2021 11:27:21 +0000 Subject: [PATCH 13/97] Link tweaks --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 9ebaa06a3..6392a03be 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -41,7 +41,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use **Do** - Manage your own private keys - Run a full Bitcoin node when possible -- Alternatively, use a light client with the p2p network [BIP157]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using compact block filters [BIP158]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) +- Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) - Offer the user choice of what node to connect to **Don't** From 3b988132f7101c0c26b653643635d52c8d374814 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 10:57:21 +0000 Subject: [PATCH 14/97] Better sentences about decentralization and why an open financial system is important in intro paragraph --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 6392a03be..52a9a27a4 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -18,7 +18,7 @@ The key principles of designing for Bitcoin # Bitcoin design principles -As a new technology, Bitcoin offers the opportunity of a decentralized open financial system without intermediaries. To make this a reality, we encourage everyone that is working on products to deliberately support the core principles of designing for Bitcoin. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, all applications should strive to follow these principles. Diverging from them should only be done with very good reason. +As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone that is working on products to deliberately support the core principles of designing for Bitcoin. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, all applications should strive to follow these principles. Diverging from them should only be done with very good reason. - [Decentralization](#decentralization) From fdc0b4a64118573261cf4107c5f7f02f7af48557 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 10:58:37 +0000 Subject: [PATCH 15/97] Update permalink Co-authored-by: Christoph Ono --- guide/principles/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 52a9a27a4..3d3561d78 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -4,7 +4,7 @@ title: Bitcoin design principles description: The key principles to follow when designing Bitcoin products. nav_order: 2 has_children: false -permalink: /guide/principles/principles/ +permalink: /guide/principles/ main_classes: -no-top-padding --- @@ -161,4 +161,4 @@ Bitcoin is an open-source protocol, operated in a decentralized manner. This has **Don't** -- Implement proprietary solutions when open standards exist \ No newline at end of file +- Implement proprietary solutions when open standards exist From 7a7d5c281ff7d7ef96c9cd58e842f409af5df5d2 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:01:21 +0000 Subject: [PATCH 16/97] Expand to mention other external services --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 3d3561d78..bdb6dbba5 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -42,7 +42,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use - Manage your own private keys - Run a full Bitcoin node when possible - Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) -- Offer the user choice of what node to connect to +- Offer the user choice of what node and other external services to connect to **Don't** - Introduce a single point of failure between the user and the Bitcoin network From 6fbc9ac04836993f936b8b336f7ad3c4ddd9df41 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:04:16 +0000 Subject: [PATCH 17/97] Add decentralization 'don't' for products that stop working if project shuts down --- guide/principles/principles.md | 1 + 1 file changed, 1 insertion(+) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index bdb6dbba5..2feecfc36 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -46,6 +46,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use **Don't** - Introduce a single point of failure between the user and the Bitcoin network +- Build products that stop working if the project shuts down --- From 57eaa26f56584e95d2238d4a824edc556e4cf126 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:06:06 +0000 Subject: [PATCH 18/97] Better wording Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 2feecfc36..0dad1afae 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -54,7 +54,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use There are no background checks, credit checks, or gatekeepers to Bitcoin. A Kenyan farmer has the same access to Bitcoin as a Wall Street trader. -And while Bitcoin is already widely used by a large number of people, it pales in comparison with the billions that will use it in the future. Without dumbing down or reducing the possibilities we need to design products that are prepared for people that are new to Bitcoin. This means using plain and ordinary language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. +And while Bitcoin is already widely used by a large number of people, it pales in comparison with the billions that will use it in the future. We need to design products that are prepared for people new to Bitcoin, without reducing the possibilities. This means using plain and familiar language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. *Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements.*
*Design Bitcoin products that are usable by the widest range of people possible.* From 6157b9f9fd6dda0678523e590c55242e8d32437c Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:06:30 +0000 Subject: [PATCH 19/97] Better wording Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 0dad1afae..559e2ae32 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -67,7 +67,7 @@ And while Bitcoin is already widely used by a large number of people, it pales i **Don't** - Introduce requirements that might exclude many people, for example by building only for high-end hardware, requiring US KYC (Know-your-customer) information etc -- Avoid technical detail that is not required knowledge, or technical terms like seed phrase XPUBs, mnemonics etc. +- Add technical detail that is not required knowledge, or technical terms like seed phrase XPUBs, mnemonics etc. - Do not put all education up front and expect people to read and remember it --- From c3c391085365631956c4c385e92e3c80a18a3c93 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:07:16 +0000 Subject: [PATCH 20/97] Spelling Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 559e2ae32..1ac2265f4 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -80,7 +80,7 @@ While an open and decentralized financial system that lets people connect direct *Explain what risks the user is taking on, and how best to mitigate them.* **Do** -- Build your product as open source when possible +- Build your product as open-source when possible - Let people verify, without having to trust - Be clear about what risk the user is taking on, and how they can lose access to their funds From 264f8965866663f98393b249c30364ced25b094b Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:07:41 +0000 Subject: [PATCH 21/97] Better wording Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 1ac2265f4..24744ca89 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -68,7 +68,7 @@ And while Bitcoin is already widely used by a large number of people, it pales i **Don't** - Introduce requirements that might exclude many people, for example by building only for high-end hardware, requiring US KYC (Know-your-customer) information etc - Add technical detail that is not required knowledge, or technical terms like seed phrase XPUBs, mnemonics etc. -- Do not put all education up front and expect people to read and remember it +- Put all education up front and expect people to read and remember it --- From f229e292173f971ddce0d521d956d14d5afdb869 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:08:01 +0000 Subject: [PATCH 22/97] Better wording Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 24744ca89..c72a8008b 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -109,7 +109,7 @@ Self-custody means that the end user is ultimately responsible for keeping their Security is especially important when onboarding people new to Bitcoin where solutions that might be fine for advanced users might backfire for beginners. New users are likely to start by storing small amounts until they get comfortable with self-custody. A scheme suited for storing large amounts of funds is likely overkill and scary to a beginner, so the concept of progressive security is a good idea. This could let a user upgrade their security and private key management scheme as their savings grow. -A big part of security is also education and awareness, protecting users from bad actors and potentially their own bad behavior. Bad actors may already know what most users don’t, and be aware of new vulnerabilities. It is unrealistic to expect beginners to take onboard all the knowledge acquired by advanced users of several years in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. +A big part of security is also education and awareness, protecting users from bad actors and potentially their own bad behavior. Bad actors may already know what most users don’t, and be aware of new vulnerabilities. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users of several years in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. *Provide appropriate and progressive security for all types of users.* From f29f2d7a0f5d1f9a7f78e1b0438bcd02bf5bd032 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:10:26 +0000 Subject: [PATCH 23/97] Better wording --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index c72a8008b..89465d495 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -18,7 +18,7 @@ The key principles of designing for Bitcoin # Bitcoin design principles -As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone that is working on products to deliberately support the core principles of designing for Bitcoin. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, all applications should strive to follow these principles. Diverging from them should only be done with very good reason. +As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. - [Decentralization](#decentralization) From 6d5b928f2636e85e9381dfc9d71c7fb615ef2128 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:13:34 +0000 Subject: [PATCH 24/97] Add link to glossary Co-authored-by: Pavlenex --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 89465d495..571b5a923 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -33,7 +33,7 @@ As a new technology, Bitcoin offers the opportunity of a decentralized open fina ## Decentralization -Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any node on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. +Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node](({{ '/guide/glossary/#node/ | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. *Build products that are permissive in terms of what users can do with Bitcoin.*
*Have fall-back options for connections to the network.* From e2f8a80b4171e6fa192fcb3a382ac05f42d94525 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:14:27 +0000 Subject: [PATCH 25/97] Add link Co-authored-by: Pavlenex --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 571b5a923..c9e839714 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -39,7 +39,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use *Have fall-back options for connections to the network.* **Do** -- Manage your own private keys +- [Manage your own private keys](({{ '/guide/private-key-management/introduction/ | relative_url }}) - Run a full Bitcoin node when possible - Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) - Offer the user choice of what node and other external services to connect to From 304bc120f0d4a23bd4a938c3aa47a1e2c9eb0c12 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:15:19 +0000 Subject: [PATCH 26/97] Only link from [private keys] --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index c9e839714..9ef239928 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -39,7 +39,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use *Have fall-back options for connections to the network.* **Do** -- [Manage your own private keys](({{ '/guide/private-key-management/introduction/ | relative_url }}) +- Manage your own [private keys](({{ '/guide/private-key-management/introduction/ | relative_url }}) - Run a full Bitcoin node when possible - Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) - Offer the user choice of what node and other external services to connect to From 5e3906d5a53fcfb3c52aac06636e20909e0678e8 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:21:15 +0000 Subject: [PATCH 27/97] Tone down prediction. --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 9ef239928..4f0a081bb 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -54,7 +54,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use There are no background checks, credit checks, or gatekeepers to Bitcoin. A Kenyan farmer has the same access to Bitcoin as a Wall Street trader. -And while Bitcoin is already widely used by a large number of people, it pales in comparison with the billions that will use it in the future. We need to design products that are prepared for people new to Bitcoin, without reducing the possibilities. This means using plain and familiar language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. +And while Bitcoin is already widely used by a large number of people, it pales in comparison with the many more that are likely to use it in the future. We need to design products that are prepared for people new to Bitcoin, without reducing the possibilities. This means using plain and familiar language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. *Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements.*
*Design Bitcoin products that are usable by the widest range of people possible.* From 20d9515501408182994cebaecd30cfa203e40b96 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:22:53 +0000 Subject: [PATCH 28/97] Better wording Co-authored-by: Pavlenex --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 4f0a081bb..b94b9a0bd 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -91,7 +91,7 @@ While an open and decentralized financial system that lets people connect direct ## Self-custody -Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, there is no longer a need for people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that really enables the open financial system of peer-to-peer transactions. +Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, there is no longer a need for people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. *Give end users full control of their funds.* From 256e0ae93f735736adca1d90bfa1c4fab306947d Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:24:20 +0000 Subject: [PATCH 29/97] Better wording --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index b94b9a0bd..3f26cdf27 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -105,7 +105,7 @@ Our existing mental models of access to digital services are usernames and passw ## Security -Self-custody means that the end user is ultimately responsible for keeping their funds and private keys safe. They can only do that if we provide them with good, appropriate tools and awareness of good practice. It is therefore our responsibility as designers and makers to really take their security seriously and make Bitcoin products that are as secure as possible by default. We should strive for no loss of funds, regardless of whether this happens through negligence or theft. +Self-custody means that the end user is ultimately responsible for keeping their funds and private keys safe. They can only do that if we provide them with good, appropriate tools and awareness of best practices. It is therefore our responsibility as designers and makers to really take their security seriously and make Bitcoin products that are as secure as possible by default. We should strive for no loss of funds, regardless of whether this happens through negligence or theft. Security is especially important when onboarding people new to Bitcoin where solutions that might be fine for advanced users might backfire for beginners. New users are likely to start by storing small amounts until they get comfortable with self-custody. A scheme suited for storing large amounts of funds is likely overkill and scary to a beginner, so the concept of progressive security is a good idea. This could let a user upgrade their security and private key management scheme as their savings grow. From 0f557c70053dd360d21272056666b5404f61ccad Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:25:55 +0000 Subject: [PATCH 30/97] Change back to 'Principles' in nav bar. --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 3f26cdf27..621eb9c6b 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -1,6 +1,6 @@ --- layout: guide -title: Bitcoin design principles +title: Principles description: The key principles to follow when designing Bitcoin products. nav_order: 2 has_children: false From 6bf33a0a94768181f9c0adec43eff1245a80f570 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:28:55 +0000 Subject: [PATCH 31/97] Add to Transparency 'Do's' --- guide/principles/principles.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 621eb9c6b..6dd872468 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -80,9 +80,10 @@ While an open and decentralized financial system that lets people connect direct *Explain what risks the user is taking on, and how best to mitigate them.* **Do** +- Be open and transparent with how your product works - Build your product as open-source when possible - Let people verify, without having to trust -- Be clear about what risk the user is taking on, and how they can lose access to their funds +- Explain what risks the user is taking on, and how best to mitigate them **Don't** - Make claims that are not explained or verifiable From 7b8e2f338ecef41a0d401e199e52331844b31a37 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:36:33 +0000 Subject: [PATCH 32/97] Add sentence about the feeling of security. --- guide/principles/principles.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 6dd872468..f95807d71 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -112,6 +112,8 @@ Security is especially important when onboarding people new to Bitcoin where sol A big part of security is also education and awareness, protecting users from bad actors and potentially their own bad behavior. Bad actors may already know what most users don’t, and be aware of new vulnerabilities. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users of several years in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. +Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure compared to one with the exact same security measures that lack these soft qualities. + *Provide appropriate and progressive security for all types of users.* @@ -127,6 +129,7 @@ A big part of security is also education and awareness, protecting users from ba **Don't** - Blame the user for losing funds - Expect beginners to implement best practice backup strategies +- Underestimate the added *feeling* of security that can come from well polished products --- From 62d7a7aa042ee4545aecb876deb60a4174df7297 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 11:40:12 +0000 Subject: [PATCH 33/97] Explain that the principles have ben identified by the Bitcoin design community. --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index f95807d71..8c2ebc7d2 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -18,7 +18,7 @@ The key principles of designing for Bitcoin # Bitcoin design principles -As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. +As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. These are principles we in the Bitcoin Design Community have identified and stand behind. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. - [Decentralization](#decentralization) From df4d515c094169ea0f54968751b50e70cfe8f6d1 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 12:02:46 +0000 Subject: [PATCH 34/97] Reorganize 'one sentence' explainer for each principle. (Previously italic below paragraphs) --- guide/principles/principles.md | 41 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 8c2ebc7d2..7abd9e899 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -33,10 +33,9 @@ As a new technology, Bitcoin offers the opportunity of a decentralized open fina ## Decentralization -Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node](({{ '/guide/glossary/#node/ | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. +> Encourage the running of your own bitcoin node and connecting directly to the network. -*Build products that are permissive in terms of what users can do with Bitcoin.*
-*Have fall-back options for connections to the network.* +Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node](({{ '/guide/glossary/#node/ | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. **Do** - Manage your own [private keys](({{ '/guide/private-key-management/introduction/ | relative_url }}) @@ -52,14 +51,15 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use ## Inclusion +> Provide equal access regardless of the user's location, ability and prior knowledge + There are no background checks, credit checks, or gatekeepers to Bitcoin. A Kenyan farmer has the same access to Bitcoin as a Wall Street trader. And while Bitcoin is already widely used by a large number of people, it pales in comparison with the many more that are likely to use it in the future. We need to design products that are prepared for people new to Bitcoin, without reducing the possibilities. This means using plain and familiar language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. -*Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements.*
-*Design Bitcoin products that are usable by the widest range of people possible.* - **Do** +- Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements +- Design Bitcoin products that are usable by the widest range of people possible - Use plain language that people new to Bitcoin can understand regardless of prior knowledge - Use more languages than just english - Educate in place, when people are presented with a new concept @@ -74,10 +74,9 @@ And while Bitcoin is already widely used by a large number of people, it pales i ## Transparency -While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on and so forth. Let people verify that your claims are true. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. +> Open-source your products and clearly explain how they work -*Be open and transparent with how your product works.*
-*Explain what risks the user is taking on, and how best to mitigate them.* +While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on and so forth. Let people verify that your claims are true. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. **Do** - Be open and transparent with how your product works @@ -92,20 +91,23 @@ While an open and decentralized financial system that lets people connect direct ## Self-custody -Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, there is no longer a need for people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. +> Give users control of their private keys, with no risk for seizure or freezing of their funds -*Give end users full control of their funds.* +Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, there is no longer a need for people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. **Do** -- Let users control their private keys, and funds directly +- Let users control their private keys and funds directly **Don't** - Custody funds for your users +- Build products where the users' funds can be seized, or frozen --- ## Security +> Provide appropriate and progressive security for all types of users + Self-custody means that the end user is ultimately responsible for keeping their funds and private keys safe. They can only do that if we provide them with good, appropriate tools and awareness of best practices. It is therefore our responsibility as designers and makers to really take their security seriously and make Bitcoin products that are as secure as possible by default. We should strive for no loss of funds, regardless of whether this happens through negligence or theft. Security is especially important when onboarding people new to Bitcoin where solutions that might be fine for advanced users might backfire for beginners. New users are likely to start by storing small amounts until they get comfortable with self-custody. A scheme suited for storing large amounts of funds is likely overkill and scary to a beginner, so the concept of progressive security is a good idea. This could let a user upgrade their security and private key management scheme as their savings grow. @@ -115,8 +117,6 @@ A big part of security is also education and awareness, protecting users from ba Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure compared to one with the exact same security measures that lack these soft qualities. -*Provide appropriate and progressive security for all types of users.* - **Do** - Take safeguarding of users funds seriously - Provide suitable private key management schemes for beginners @@ -135,13 +135,12 @@ Security can also be a feeling. A product that is polished, good looking, easy t ## Privacy +> Minimize collection of personal information, and maximize financial transaction privacy + A common misconception of Bitcoin is that it provides complete anonymity and privacy of transactions. Since the blockchain is an unchangeable ledger of all transactions ever made, it is in fact very hard to not have your complete transaction history visible once even a single one of your addresses is connected to you. If Bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions publicly. The Bitcoin network doesn’t need to know your name for you to use it. Strive to collect as little personal information as possible about your users. When it is absolutely required to provide the product services, collect only the bare minimum and consider if and when this can be discarded when no longer necessary. If you do collect personal information, be transparent about why and how you will use and store it. -*Minimize collection of personal information.*
-*Maximize financial transaction privacy.* - **Do** - Minimize the personal information you collect - Avoid address reuse @@ -154,16 +153,16 @@ The Bitcoin network doesn’t need to know your name for you to use it. Strive t ## Interoperability -Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). +> Enable import and export of wallets, maximise backwards compatibility and use of open standards -*No lock-in, users should be able to port wallets and data.*
-*Maximum compatibility with open standards.* +Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). **Do** - Support import and export of wallets - Support as many relevant BIPs as possible - Be transparent with which ones you do and don’t support - +- Maximize backwards compatibility **Don't** +- Lock your users in - Implement proprietary solutions when open standards exist From 981f57c29e4d8a0ded99f84264bcad4cc2e287bd Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 12:07:13 +0000 Subject: [PATCH 35/97] Spelling Co-authored-by: Pavlenex --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 7abd9e899..dc7f6703e 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -61,7 +61,7 @@ And while Bitcoin is already widely used by a large number of people, it pales i - Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements - Design Bitcoin products that are usable by the widest range of people possible - Use plain language that people new to Bitcoin can understand regardless of prior knowledge -- Use more languages than just english +- Use more languages than just English - Educate in place, when people are presented with a new concept - Treat users with impairments, or who rely on assistive technologies, as first-class citizens From 8935f89bf020524e53779e33a9f5227379f2c0a2 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 12:20:26 +0000 Subject: [PATCH 36/97] Tweaks to blockquotes --- guide/principles/principles.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index dc7f6703e..f17fc0aae 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -33,7 +33,7 @@ As a new technology, Bitcoin offers the opportunity of a decentralized open fina ## Decentralization -> Encourage the running of your own bitcoin node and connecting directly to the network. +> Encourage users to run their own bitcoin node and connect directly to the network Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node](({{ '/guide/glossary/#node/ | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. @@ -51,7 +51,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use ## Inclusion -> Provide equal access regardless of the user's location, ability and prior knowledge +> Provide equal access regardless of the user's location, language, ability and prior knowledge of bitcoin There are no background checks, credit checks, or gatekeepers to Bitcoin. A Kenyan farmer has the same access to Bitcoin as a Wall Street trader. @@ -91,7 +91,7 @@ While an open and decentralized financial system that lets people connect direct ## Self-custody -> Give users control of their private keys, with no risk for seizure or freezing of their funds +> Let users control their private keys, with no risk for seizure or freezing of funds Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, there is no longer a need for people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. @@ -114,7 +114,7 @@ Security is especially important when onboarding people new to Bitcoin where sol A big part of security is also education and awareness, protecting users from bad actors and potentially their own bad behavior. Bad actors may already know what most users don’t, and be aware of new vulnerabilities. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users of several years in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. -Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure compared to one with the exact same security measures that lack these soft qualities. +Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure. Especialy compared to one with the exact same security measures that lack these qualities. **Do** From f9bb124db9a322db1be2463e0f615f5600699dd5 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 12:22:49 +0000 Subject: [PATCH 37/97] Fix broken links. --- guide/principles/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index f17fc0aae..9f843dca9 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -35,10 +35,10 @@ As a new technology, Bitcoin offers the opportunity of a decentralized open fina > Encourage users to run their own bitcoin node and connect directly to the network -Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node](({{ '/guide/glossary/#node/ | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. +Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node](({{ '/guide/glossary/#node/' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. **Do** -- Manage your own [private keys](({{ '/guide/private-key-management/introduction/ | relative_url }}) +- Manage your own [private keys](({{ '/guide/private-key-management/introduction/' | relative_url }}) - Run a full Bitcoin node when possible - Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) - Offer the user choice of what node and other external services to connect to From 56488e05944e66d4a2e374c5c9e76240e69e3f85 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 12:25:19 +0000 Subject: [PATCH 38/97] Fix links, again --- guide/principles/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 9f843dca9..9e674c176 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -35,10 +35,10 @@ As a new technology, Bitcoin offers the opportunity of a decentralized open fina > Encourage users to run their own bitcoin node and connect directly to the network -Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node](({{ '/guide/glossary/#node/' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. +Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node/' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. **Do** -- Manage your own [private keys](({{ '/guide/private-key-management/introduction/' | relative_url }}) +- Manage your own [private keys]({{ '/guide/private-key-management/introduction/' | relative_url }}) - Run a full Bitcoin node when possible - Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) - Offer the user choice of what node and other external services to connect to From 9f2633e0f7e7f46c306eab06522284d6346cff0e Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 12:27:47 +0000 Subject: [PATCH 39/97] Capital B --- guide/principles/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 9e674c176..60f02519b 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -33,7 +33,7 @@ As a new technology, Bitcoin offers the opportunity of a decentralized open fina ## Decentralization -> Encourage users to run their own bitcoin node and connect directly to the network +> Encourage users to run their own Bitcoin node and connect directly to the network Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node/' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. @@ -51,7 +51,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use ## Inclusion -> Provide equal access regardless of the user's location, language, ability and prior knowledge of bitcoin +> Provide equal access regardless of the user's location, language, ability and prior knowledge of Bitcoin There are no background checks, credit checks, or gatekeepers to Bitcoin. A Kenyan farmer has the same access to Bitcoin as a Wall Street trader. From 8195bd22f55fc378680a7d65ff63837fca5942da Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Feb 2021 12:35:50 +0000 Subject: [PATCH 40/97] Add Do about minimizing external code dependency --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 60f02519b..aa33f7843 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -124,7 +124,7 @@ Security can also be a feeling. A product that is polished, good looking, easy t - Build with bad actors in mind - Minimize risk of self-inflicted loss from user negligence - Continuously educate users on best practice and risks - +- Reduce attack surface by minimizing use of external code dependencies **Don't** - Blame the user for losing funds From 38f21a8eb1efacfa1de6423fde6e14735702cf21 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 5 Mar 2021 09:42:29 +0000 Subject: [PATCH 41/97] Fix link Co-authored-by: Pavlenex --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index aa33f7843..c5f58bf11 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -35,7 +35,7 @@ As a new technology, Bitcoin offers the opportunity of a decentralized open fina > Encourage users to run their own Bitcoin node and connect directly to the network -Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node/' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. +Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. **Do** - Manage your own [private keys]({{ '/guide/private-key-management/introduction/' | relative_url }}) From 032576d50b083bfcdb1ce9a77554c21dfd7d2676 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 5 Mar 2021 09:42:59 +0000 Subject: [PATCH 42/97] Formatting Co-authored-by: Pavlenex --- guide/principles/principles.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index c5f58bf11..783e01897 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -18,7 +18,9 @@ The key principles of designing for Bitcoin # Bitcoin design principles -As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. These are principles we in the Bitcoin Design Community have identified and stand behind. Some of these come from the technology itself, and others from the behaviour and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. +As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. + +These are principles we in the Bitcoin Design Community have identified and stand behind. Some of these come from the technology itself, and others from the behavior and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. - [Decentralization](#decentralization) From 9cefa33c47d5cf9df668f8f55f7b19e1917d63f7 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 5 Mar 2021 09:47:04 +0000 Subject: [PATCH 43/97] Language Co-authored-by: Pavlenex --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 783e01897..9b20a2c09 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -35,7 +35,7 @@ These are principles we in the Bitcoin Design Community have identified and stan ## Decentralization -> Encourage users to run their own Bitcoin node and connect directly to the network +> Design products that encourage people to run a full Bitcoin node Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. From 0a902368441abf37d1ec2d2daf8b9dd68eb733a6 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 5 Mar 2021 09:47:36 +0000 Subject: [PATCH 44/97] Cut duplicate Co-authored-by: Pavlenex --- guide/principles/principles.md | 1 - 1 file changed, 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 9b20a2c09..a27c162fc 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -40,7 +40,6 @@ These are principles we in the Bitcoin Design Community have identified and stan Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. **Do** -- Manage your own [private keys]({{ '/guide/private-key-management/introduction/' | relative_url }}) - Run a full Bitcoin node when possible - Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) - Offer the user choice of what node and other external services to connect to From edfcdda41cf0cff28efccd853da59bfda005b110 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 5 Mar 2021 09:48:19 +0000 Subject: [PATCH 45/97] Wording Co-authored-by: Pavlenex --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index a27c162fc..dc96b3608 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -62,7 +62,7 @@ And while Bitcoin is already widely used by a large number of people, it pales i - Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements - Design Bitcoin products that are usable by the widest range of people possible - Use plain language that people new to Bitcoin can understand regardless of prior knowledge -- Use more languages than just English +- Localize your product and make it multilingual - Educate in place, when people are presented with a new concept - Treat users with impairments, or who rely on assistive technologies, as first-class citizens From 17035b9e87ba4d5b76a3d8ebbd3216950274fe4e Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 09:24:58 +0000 Subject: [PATCH 46/97] Update guide/principles/principles.md Wording Co-authored-by: Pavlenex --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index dc96b3608..ebdf680d5 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -52,7 +52,7 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use ## Inclusion -> Provide equal access regardless of the user's location, language, ability and prior knowledge of Bitcoin +> Build borderless products without location, language, social or political barriers There are no background checks, credit checks, or gatekeepers to Bitcoin. A Kenyan farmer has the same access to Bitcoin as a Wall Street trader. From fd349e1693194e7704d51fe74243ec5d6f5df4d6 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 10:28:06 +0000 Subject: [PATCH 47/97] Fix conflict with master in guide.md --- guide.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/guide.md b/guide.md index a8a53e57b..eddda244d 100644 --- a/guide.md +++ b/guide.md @@ -2,10 +2,11 @@ layout: guide nav_order: 1 title: Guide +secondary_nav_title: Introduction description: The Bitcoin Design Guide is a reference for the design of bitcoin applications. permalink: /guide/ main_nav: true -secondary_nav: false +secondary_nav: true main_classes: -no-top-padding image: /assets/images/guide/bitcoin-island-preview.jpg --- @@ -50,7 +51,8 @@ With Bitcoin being so new and different, a big focus of the guide lies on provid - [Onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) goes in-depth on the delicate process of introducing new users to bitcoin and how to use specific products and features - [Private key management]({{ '/guide/private-key-management/introduction/' | relative_url }}) provides extensive details and guidance on the many techniques for storing private keys - [Payments]({{ '/guide/payments/' | relative_url }}) deals with the complexities of sending and receiving bitcoin across various use cases -- [Foundations]({{ '/guide/foundations/' | relative_url }}) basics and best practices and other useful information for designing Bitcoin products +- [Foundations]({{ '/guide/foundations/' | relative_url }}) highlights principles, best practices and other useful information for designing Bitcoin products +- [Case studies]({{ '/guide/case-studies/' | relative_url }}) explores approaches to diverse uses cases with wireframes, designs and prototypes. - [Glossary]({{ '/guide/glossary/' | relative_url }}) explains common Bitcoin terminology, from Address to ZPUB. ## How to use the guide From 2817605e19924de57c9d77038ea634cfca97b17c Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 10:32:20 +0000 Subject: [PATCH 48/97] Fix conflicts with master in glossary.md --- guide/glossary.md | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/guide/glossary.md b/guide/glossary.md index 96992df67..b1af2be74 100644 --- a/guide/glossary.md +++ b/guide/glossary.md @@ -2,12 +2,43 @@ layout: guide title: Glossary permalink: /guide/glossary/ -nav_order: 7 +nav_order: 8 +main_classes: -no-top-padding +image: /assets/images/guide/glossary/glossary-preview.jpg --- + + +{% include picture.html + image = "/assets/images/guide/glossary/glossary.png" + retina = "/assets/images/guide/glossary/glossary@2x.png" + mobile = "/assets/images/guide/glossary/glossary-mobile.png" + mobileRetina = "/assets/images/guide/glossary/glossary-mobile@2x.png" + alt-text = "Notebook with handwritten user actions" + width = 1600 + height = 550 + layout = "full-width" +%} + # Glossary {: .no_toc } +--- + +
+ * Table of contents +{:toc} +
+ +--- + ## Address An identifier of 26-35 alphanumeric characters that is used to receive bitcoin. There are [several address formats](https://en.bitcoin.it/wiki/List_of_address_prefixes) based on different specifications. Users need to know this information during backup for future recovery so applications should inform users which format it uses as support varies across applications. From 012ecf3f8291d2a9c7dc16f2ff69f8bdaec11345 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:04:17 +0000 Subject: [PATCH 49/97] Address maker, soften wording around running a node --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index ebdf680d5..b04adb652 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -40,7 +40,7 @@ These are principles we in the Bitcoin Design Community have identified and stan Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. **Do** -- Run a full Bitcoin node when possible +- Design products that encourage people to run a full Bitcoin node - Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) - Offer the user choice of what node and other external services to connect to From 7e73385149cd1c0c921b5435065cd7cc65205a7f Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:08:20 +0000 Subject: [PATCH 50/97] Add Do around 'path to self custody' --- guide/principles/principles.md | 1 + 1 file changed, 1 insertion(+) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index b04adb652..328e5b5a2 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -98,6 +98,7 @@ Our existing mental models of access to digital services are usernames and passw **Do** - Let users control their private keys and funds directly +- Create an easy path to self-custody for Bitcoin beginners **Don't** - Custody funds for your users From 47bbe4ca7bf922d1434cc3a89f346666a904b150 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:11:47 +0000 Subject: [PATCH 51/97] Tweak Transparency pull-quote --- guide/principles/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 328e5b5a2..82af4ee89 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -75,9 +75,9 @@ And while Bitcoin is already widely used by a large number of people, it pales i ## Transparency -> Open-source your products and clearly explain how they work +> Be open and transparent with how your product works, open-source your code when possible -While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on and so forth. Let people verify that your claims are true. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. +While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on. Let people verify that your claims are true, ideally by open-sourcing your own code. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. **Do** - Be open and transparent with how your product works From bbd6299cc9c1b389df183cb710451f63a0bb2443 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:20:03 +0000 Subject: [PATCH 52/97] Shorten Security section --- guide/principles/principles.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 82af4ee89..9a7bbde38 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -110,17 +110,18 @@ Our existing mental models of access to digital services are usernames and passw > Provide appropriate and progressive security for all types of users -Self-custody means that the end user is ultimately responsible for keeping their funds and private keys safe. They can only do that if we provide them with good, appropriate tools and awareness of best practices. It is therefore our responsibility as designers and makers to really take their security seriously and make Bitcoin products that are as secure as possible by default. We should strive for no loss of funds, regardless of whether this happens through negligence or theft. +Self-custody often leaves the end-user responsible for the security of their private keys. They can only do a good job of that if we provide them with appropriate tools and awareness of best practices. -Security is especially important when onboarding people new to Bitcoin where solutions that might be fine for advanced users might backfire for beginners. New users are likely to start by storing small amounts until they get comfortable with self-custody. A scheme suited for storing large amounts of funds is likely overkill and scary to a beginner, so the concept of progressive security is a good idea. This could let a user upgrade their security and private key management scheme as their savings grow. +Security is especially important when onboarding people new to Bitcoin where solutions that work for advanced users might backfire. New users are likely to start by storing small amounts until they get comfortable with self-custody. The concept of progressive security is a good idea for here. This would let a user upgrade their security and private key management scheme as their savings grow. -A big part of security is also education and awareness, protecting users from bad actors and potentially their own bad behavior. Bad actors may already know what most users don’t, and be aware of new vulnerabilities. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users of several years in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. +Education and awareness is a big part of security, protecting users from bad actors and potentially their own bad behavior. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure. Especialy compared to one with the exact same security measures that lack these qualities. **Do** - Take safeguarding of users funds seriously +- Strive for no loss of funds, whether by negligence or theft - Provide suitable private key management schemes for beginners - Offer progressive security and upgrade paths - Build with bad actors in mind From ad3701159986d863963bc3a279ae0bc4d7d7776b Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:27:58 +0000 Subject: [PATCH 53/97] Update order or principles --- guide/principles/principles.md | 132 ++++++++++++++++----------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 9a7bbde38..460a73504 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -23,30 +23,59 @@ As a new technology, Bitcoin offers the opportunity of a decentralized open fina These are principles we in the Bitcoin Design Community have identified and stand behind. Some of these come from the technology itself, and others from the behavior and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. -- [Decentralization](#decentralization) -- [Inclusion](#inclusion) -- [Transparency](#transparency) - [Self-custody](#self-custody) - [Security](#security) -- [Privacy](#privacy) +- [Inclusion](#inclusion) - [Interoperability](#interoperability) +- [Transparency](#transparency) +- [Privacy](#privacy) +- [Decentralization](#decentralization) --- -## Decentralization +## Self-custody -> Design products that encourage people to run a full Bitcoin node +> Let users control their private keys, with no risk for seizure or freezing of funds -Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. +Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, there is no longer a need for people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. **Do** -- Design products that encourage people to run a full Bitcoin node -- Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) -- Offer the user choice of what node and other external services to connect to +- Let users control their private keys and funds directly +- Create an easy path to self-custody for Bitcoin beginners **Don't** -- Introduce a single point of failure between the user and the Bitcoin network -- Build products that stop working if the project shuts down +- Custody funds for your users +- Build products where the users' funds can be seized, or frozen + +--- + +## Security + +> Provide appropriate and progressive security for all types of users + +Self-custody often leaves the end-user responsible for the security of their private keys. They can only do a good job of that if we provide them with appropriate tools and awareness of best practices. + +Security is especially important when onboarding people new to Bitcoin where solutions that work for advanced users might backfire. New users are likely to start by storing small amounts until they get comfortable with self-custody. The concept of progressive security is a good idea for here. This would let a user upgrade their security and private key management scheme as their savings grow. + +Education and awareness is a big part of security, protecting users from bad actors and potentially their own bad behavior. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. + +Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure. Especialy compared to one with the exact same security measures that lack these qualities. + + +**Do** +- Take safeguarding of users funds seriously +- Strive for no loss of funds, whether by negligence or theft +- Provide suitable private key management schemes for beginners +- Offer progressive security and upgrade paths +- Build with bad actors in mind +- Minimize risk of self-inflicted loss from user negligence +- Continuously educate users on best practice and risks +- Reduce attack surface by minimizing use of external code dependencies + +**Don't** +- Blame the user for losing funds +- Expect beginners to implement best practice backup strategies +- Underestimate the added *feeling* of security that can come from well polished products --- @@ -73,66 +102,38 @@ And while Bitcoin is already widely used by a large number of people, it pales i --- -## Transparency - -> Be open and transparent with how your product works, open-source your code when possible - -While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on. Let people verify that your claims are true, ideally by open-sourcing your own code. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. - -**Do** -- Be open and transparent with how your product works -- Build your product as open-source when possible -- Let people verify, without having to trust -- Explain what risks the user is taking on, and how best to mitigate them - -**Don't** -- Make claims that are not explained or verifiable - ---- - -## Self-custody +## Interoperability -> Let users control their private keys, with no risk for seizure or freezing of funds +> Enable import and export of wallets, maximise backwards compatibility and use of open standards -Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, there is no longer a need for people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. +Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). **Do** -- Let users control their private keys and funds directly -- Create an easy path to self-custody for Bitcoin beginners +- Support import and export of wallets +- Support as many relevant BIPs as possible +- Be transparent with which ones you do and don’t support +- Maximize backwards compatibility **Don't** -- Custody funds for your users -- Build products where the users' funds can be seized, or frozen +- Lock your users in +- Implement proprietary solutions when open standards exist --- -## Security - -> Provide appropriate and progressive security for all types of users - -Self-custody often leaves the end-user responsible for the security of their private keys. They can only do a good job of that if we provide them with appropriate tools and awareness of best practices. - -Security is especially important when onboarding people new to Bitcoin where solutions that work for advanced users might backfire. New users are likely to start by storing small amounts until they get comfortable with self-custody. The concept of progressive security is a good idea for here. This would let a user upgrade their security and private key management scheme as their savings grow. - -Education and awareness is a big part of security, protecting users from bad actors and potentially their own bad behavior. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. +## Transparency -Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure. Especialy compared to one with the exact same security measures that lack these qualities. +> Be open and transparent with how your product works, open-source your code when possible +While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on. Let people verify that your claims are true, ideally by open-sourcing your own code. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. **Do** -- Take safeguarding of users funds seriously -- Strive for no loss of funds, whether by negligence or theft -- Provide suitable private key management schemes for beginners -- Offer progressive security and upgrade paths -- Build with bad actors in mind -- Minimize risk of self-inflicted loss from user negligence -- Continuously educate users on best practice and risks -- Reduce attack surface by minimizing use of external code dependencies +- Be open and transparent with how your product works +- Build your product as open-source when possible +- Let people verify, without having to trust +- Explain what risks the user is taking on, and how best to mitigate them **Don't** -- Blame the user for losing funds -- Expect beginners to implement best practice backup strategies -- Underestimate the added *feeling* of security that can come from well polished products +- Make claims that are not explained or verifiable --- @@ -154,18 +155,17 @@ The Bitcoin network doesn’t need to know your name for you to use it. Strive t --- -## Interoperability +## Decentralization -> Enable import and export of wallets, maximise backwards compatibility and use of open standards +> Design products that encourage people to run a full Bitcoin node -Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). +Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. **Do** -- Support import and export of wallets -- Support as many relevant BIPs as possible -- Be transparent with which ones you do and don’t support -- Maximize backwards compatibility +- Design products that encourage people to run a full Bitcoin node +- Alternatively, use a light client with the [p2p network]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki'}}) using [compact block filters]({{ 'https://github.com/bitcoin/bips/blob/master/bip-0158.mediawiki'}}) +- Offer the user choice of what node and other external services to connect to **Don't** -- Lock your users in -- Implement proprietary solutions when open standards exist +- Introduce a single point of failure between the user and the Bitcoin network +- Build products that stop working if the project shuts down \ No newline at end of file From f885b19067aa2cb9e94c5150fd5fc3864935c7b0 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:32:26 +0000 Subject: [PATCH 54/97] Simplified wording --- guide/principles/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 460a73504..f905ff495 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -93,10 +93,10 @@ And while Bitcoin is already widely used by a large number of people, it pales i - Use plain language that people new to Bitcoin can understand regardless of prior knowledge - Localize your product and make it multilingual - Educate in place, when people are presented with a new concept -- Treat users with impairments, or who rely on assistive technologies, as first-class citizens +- Treat users who rely on assistive technologies, as first-class citizens **Don't** -- Introduce requirements that might exclude many people, for example by building only for high-end hardware, requiring US KYC (Know-your-customer) information etc +- Exclude people by building features that only work in certain countries - Add technical detail that is not required knowledge, or technical terms like seed phrase XPUBs, mnemonics etc. - Put all education up front and expect people to read and remember it From 661e72f6ed75146cd95cc5efc9291186fe61ac50 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:34:47 +0000 Subject: [PATCH 55/97] Simplify wording --- guide/principles/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index f905ff495..01becd785 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -85,10 +85,10 @@ Security can also be a feeling. A product that is polished, good looking, easy t There are no background checks, credit checks, or gatekeepers to Bitcoin. A Kenyan farmer has the same access to Bitcoin as a Wall Street trader. -And while Bitcoin is already widely used by a large number of people, it pales in comparison with the many more that are likely to use it in the future. We need to design products that are prepared for people new to Bitcoin, without reducing the possibilities. This means using plain and familiar language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. +While Bitcoin is already used by a large number of people, it pales in comparison with the many more that are likely to use it in the future. We need to design products that are prepared for people unfamiliar with Bitcoin. This means using plain and familiar language, explaining things in the context where they are needed, not overwhelming people with technical detail, and more. **Do** -- Provide equal and direct access to the Bitcoin network, without middlemen and exclusive requirements +- Provide equal and direct access to the Bitcoin network - Design Bitcoin products that are usable by the widest range of people possible - Use plain language that people new to Bitcoin can understand regardless of prior knowledge - Localize your product and make it multilingual From 082816bf4c420459e07656fa09f42771c2a16ef4 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:37:29 +0000 Subject: [PATCH 56/97] Simplify wording --- guide/principles/principles.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 01becd785..be94402dc 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -128,8 +128,7 @@ While an open and decentralized financial system that lets people connect direct **Do** - Be open and transparent with how your product works -- Build your product as open-source when possible -- Let people verify, without having to trust +- Let people verify your claims by open-sourcing your code when possible - Explain what risks the user is taking on, and how best to mitigate them **Don't** From 7cfbcba720528d59fa9665c10dead4cbac6e48e2 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:42:29 +0000 Subject: [PATCH 57/97] Link to Onboarding --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index be94402dc..3143cec3f 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -57,7 +57,7 @@ Self-custody often leaves the end-user responsible for the security of their pri Security is especially important when onboarding people new to Bitcoin where solutions that work for advanced users might backfire. New users are likely to start by storing small amounts until they get comfortable with self-custody. The concept of progressive security is a good idea for here. This would let a user upgrade their security and private key management scheme as their savings grow. -Education and awareness is a big part of security, protecting users from bad actors and potentially their own bad behavior. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example while onboarding to a product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. +Education and awareness is a big part of security, protecting users from bad actors and potentially their own bad behavior. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure. Especialy compared to one with the exact same security measures that lack these qualities. From 7d0ef6e38bf1eeb94453d5804c0be924f87eda0f Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:49:06 +0000 Subject: [PATCH 58/97] Tweak privacy example. --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 3143cec3f..a0478c449 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -140,7 +140,7 @@ While an open and decentralized financial system that lets people connect direct > Minimize collection of personal information, and maximize financial transaction privacy -A common misconception of Bitcoin is that it provides complete anonymity and privacy of transactions. Since the blockchain is an unchangeable ledger of all transactions ever made, it is in fact very hard to not have your complete transaction history visible once even a single one of your addresses is connected to you. If Bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions publicly. +A common misconception of Bitcoin is that it provides complete anonymity and privacy of transactions. Since the blockchain is an unchangeable ledger of all transactions ever made, it is in fact very hard to not have your complete transaction history visible once even a single one of your addresses is connected to you. If Bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions to our Twitter or Facebook feeds, so should avoid that scenario with Bitcoin as well. The Bitcoin network doesn’t need to know your name for you to use it. Strive to collect as little personal information as possible about your users. When it is absolutely required to provide the product services, collect only the bare minimum and consider if and when this can be discarded when no longer necessary. If you do collect personal information, be transparent about why and how you will use and store it. From 99a16a0ec93b0e5bf50d80f949cf6c0c92ee78df Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 12:55:52 +0000 Subject: [PATCH 59/97] Remove political --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index a0478c449..40dc77145 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -81,7 +81,7 @@ Security can also be a feeling. A product that is polished, good looking, easy t ## Inclusion -> Build borderless products without location, language, social or political barriers +> Build borderless products without location, language or social barriers There are no background checks, credit checks, or gatekeepers to Bitcoin. A Kenyan farmer has the same access to Bitcoin as a Wall Street trader. From dce37ffebc4e15896e2a423654c25e5f70989a62 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 13:05:15 +0000 Subject: [PATCH 60/97] Move Principles page into Foundation --- guide/principles/principles.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 40dc77145..795e62ce0 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -2,9 +2,9 @@ layout: guide title: Principles description: The key principles to follow when designing Bitcoin products. -nav_order: 2 -has_children: false -permalink: /guide/principles/ +nav_order: 9 +parent: Foundations +permalink: /guide/foundations/principles/ main_classes: -no-top-padding --- From 0382cdb9ff9c2e934cc2aec4c65b6e720ab434bd Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 13:13:53 +0000 Subject: [PATCH 61/97] Include blurb and link to Principles from Foundations/introduction page --- guide/foundations/foundations.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/guide/foundations/foundations.md b/guide/foundations/foundations.md index 2c78823b0..742ae58a1 100644 --- a/guide/foundations/foundations.md +++ b/guide/foundations/foundations.md @@ -14,6 +14,9 @@ Learn about some of the basics to keep in mind when designing Bitcoin applicatio --- +**[Bitcoin design principles]({{ '/guide/foundations/principles/' | relative_url }})** + +Principles that the Bitcoin Design Community have identified and stand behind. Although every use case and product is different, applications should strive to follow these principles. **[Wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }})** An overview of important interaction points between Bitcoin applications and user experiences, from payment links and wallet recovery to node configuration. \ No newline at end of file From 4463094078ed63a2812a36b42037abd7fe52e400 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 15:25:22 +0000 Subject: [PATCH 62/97] Move principle images to foundation folder --- .../principles/page-principles.jpg | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename assets/images/guide/{private-key-management => foundations}/principles/page-principles.jpg (100%) diff --git a/assets/images/guide/private-key-management/principles/page-principles.jpg b/assets/images/guide/foundations/principles/page-principles.jpg similarity index 100% rename from assets/images/guide/private-key-management/principles/page-principles.jpg rename to assets/images/guide/foundations/principles/page-principles.jpg From c6355c96bd0005add38b2589cc8ab200bd6a6e82 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 15:31:19 +0000 Subject: [PATCH 63/97] Add header image to Principles page, move remaining images --- .../principles}/principles-mobile.jpg | Bin .../principles}/principles-mobile@2x.jpg | Bin .../principles}/principles.jpg | Bin .../principles}/principles@2x.jpg | Bin guide/principles/principles.md | 12 ++++++++++++ 5 files changed, 12 insertions(+) rename assets/images/guide/{private-key-management => foundations/principles}/principles-mobile.jpg (100%) rename assets/images/guide/{private-key-management => foundations/principles}/principles-mobile@2x.jpg (100%) rename assets/images/guide/{private-key-management => foundations/principles}/principles.jpg (100%) rename assets/images/guide/{private-key-management => foundations/principles}/principles@2x.jpg (100%) diff --git a/assets/images/guide/private-key-management/principles-mobile.jpg b/assets/images/guide/foundations/principles/principles-mobile.jpg similarity index 100% rename from assets/images/guide/private-key-management/principles-mobile.jpg rename to assets/images/guide/foundations/principles/principles-mobile.jpg diff --git a/assets/images/guide/private-key-management/principles-mobile@2x.jpg b/assets/images/guide/foundations/principles/principles-mobile@2x.jpg similarity index 100% rename from assets/images/guide/private-key-management/principles-mobile@2x.jpg rename to assets/images/guide/foundations/principles/principles-mobile@2x.jpg diff --git a/assets/images/guide/private-key-management/principles.jpg b/assets/images/guide/foundations/principles/principles.jpg similarity index 100% rename from assets/images/guide/private-key-management/principles.jpg rename to assets/images/guide/foundations/principles/principles.jpg diff --git a/assets/images/guide/private-key-management/principles@2x.jpg b/assets/images/guide/foundations/principles/principles@2x.jpg similarity index 100% rename from assets/images/guide/private-key-management/principles@2x.jpg rename to assets/images/guide/foundations/principles/principles@2x.jpg diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 795e62ce0..faa3d6d7c 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -6,6 +6,7 @@ nav_order: 9 parent: Foundations permalink: /guide/foundations/principles/ main_classes: -no-top-padding +image: /assets/images/guide/foundation/principles/page-principles.jpg --- +{% include picture.html + image = "/assets/images/guide/foundation/principles/principles.jpg" + retina = "/assets/images/guide/foundation/principles/principles@2x.jpg" + mobile = "/assets/images/guide/foundation/principles/principles-mobile.jpg" + mobileRetina = "/assets/images/foundation/principles/principles-mobile@2x.jpg" + alt-text = "Principles header illustration" + width = 1600 + height = 600 + layout = "full-width" +%} + # Bitcoin design principles As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. From 50c8752fe3d175bc8f5745639eb2fb40fa0b588e Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 16:04:51 +0000 Subject: [PATCH 64/97] Fix URL typo --- guide/principles/principles.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index faa3d6d7c..e335e59da 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -6,7 +6,7 @@ nav_order: 9 parent: Foundations permalink: /guide/foundations/principles/ main_classes: -no-top-padding -image: /assets/images/guide/foundation/principles/page-principles.jpg +image: /assets/images/guide/foundations/principles/page-principles.jpg --- {% include picture.html - image = "/assets/images/guide/foundation/principles/principles.jpg" - retina = "/assets/images/guide/foundation/principles/principles@2x.jpg" - mobile = "/assets/images/guide/foundation/principles/principles-mobile.jpg" - mobileRetina = "/assets/images/foundation/principles/principles-mobile@2x.jpg" + image = "/assets/images/guide/foundations/principles/principles.jpg" + retina = "/assets/images/guide/foundations/principles/principles@2x.jpg" + mobile = "/assets/images/guide/foundations/principles/principles-mobile.jpg" + mobileRetina = "/assets/images/foundations/principles/principles-mobile@2x.jpg" alt-text = "Principles header illustration" width = 1600 height = 600 From 9186aaa8f655de9cf7a62b260f5eb7fc0276a796 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 12 Mar 2021 16:05:52 +0000 Subject: [PATCH 65/97] Format, line break --- guide/foundations/foundations.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/guide/foundations/foundations.md b/guide/foundations/foundations.md index 742ae58a1..6d0b92226 100644 --- a/guide/foundations/foundations.md +++ b/guide/foundations/foundations.md @@ -17,6 +17,8 @@ Learn about some of the basics to keep in mind when designing Bitcoin applicatio **[Bitcoin design principles]({{ '/guide/foundations/principles/' | relative_url }})** Principles that the Bitcoin Design Community have identified and stand behind. Although every use case and product is different, applications should strive to follow these principles. + + **[Wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }})** An overview of important interaction points between Bitcoin applications and user experiences, from payment links and wallet recovery to node configuration. \ No newline at end of file From 09a09927c4996b64e5af66000a341254eda2270d Mon Sep 17 00:00:00 2001 From: Pavlenex Date: Mon, 15 Mar 2021 11:13:25 +0100 Subject: [PATCH 66/97] Update introduction.md --- guide/private-key-management/introduction.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/guide/private-key-management/introduction.md b/guide/private-key-management/introduction.md index 8291ba7c1..3aa7b70fc 100644 --- a/guide/private-key-management/introduction.md +++ b/guide/private-key-management/introduction.md @@ -31,7 +31,7 @@ scan this page to get an overview of the section and then decide which topics to # Private key management -When designing a bitcoin-application, the way you choose to manage the [private key]({{ '/guide/glossary/#private-key' | relative_url }}){:target="_blank"} often dictates the fundamental user experience for your users. Being in control of a private key means you have access to the funds it holds. Keeping that key safe is like being in charge of the security of your own bank. It comes with a lot of freedom, but also a big responsibility that many users are not used to. +When designing a bitcoin-application, the way you choose to manage the [private key]({{ '/guide/glossary/#private-key' | relative_url }}){:target="_blank"} often dictates the fundamental user experience for your users. Being in control of a private key means you have access to the funds it holds. Keeping that key safe is like being in charge of the security of your own bank. It comes with a lot of freedom, but also a big responsibility that many users are not used to. If it’s not secure enough, you risk loss of user's funds. But if it’s not convenient enough, you risk not getting or retaining many users in the first place. @@ -43,17 +43,11 @@ This chapter is meant to give an overview of private key management schemes, inc An overview of the most common private key management schemes for bitcoin products, and thoughts on picking a suitable scheme for your target audience and their use case. -**[Personal schemes]({{ '/guide/private-key-management/single-user-schemes/' | relative_url }})** - -The schemes that are most common for the personal use of one individual. - -**[Shared schemes]({{ '/guide/private-key-management/single-user-schemes/' | relative_url }})** - -When more than one person wants to share a Bitcoin wallet, multi-key schemes become essential. +--- -**[Case studies]({{ '/guide/private-key-management/case-studies/' | relative_url }})** +**[Principles]({{ '/guide/private-key-management/principles/' | relative_url }})** -A look at some hypothetical use case categories and what might be suitable approaches for private key management schemes for each of them. +Every use case and product is different but there are things that all wallet applications should strive for, and only diverge from with very good reasons. --- From 3d421acfc45dfbb6ff54e3d997d85638e55e9066 Mon Sep 17 00:00:00 2001 From: Pavlenex Date: Mon, 15 Mar 2021 11:14:40 +0100 Subject: [PATCH 67/97] Create principles.md --- guide/private-key-management/principles.md | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 guide/private-key-management/principles.md diff --git a/guide/private-key-management/principles.md b/guide/private-key-management/principles.md new file mode 100644 index 000000000..802dbf2e9 --- /dev/null +++ b/guide/private-key-management/principles.md @@ -0,0 +1,61 @@ +--- +layout: guide +title: Principles +description: Principles to strive for while building bitcoin applications for end-users. +nav_order: 4 +parent: Private key management +permalink: /guide/private-key-management/principles/ +main_classes: -no-top-padding +image: /assets/images/guide/private-key-management/principles/page-principles.jpg +--- + + + +{% include picture.html + image = "/assets/images/guide/private-key-management/principles.jpg" + retina = "/assets/images/guide/private-key-management/principles@2x.jpg" + mobile = "/assets/images/guide/private-key-management/principles-mobile.jpg" + mobileRetina = "/assets/images/guide/private-key-management/principles-mobile@2x.jpg" + alt-text = "Principles header illustration" + width = 1600 + height = 600 + layout = "full-width" +%} + +# Principles + +Although every use case and product is different, there are a number of things that all wallet applications should strive for. Diverging from them should only be done with good reason. + +## No loss of funds + +Even though non-custodial wallet-makers don’t technically hold their users’ funds, and are less exposed to regulation, you are still providing a financial service product. It is essential to take the safekeeping of users’ funds seriously. Regardless of how loss could occur, whether it is self-inflicted or through theft, you should have thought this through and implemented adequate measures for the risk-profile of the use-case. This includes not simply blaming a first-time bitcoin user for not manually backing up their recovery phase when you told them to. + +Any loss is ultimately bad for both the user, the wallet application maker and the whole bitcoin community. Strive for *No loss of funds*. + +## Interoperability + +The bitcoin community is firmly built on open-source, decentralization, and the idea that the individual should be in full control of their funds. This has led to a number of standards that should make it fairly easy to switch and move your bitcoin wallet to a different wallet application. Making sure that your product supports these standards when relevant is best practice and builds trust. + +At a minimum, strive for supporting interoperability by enabling import and export, and using standard [address]({{ '/guide/glossary/#address' | relative_url }}){:target="_blank"} derivation schemes. + +## Privacy + +A common misconception of bitcoin is that it provides anonymity and privacy of transactions. Since the blockchain is literally an unchangeable ledger of all bitcoin transactions ever made, it is in fact very hard to not have your complete transaction history visible to knowledgable parties once even a single one of your addresses is connected to you. If bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions publicly. So when building wallet-applications we should strive to implement best practice for maintaining and improving the financial privacy of bitcoin. + +At a minimum, make it easy for your customers to avoid address re-use. + +## Progressive security + +While it is possible to own and store immense wealth in a non-custodial bitcoin wallet, most new users of bitcoin are likely to start with much smaller sums before they get comfortable with depositing material parts of their savings in a wallet where they are responsible for security. There are many guides out there for how to best keep your recovery phrase backup safe, and conduct advanced op-sec to minimise every conceivable threat-vector. This might be appropriate for someone already intimately familiar with bitcoin technology, but is very likely both overkill and scary to the point of turning away new users. Think carefully about who your target customer is and choose a private key management scheme that is well suited to them. + +Strive for your product to grow with the user and provide progressively stronger security. For example, offering the ability to *sweep* a wallet into a new one, with a higher level security scheme once certain thresholds are reached. This way, a beginner could start out with an automatic cloud backup scheme but know that as they grow their funds could upgrade to a multikey setup down the line. + +*** + +OK, let's have a look at some [case studies]({{ '/guide/case-studies/' | relative_url }}). From 952ee7daa0fede7f3e8ac6011f9426199c5c0ea1 Mon Sep 17 00:00:00 2001 From: Pavlenex Date: Mon, 15 Mar 2021 11:30:37 +0100 Subject: [PATCH 68/97] Revert "Create principles.md" This reverts commit 3d421acfc45dfbb6ff54e3d997d85638e55e9066. --- guide/private-key-management/principles.md | 61 ---------------------- 1 file changed, 61 deletions(-) delete mode 100644 guide/private-key-management/principles.md diff --git a/guide/private-key-management/principles.md b/guide/private-key-management/principles.md deleted file mode 100644 index 802dbf2e9..000000000 --- a/guide/private-key-management/principles.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: guide -title: Principles -description: Principles to strive for while building bitcoin applications for end-users. -nav_order: 4 -parent: Private key management -permalink: /guide/private-key-management/principles/ -main_classes: -no-top-padding -image: /assets/images/guide/private-key-management/principles/page-principles.jpg ---- - - - -{% include picture.html - image = "/assets/images/guide/private-key-management/principles.jpg" - retina = "/assets/images/guide/private-key-management/principles@2x.jpg" - mobile = "/assets/images/guide/private-key-management/principles-mobile.jpg" - mobileRetina = "/assets/images/guide/private-key-management/principles-mobile@2x.jpg" - alt-text = "Principles header illustration" - width = 1600 - height = 600 - layout = "full-width" -%} - -# Principles - -Although every use case and product is different, there are a number of things that all wallet applications should strive for. Diverging from them should only be done with good reason. - -## No loss of funds - -Even though non-custodial wallet-makers don’t technically hold their users’ funds, and are less exposed to regulation, you are still providing a financial service product. It is essential to take the safekeeping of users’ funds seriously. Regardless of how loss could occur, whether it is self-inflicted or through theft, you should have thought this through and implemented adequate measures for the risk-profile of the use-case. This includes not simply blaming a first-time bitcoin user for not manually backing up their recovery phase when you told them to. - -Any loss is ultimately bad for both the user, the wallet application maker and the whole bitcoin community. Strive for *No loss of funds*. - -## Interoperability - -The bitcoin community is firmly built on open-source, decentralization, and the idea that the individual should be in full control of their funds. This has led to a number of standards that should make it fairly easy to switch and move your bitcoin wallet to a different wallet application. Making sure that your product supports these standards when relevant is best practice and builds trust. - -At a minimum, strive for supporting interoperability by enabling import and export, and using standard [address]({{ '/guide/glossary/#address' | relative_url }}){:target="_blank"} derivation schemes. - -## Privacy - -A common misconception of bitcoin is that it provides anonymity and privacy of transactions. Since the blockchain is literally an unchangeable ledger of all bitcoin transactions ever made, it is in fact very hard to not have your complete transaction history visible to knowledgable parties once even a single one of your addresses is connected to you. If bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions publicly. So when building wallet-applications we should strive to implement best practice for maintaining and improving the financial privacy of bitcoin. - -At a minimum, make it easy for your customers to avoid address re-use. - -## Progressive security - -While it is possible to own and store immense wealth in a non-custodial bitcoin wallet, most new users of bitcoin are likely to start with much smaller sums before they get comfortable with depositing material parts of their savings in a wallet where they are responsible for security. There are many guides out there for how to best keep your recovery phrase backup safe, and conduct advanced op-sec to minimise every conceivable threat-vector. This might be appropriate for someone already intimately familiar with bitcoin technology, but is very likely both overkill and scary to the point of turning away new users. Think carefully about who your target customer is and choose a private key management scheme that is well suited to them. - -Strive for your product to grow with the user and provide progressively stronger security. For example, offering the ability to *sweep* a wallet into a new one, with a higher level security scheme once certain thresholds are reached. This way, a beginner could start out with an automatic cloud backup scheme but know that as they grow their funds could upgrade to a multikey setup down the line. - -*** - -OK, let's have a look at some [case studies]({{ '/guide/case-studies/' | relative_url }}). From 1dea556e37faf142e4af68f2a48bc8a9c577cb69 Mon Sep 17 00:00:00 2001 From: Pavlenex Date: Mon, 15 Mar 2021 11:30:41 +0100 Subject: [PATCH 69/97] Revert "Update introduction.md" This reverts commit 09a09927c4996b64e5af66000a341254eda2270d. --- guide/private-key-management/introduction.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/guide/private-key-management/introduction.md b/guide/private-key-management/introduction.md index 3aa7b70fc..8291ba7c1 100644 --- a/guide/private-key-management/introduction.md +++ b/guide/private-key-management/introduction.md @@ -31,7 +31,7 @@ scan this page to get an overview of the section and then decide which topics to # Private key management -When designing a bitcoin-application, the way you choose to manage the [private key]({{ '/guide/glossary/#private-key' | relative_url }}){:target="_blank"} often dictates the fundamental user experience for your users. Being in control of a private key means you have access to the funds it holds. Keeping that key safe is like being in charge of the security of your own bank. It comes with a lot of freedom, but also a big responsibility that many users are not used to. +When designing a bitcoin-application, the way you choose to manage the [private key]({{ '/guide/glossary/#private-key' | relative_url }}){:target="_blank"} often dictates the fundamental user experience for your users. Being in control of a private key means you have access to the funds it holds. Keeping that key safe is like being in charge of the security of your own bank. It comes with a lot of freedom, but also a big responsibility that many users are not used to. If it’s not secure enough, you risk loss of user's funds. But if it’s not convenient enough, you risk not getting or retaining many users in the first place. @@ -43,11 +43,17 @@ This chapter is meant to give an overview of private key management schemes, inc An overview of the most common private key management schemes for bitcoin products, and thoughts on picking a suitable scheme for your target audience and their use case. ---- +**[Personal schemes]({{ '/guide/private-key-management/single-user-schemes/' | relative_url }})** + +The schemes that are most common for the personal use of one individual. + +**[Shared schemes]({{ '/guide/private-key-management/single-user-schemes/' | relative_url }})** + +When more than one person wants to share a Bitcoin wallet, multi-key schemes become essential. -**[Principles]({{ '/guide/private-key-management/principles/' | relative_url }})** +**[Case studies]({{ '/guide/private-key-management/case-studies/' | relative_url }})** -Every use case and product is different but there are things that all wallet applications should strive for, and only diverge from with very good reasons. +A look at some hypothetical use case categories and what might be suitable approaches for private key management schemes for each of them. --- From d6f8b539c150d98c8cc8d43fa090cc0c1155e059 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 12:58:24 +0000 Subject: [PATCH 70/97] Move principles.md into foundations folder --- guide/{principles => foundations}/principles.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename guide/{principles => foundations}/principles.md (100%) diff --git a/guide/principles/principles.md b/guide/foundations/principles.md similarity index 100% rename from guide/principles/principles.md rename to guide/foundations/principles.md From 25315aa8358a520285a75f18b5bbff74c392372e Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:00:30 +0000 Subject: [PATCH 71/97] Grammar --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index e335e59da..c9f5001c7 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -32,7 +32,7 @@ The key principles of designing for Bitcoin As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. -These are principles we in the Bitcoin Design Community have identified and stand behind. Some of these come from the technology itself, and others from the behavior and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. +These are principles we in the Bitcoin Design Community has identified and stand behind. Some of these come from the technology itself, and others from the behavior and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. - [Self-custody](#self-custody) From f4bd5730191a3c507e12b228d9c21bca9376ebd1 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:02:10 +0000 Subject: [PATCH 72/97] Better alt text --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index c9f5001c7..273f8b34f 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -22,7 +22,7 @@ The key principles of designing for Bitcoin retina = "/assets/images/guide/foundations/principles/principles@2x.jpg" mobile = "/assets/images/guide/foundations/principles/principles-mobile.jpg" mobileRetina = "/assets/images/foundations/principles/principles-mobile@2x.jpg" - alt-text = "Principles header illustration" + alt-text = "Principles header illustration, five white circles in a horizontal line on black background" width = 1600 height = 600 layout = "full-width" From 2b53904d16d2dc41d5728bd929d06dc8d2acdc7d Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:07:53 +0000 Subject: [PATCH 73/97] Expand explanation. --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index 273f8b34f..2496eaa1d 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -30,7 +30,7 @@ The key principles of designing for Bitcoin # Bitcoin design principles -As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access without needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. +As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access to economic opportunities without fearing seizure or needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. These are principles we in the Bitcoin Design Community has identified and stand behind. Some of these come from the technology itself, and others from the behavior and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. From 0b078aa63ae36e91656850f7a723513fec6167b0 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:11:18 +0000 Subject: [PATCH 74/97] Extraneous word Co-authored-by: Christoph Ono --- guide/principles/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index e335e59da..8f696685a 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -67,7 +67,7 @@ Our existing mental models of access to digital services are usernames and passw Self-custody often leaves the end-user responsible for the security of their private keys. They can only do a good job of that if we provide them with appropriate tools and awareness of best practices. -Security is especially important when onboarding people new to Bitcoin where solutions that work for advanced users might backfire. New users are likely to start by storing small amounts until they get comfortable with self-custody. The concept of progressive security is a good idea for here. This would let a user upgrade their security and private key management scheme as their savings grow. +Security is especially important when onboarding people new to Bitcoin where solutions that work for advanced users might backfire. New users are likely to start by storing small amounts until they get comfortable with self-custody. The concept of progressive security is a good idea here. This would let a user upgrade their security and private key management scheme as their savings grow. Education and awareness is a big part of security, protecting users from bad actors and potentially their own bad behavior. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. @@ -179,4 +179,4 @@ Unlike traditional banking systems, the Bitcoin economy does not require new use **Don't** - Introduce a single point of failure between the user and the Bitcoin network -- Build products that stop working if the project shuts down \ No newline at end of file +- Build products that stop working if the project shuts down From 58b494080164294eddccf590cf3c8e0578b7b090 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:13:05 +0000 Subject: [PATCH 75/97] Wording Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 8f696685a..e46ca24c0 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -69,7 +69,7 @@ Self-custody often leaves the end-user responsible for the security of their pri Security is especially important when onboarding people new to Bitcoin where solutions that work for advanced users might backfire. New users are likely to start by storing small amounts until they get comfortable with self-custody. The concept of progressive security is a good idea here. This would let a user upgrade their security and private key management scheme as their savings grow. -Education and awareness is a big part of security, protecting users from bad actors and potentially their own bad behavior. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. +Education and awareness is a big part of security, protecting users from bad actors and potentially their own mistakes. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example, while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a Bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure. Especialy compared to one with the exact same security measures that lack these qualities. From 1a2ca1265e3cf3c35914dbd2ac31503f19910303 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:13:31 +0000 Subject: [PATCH 76/97] Spelling Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index e46ca24c0..e4515828c 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -71,7 +71,7 @@ Security is especially important when onboarding people new to Bitcoin where sol Education and awareness is a big part of security, protecting users from bad actors and potentially their own mistakes. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example, while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a Bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. -Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure. Especialy compared to one with the exact same security measures that lack these qualities. +Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure. Especially compared to one with the exact same security measures that lack these qualities. **Do** From 672f50b9b818f1d924a6cc52b9763641d857ca2a Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:14:27 +0000 Subject: [PATCH 77/97] Spelling Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index e4515828c..cddf2aac2 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -82,7 +82,7 @@ Security can also be a feeling. A product that is polished, good looking, easy t - Build with bad actors in mind - Minimize risk of self-inflicted loss from user negligence - Continuously educate users on best practice and risks -- Reduce attack surface by minimizing use of external code dependencies +- Reduce attack surfaces by minimizing use of external code dependencies **Don't** - Blame the user for losing funds From 26f3ff9510b7b64e3c4ab7585aebde4dd487cee0 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:14:49 +0000 Subject: [PATCH 78/97] Grammar Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index cddf2aac2..752724f1f 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -105,7 +105,7 @@ While Bitcoin is already used by a large number of people, it pales in compariso - Use plain language that people new to Bitcoin can understand regardless of prior knowledge - Localize your product and make it multilingual - Educate in place, when people are presented with a new concept -- Treat users who rely on assistive technologies, as first-class citizens +- Treat users who rely on assistive technologies as first-class citizens **Don't** - Exclude people by building features that only work in certain countries From 7328c47e05fbebe9470ceac72e06b83a3621cc9f Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:15:20 +0000 Subject: [PATCH 79/97] Grammar Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 752724f1f..75d54a870 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -109,7 +109,7 @@ While Bitcoin is already used by a large number of people, it pales in compariso **Don't** - Exclude people by building features that only work in certain countries -- Add technical detail that is not required knowledge, or technical terms like seed phrase XPUBs, mnemonics etc. +- Add technical detail that is not required knowledge, or technical terms like seed phrase, XPUBs, mnemonics etc. - Put all education up front and expect people to read and remember it --- From 0a4abc2a5ab070d9ee60f7a6a1fdc75906efb4ea Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:15:37 +0000 Subject: [PATCH 80/97] Wording Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 75d54a870..976bb6822 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -136,7 +136,7 @@ Bitcoin is an open-source protocol, operated in a decentralized manner. This has > Be open and transparent with how your product works, open-source your code when possible -While an open and decentralized financial system that lets people connect directly with it is great, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on. Let people verify that your claims are true, ideally by open-sourcing your own code. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. +While an open and decentralized financial system that lets people connect directly with it has many benefits, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on. Let people verify that your claims are true, ideally by open-sourcing your own code. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. **Do** - Be open and transparent with how your product works From 9c1f1a9b844dd2f0964ed74b434651a5913cdf5c Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:42:30 +0000 Subject: [PATCH 81/97] Missing word Co-authored-by: Christoph Ono --- guide/principles/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/principles/principles.md b/guide/principles/principles.md index 976bb6822..1e201b088 100644 --- a/guide/principles/principles.md +++ b/guide/principles/principles.md @@ -152,7 +152,7 @@ While an open and decentralized financial system that lets people connect direct > Minimize collection of personal information, and maximize financial transaction privacy -A common misconception of Bitcoin is that it provides complete anonymity and privacy of transactions. Since the blockchain is an unchangeable ledger of all transactions ever made, it is in fact very hard to not have your complete transaction history visible once even a single one of your addresses is connected to you. If Bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions to our Twitter or Facebook feeds, so should avoid that scenario with Bitcoin as well. +A common misconception of Bitcoin is that it provides complete anonymity and privacy of transactions. Since the blockchain is an unchangeable ledger of all transactions ever made, it is in fact very hard to not have your complete transaction history visible once even a single one of your addresses is connected to you. If Bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions to our Twitter or Facebook feeds, so we should avoid that scenario with Bitcoin as well. The Bitcoin network doesn’t need to know your name for you to use it. Strive to collect as little personal information as possible about your users. When it is absolutely required to provide the product services, collect only the bare minimum and consider if and when this can be discarded when no longer necessary. If you do collect personal information, be transparent about why and how you will use and store it. From c5e0a149f7393da7abfe6076e608f239f642b8e2 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:43:39 +0000 Subject: [PATCH 82/97] Add divider line --- guide/foundations/foundations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/guide/foundations/foundations.md b/guide/foundations/foundations.md index 6d0b92226..11a8f7fba 100644 --- a/guide/foundations/foundations.md +++ b/guide/foundations/foundations.md @@ -18,6 +18,7 @@ Learn about some of the basics to keep in mind when designing Bitcoin applicatio Principles that the Bitcoin Design Community have identified and stand behind. Although every use case and product is different, applications should strive to follow these principles. +--- **[Wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }})** From a1fff441f70b3ffacf8b216053ae5d24740ede91 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:51:44 +0000 Subject: [PATCH 83/97] Clarify self custody wording --- guide/foundations/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index d3ce6a924..ab094e235 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -49,10 +49,10 @@ These are principles we in the Bitcoin Design Community has identified and stand > Let users control their private keys, with no risk for seizure or freezing of funds -Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, there is no longer a need for people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. +Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, we no longer need to design products that require people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. **Do** -- Let users control their private keys and funds directly +- Let users control their bitcoin and private keys directly - Create an easy path to self-custody for Bitcoin beginners **Don't** From 6634e7bbfbf16c3139998d1f32675e33352588bc Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 13:53:05 +0000 Subject: [PATCH 84/97] Further clarification to self custody --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index ab094e235..dc979f1a1 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -49,7 +49,7 @@ These are principles we in the Bitcoin Design Community has identified and stand > Let users control their private keys, with no risk for seizure or freezing of funds -Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network without middlemen, we no longer need to design products that require people to delegate control of their funds. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. +Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network, we no longer need to design products that require people to delegate control of their funds to middlemen. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. **Do** - Let users control their bitcoin and private keys directly From e3c74d9beedd6bf8d164e97af99b4698a3f5b630 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 14:04:04 +0000 Subject: [PATCH 85/97] Improve Security text --- guide/foundations/principles.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index dc979f1a1..99adf3a0b 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -67,11 +67,11 @@ Our existing mental models of access to digital services are usernames and passw Self-custody often leaves the end-user responsible for the security of their private keys. They can only do a good job of that if we provide them with appropriate tools and awareness of best practices. -Security is especially important when onboarding people new to Bitcoin where solutions that work for advanced users might backfire. New users are likely to start by storing small amounts until they get comfortable with self-custody. The concept of progressive security is a good idea here. This would let a user upgrade their security and private key management scheme as their savings grow. +Security is especially important when onboarding people new to Bitcoin. For example, new users are likely to start by only storing small amounts. After a period of time, however, they may get more comfortable with the idea of self-custodying. The concept of progressive security is a good idea here, starting with automatic cloud backups. This would let a user upgrade their security and private key management scheme as their savings grow. Although common, recovery phrases that require manual backup might backfire for new users not yet familiar with safe backup practices. -Education and awareness is a big part of security, protecting users from bad actors and potentially their own mistakes. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example, while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a Bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. +Education and awareness is a big part of security, as it can protect users from bad actors and potentially their own security mistakes. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example, while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a Bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. -Security can also be a feeling. A product that is polished, good looking, easy to use and transparently communicates how it works can help users feel more secure. Especially compared to one with the exact same security measures that lack these qualities. +Security can also be a feeling. A product that is polished, good looking, easy to use, and transparently communicates how it works can help users feel more secure– especially when compared to another product with the exact same security measures, but lacks these qualities. **Do** From 58b826842724202cd48b74703583500d70605a22 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 14:08:07 +0000 Subject: [PATCH 86/97] Improve transparency text --- guide/foundations/principles.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index 99adf3a0b..7f8307435 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -118,7 +118,7 @@ While Bitcoin is already used by a large number of people, it pales in compariso > Enable import and export of wallets, maximise backwards compatibility and use of open standards -Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed for products building on the protocol to be compatible. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). +Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed to ensure compatibility between products. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). **Do** - Support import and export of wallets @@ -136,7 +136,7 @@ Bitcoin is an open-source protocol, operated in a decentralized manner. This has > Be open and transparent with how your product works, open-source your code when possible -While an open and decentralized financial system that lets people connect directly with it has many benefits, it does put a lot of burden on the users to pick a product they trust, and that works for them. We can make this easier by freely sharing information about how our products work, what technologies they use and rely on. Let people verify that your claims are true, ideally by open-sourcing your own code. It is also very important to be open about what risks the user might be taking on with self-custody, under which scenarios they might lose access to their funds and best practices for avoiding this. +While an open and decentralized financial system that users can connect with directly is great, it puts a burden on them to choose a product that they trust and like to use. We can make this easier by freely sharing information about how our products work and what technologies they use/rely on. By open-sourcing your code, you can let people verify that your claims are true, ultimately building more trust with your users. It is also very important to be transparent with users about the risks that come with self-custodying funds. Be sure to educate about scenarios where they may risk losing access to their funds along with best practices for avoiding this. **Do** - Be open and transparent with how your product works From e5a8fae21ea9de0e25a70c3848ca4479e7a28927 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Fri, 19 Mar 2021 14:13:09 +0000 Subject: [PATCH 87/97] grammar --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index 7f8307435..19f97f003 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -75,7 +75,7 @@ Security can also be a feeling. A product that is polished, good looking, easy t **Do** -- Take safeguarding of users funds seriously +- Take safeguarding of users' funds seriously - Strive for no loss of funds, whether by negligence or theft - Provide suitable private key management schemes for beginners - Offer progressive security and upgrade paths From e74baba99fa808db4b0b84e186fdc8350f8e9844 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:29:17 +0000 Subject: [PATCH 88/97] Accept wording change Co-authored-by: Pavlenex --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index 19f97f003..35a47c5cb 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -32,7 +32,7 @@ The key principles of designing for Bitcoin As a new technology, Bitcoin offers the opportunity of a decentralized open financial system, where participants share the role of securing the network. This is important to give everyone equal and direct access to economic opportunities without fearing seizure or needing intermediaries. To make this a reality, we encourage everyone working on products to deliberately support the core principles of designing for Bitcoin. -These are principles we in the Bitcoin Design Community has identified and stand behind. Some of these come from the technology itself, and others from the behavior and ethos of the community. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. +These are principles we in the Bitcoin Design Community identified and stand behind. Some of these come from the technology itself and others from the community's behavior and ethos. Although every use case and product is different, applications should strive to follow these principles. Diverging from them should only be done with very good reason. - [Self-custody](#self-custody) From 1e9a95ea73535573bcf5fdce96396b0ff37e2a29 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:30:07 +0000 Subject: [PATCH 89/97] Accept suggested wording Co-authored-by: Pavlenex --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index 35a47c5cb..590b1a46b 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -49,7 +49,7 @@ These are principles we in the Bitcoin Design Community identified and stand beh > Let users control their private keys, with no risk for seizure or freezing of funds -Our existing mental models of access to digital services are usernames and passwords, controlled by a company that has custody of your funds and data. With everyone having direct access to the Bitcoin network, we no longer need to design products that require people to delegate control of their funds to middlemen. While it comes with greater responsibility, it is self-custody that enables the open financial system of peer-to-peer transactions. +Our existing mental models of access to digital services are usernames and passwords controlled by a company with custody of your funds and data. With everyone having direct access to the Bitcoin network, we no longer need to design products that require people to delegate control of their funds to middlemen. While it comes with greater responsibility, self-custody enables the open financial system of peer-to-peer transactions. **Do** - Let users control their bitcoin and private keys directly From e963a0633d23369d1a5101015cee48e73ea4a595 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:30:30 +0000 Subject: [PATCH 90/97] Accept suggested wording Co-authored-by: Pavlenex --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index 590b1a46b..faf42e373 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -67,7 +67,7 @@ Our existing mental models of access to digital services are usernames and passw Self-custody often leaves the end-user responsible for the security of their private keys. They can only do a good job of that if we provide them with appropriate tools and awareness of best practices. -Security is especially important when onboarding people new to Bitcoin. For example, new users are likely to start by only storing small amounts. After a period of time, however, they may get more comfortable with the idea of self-custodying. The concept of progressive security is a good idea here, starting with automatic cloud backups. This would let a user upgrade their security and private key management scheme as their savings grow. Although common, recovery phrases that require manual backup might backfire for new users not yet familiar with safe backup practices. +Security is especially important when onboarding people new to Bitcoin. For example, new users are likely to start by only storing small amounts. After a while, however, they may get more comfortable with the idea of self-custody. The concept of progressive security is a good idea here, starting with automatic cloud backups. This would let a user upgrade their security and private key management scheme as their savings grow. Although common, recovery phrases that require manual backup might backfire for new users not yet familiar with safe backup practices. Education and awareness is a big part of security, as it can protect users from bad actors and potentially their own security mistakes. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example, while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a Bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. From 0a81aa1bb945d18be5f28c9d45745c3a63a3f1af Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:30:54 +0000 Subject: [PATCH 91/97] Accept suggest wording Co-authored-by: Pavlenex --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index faf42e373..38945008c 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -69,7 +69,7 @@ Self-custody often leaves the end-user responsible for the security of their pri Security is especially important when onboarding people new to Bitcoin. For example, new users are likely to start by only storing small amounts. After a while, however, they may get more comfortable with the idea of self-custody. The concept of progressive security is a good idea here, starting with automatic cloud backups. This would let a user upgrade their security and private key management scheme as their savings grow. Although common, recovery phrases that require manual backup might backfire for new users not yet familiar with safe backup practices. -Education and awareness is a big part of security, as it can protect users from bad actors and potentially their own security mistakes. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example, while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a Bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. +Education and awareness are a big part of security, as they can protect users from bad actors and potentially their own security mistakes. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example, while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a Bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. Security can also be a feeling. A product that is polished, good looking, easy to use, and transparently communicates how it works can help users feel more secure– especially when compared to another product with the exact same security measures, but lacks these qualities. From faa0b95c6ec7988fdf67eb25567a972223f4c67f Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:31:21 +0000 Subject: [PATCH 92/97] Accept suggested wording Co-authored-by: Pavlenex --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index 38945008c..e9fa11f4c 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -71,7 +71,7 @@ Security is especially important when onboarding people new to Bitcoin. For exam Education and awareness are a big part of security, as they can protect users from bad actors and potentially their own security mistakes. It is unrealistic to expect beginners to take in all the knowledge acquired by advanced users in one go, for example, while [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}) to a Bitcoin product. We should therefore consider how to continuously educate and level up user awareness of best practices and risks. -Security can also be a feeling. A product that is polished, good looking, easy to use, and transparently communicates how it works can help users feel more secure– especially when compared to another product with the exact same security measures, but lacks these qualities. +Security can also be a feeling. A polished, good-looking, easy-to-use product that transparently communicates how it works can help users feel more secure– especially when compared to another product with the same security measures - but lacks these qualities. **Do** From 8eb2634fd8bdcbf84cc9160731ac183908b8cebf Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:32:27 +0000 Subject: [PATCH 93/97] Accept suggested wording Co-authored-by: Pavlenex --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index e9fa11f4c..d9109cfc1 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -136,7 +136,7 @@ Bitcoin is an open-source protocol, operated in a decentralized manner. This has > Be open and transparent with how your product works, open-source your code when possible -While an open and decentralized financial system that users can connect with directly is great, it puts a burden on them to choose a product that they trust and like to use. We can make this easier by freely sharing information about how our products work and what technologies they use/rely on. By open-sourcing your code, you can let people verify that your claims are true, ultimately building more trust with your users. It is also very important to be transparent with users about the risks that come with self-custodying funds. Be sure to educate about scenarios where they may risk losing access to their funds along with best practices for avoiding this. +While an open and decentralized financial system that users can connect with directly is great, it puts a burden on them to choose a product that they trust and like to use. We can make this easier by freely sharing information about how our products work and what technologies they use/rely on. By open-sourcing your code, you can let people verify that your claims are true, ultimately building more trust with your users. It is important to be transparent with users about the risks that come with self-custodying funds. Be sure to educate about scenarios where they may risk losing access to their funds along with best practices for avoiding this. **Do** - Be open and transparent with how your product works From ab9cfbee6b3e386317dfaf5d19d10e05fb0e9395 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:33:04 +0000 Subject: [PATCH 94/97] Accept suggested wording Co-authored-by: Pavlenex --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index d9109cfc1..1223500f3 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -152,7 +152,7 @@ While an open and decentralized financial system that users can connect with dir > Minimize collection of personal information, and maximize financial transaction privacy -A common misconception of Bitcoin is that it provides complete anonymity and privacy of transactions. Since the blockchain is an unchangeable ledger of all transactions ever made, it is in fact very hard to not have your complete transaction history visible once even a single one of your addresses is connected to you. If Bitcoin is to become viable for a wider audience and daily use we ought to take privacy seriously. This is certainly not to enable or encourage illicit activity, but to protect individual financial privacy. We would not accept our bank to publish our financial transactions to our Twitter or Facebook feeds, so we should avoid that scenario with Bitcoin as well. +A common misconception of Bitcoin is that it provides complete anonymity and privacy of transactions. Since the blockchain is an unchangeable ledger of all transactions ever made, it is very hard not to have your complete transaction history visible once even a single one of your addresses is connected to you. If Bitcoin is to become viable for a wider audience and daily use, we should take privacy seriously. This is certainly not to enable or encourage illicit activity but to protect individual financial privacy. We would not accept our bank to publish our financial transactions to our Twitter or Facebook feeds, so we should avoid that scenario with Bitcoin. The Bitcoin network doesn’t need to know your name for you to use it. Strive to collect as little personal information as possible about your users. When it is absolutely required to provide the product services, collect only the bare minimum and consider if and when this can be discarded when no longer necessary. If you do collect personal information, be transparent about why and how you will use and store it. From c632a21924e04c13e7f3bec42091b4f5ddaf6665 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:33:37 +0000 Subject: [PATCH 95/97] Accept suggested wording Co-authored-by: Pavlenex --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index 1223500f3..8684c4b32 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -170,7 +170,7 @@ The Bitcoin network doesn’t need to know your name for you to use it. Strive t > Design products that encourage people to run a full Bitcoin node -Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node' | relative_url }}) on the network gives you the same rights and responsibilities, which also ensures that there is no single point of failure. +Unlike traditional banking systems, the Bitcoin economy does not require new users to seek permission from anyone. Bitcoin has no central point of control. No one person or entity is in charge. Connecting to any [node]({{ '/guide/glossary/#node' | relative_url }}) on the network gives you the same rights and responsibilities, ensuring no single point of failure. **Do** - Design products that encourage people to run a full Bitcoin node From 9ee560bf0aad5825293fa489bca58352a4f01f0f Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:34:00 +0000 Subject: [PATCH 96/97] Accept suggested wording Co-authored-by: Pavlenex --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index 8684c4b32..bc161cc39 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -154,7 +154,7 @@ While an open and decentralized financial system that users can connect with dir A common misconception of Bitcoin is that it provides complete anonymity and privacy of transactions. Since the blockchain is an unchangeable ledger of all transactions ever made, it is very hard not to have your complete transaction history visible once even a single one of your addresses is connected to you. If Bitcoin is to become viable for a wider audience and daily use, we should take privacy seriously. This is certainly not to enable or encourage illicit activity but to protect individual financial privacy. We would not accept our bank to publish our financial transactions to our Twitter or Facebook feeds, so we should avoid that scenario with Bitcoin. -The Bitcoin network doesn’t need to know your name for you to use it. Strive to collect as little personal information as possible about your users. When it is absolutely required to provide the product services, collect only the bare minimum and consider if and when this can be discarded when no longer necessary. If you do collect personal information, be transparent about why and how you will use and store it. +The Bitcoin network doesn’t need to know your name for you to use it. Strive to collect as little personal information as possible about your users. When absolutely required to provide the product services, collect only the bare minimum and consider if and when this can be discarded when no longer necessary. If you collect personal information, be transparent about why and how you will use and store it. **Do** - Minimize the personal information you collect From 971df46950a8d9950ead4e83b9b26b1b129bcce0 Mon Sep 17 00:00:00 2001 From: Daniel Nordh <3393669+danielnordh@users.noreply.github.com> Date: Wed, 24 Mar 2021 09:38:46 +0000 Subject: [PATCH 97/97] Accept suggested wording --- guide/foundations/principles.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/guide/foundations/principles.md b/guide/foundations/principles.md index bc161cc39..eb9e82c94 100644 --- a/guide/foundations/principles.md +++ b/guide/foundations/principles.md @@ -118,7 +118,7 @@ While Bitcoin is already used by a large number of people, it pales in compariso > Enable import and export of wallets, maximise backwards compatibility and use of open standards -Bitcoin is an open-source protocol, operated in a decentralized manner. This has led to a number of standards being developed to ensure compatibility between products. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Making sure that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). +Bitcoin is an open-source protocol, operating in a decentralized manner. This has led to a number of standards being developed to ensure compatibility between products. It should be easy to switch and move your Bitcoin wallet to a different application, should you wish. Ensuring that your product supports as many of these standards as possible is best practice and builds trust. More on [wallet interoperability]({{ '/guide/foundations/wallet-interoperability/' | relative_url }}). **Do** - Support import and export of wallets