Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Silent payments in the Guide #1109

Open
wants to merge 80 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 65 commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
a53d0e0
First commit plus
yashrajd Jul 25, 2024
acd05b7
Adding draft text
yashrajd Jul 27, 2024
f85884b
Adding Silent payment sidebar item
yashrajd Jul 29, 2024
e447d2a
Adding silent payments illustrations and other diagrams
yashrajd Jul 31, 2024
a393daa
Adding images plus misc
yashrajd Aug 1, 2024
28d941e
Adding header image and silent payments item
yashrajd Aug 2, 2024
73209a5
Adding Resources & missing onboarding images
yashrajd Aug 4, 2024
8f76f12
Adding pros-n-cons and fixed resource section
yashrajd Aug 4, 2024
2f14f45
Improvements to explainer section
yashrajd Aug 5, 2024
d734d29
Improvements to intro section
yashrajd Aug 5, 2024
9d3805c
Updated text in contacts & labels
yashrajd Aug 5, 2024
f05b90f
Adding sender-id section
yashrajd Aug 5, 2024
1758a9f
Updated setup, sending section; add coin selection
yashrajd Aug 5, 2024
aef8504
Updates receiving section
yashrajd Aug 5, 2024
653476c
Updating receive and adding missing image
yashrajd Aug 6, 2024
c7235f5
Added content about wallet type differences +
yashrajd Aug 6, 2024
a656afc
Updates to backup, recovery sections +
yashrajd Aug 6, 2024
c5aeb17
Updated recovery section to reference existing pages
yashrajd Aug 6, 2024
ac341d1
Added custom size header, fixed carousel modals
yashrajd Aug 6, 2024
1617122
Updated header, preview images; fixed header height
yashrajd Aug 6, 2024
1b255e6
Adding reference guide references to sending, backup
yashrajd Aug 6, 2024
30efc00
Fixed backup page reference and image names
yashrajd Aug 7, 2024
46aa339
Flow improvements and minor text fixes
yashrajd Aug 7, 2024
793aa9f
Improved introduction
yashrajd Aug 7, 2024
ad683a2
Improved introduction (minor fixes)
yashrajd Aug 7, 2024
73d4e91
Adding keys to explainer images
yashrajd Aug 8, 2024
d21dadb
Updating pros and cons
yashrajd Aug 8, 2024
a211fa9
replaced receive image plus misc
yashrajd Aug 9, 2024
9e1eef3
Added captions to contacts carousel
yashrajd Aug 12, 2024
985c8c4
Replaced sp address terminology
yashrajd Aug 12, 2024
d992922
Adding alt-text, captions etc.
yashrajd Aug 13, 2024
3e040a5
Incorporating most of Erik's feedback
yashrajd Aug 13, 2024
3c1aba7
Updated labels illustration
yashrajd Aug 13, 2024
f7a0bd9
Updated labels illustration plus
yashrajd Aug 15, 2024
4fc4b85
Updated sp conceptual model table & details
yashrajd Aug 18, 2024
d9d953d
Added sp explainer table, refactored related stuff
yashrajd Aug 19, 2024
e9af9f6
Removed recovery carousel
yashrajd Aug 19, 2024
18b0dce
Updated Introduction page to include sp
yashrajd Aug 19, 2024
01e290e
Added a Conceptual model section
yashrajd Aug 21, 2024
036f13f
Adds a labels explainer
yashrajd Aug 21, 2024
c36c029
Combined & updated backup & recovery
yashrajd Aug 21, 2024
9f91db5
Improved backup & recovery
yashrajd Aug 21, 2024
501bbde
Improves labels section
yashrajd Aug 22, 2024
f8e117b
Update intro, sp working copy
yashrajd Sep 5, 2024
d867b88
Update first table, illustration caption above it
yashrajd Sep 5, 2024
064a7ca
Adding hyperlink for light clients
yashrajd Sep 5, 2024
2bb0e33
Updates Labels section
yashrajd Sep 6, 2024
fd07e3a
Incorporated feedback; added tracking payments section
yashrajd Sep 6, 2024
b241979
Update intro section
yashrajd Sep 6, 2024
8fbccec
Another intro update
yashrajd Sep 6, 2024
3f547e5
Add a rationale section
yashrajd Sep 6, 2024
78370f3
Update how it works section
yashrajd Sep 6, 2024
0249ae6
Added send review with sp addr
yashrajd Sep 7, 2024
a0d4540
Removing test transactions section
yashrajd Sep 7, 2024
225ba3b
Removing unnecessary ref to bitcoin core
yashrajd Sep 7, 2024
88235ba
Fix & simplify receiving section
yashrajd Sep 7, 2024
c22c6e5
Trimmed, reworded backup section
yashrajd Sep 9, 2024
7111616
Updated pros & cons
yashrajd Sep 9, 2024
a3e7453
Improve how it works illustration
yashrajd Sep 10, 2024
43b4f03
Updating illustrations; adding labels mobile ver
yashrajd Sep 12, 2024
de18e4b
Reworded recovery section for better readability
yashrajd Sep 12, 2024
a896d73
Adding on-chain address fallback advice
yashrajd Sep 14, 2024
99c1916
Updates illustrations, copy + nav fixes
yashrajd Sep 19, 2024
50374d9
more copy updates
yashrajd Sep 19, 2024
78c7f6c
Updates header image
yashrajd Sep 20, 2024
8c2b78c
Fixes missing images on mobile +
yashrajd Sep 24, 2024
ebae765
Fixes labels illustration title + improve mobile header
yashrajd Sep 24, 2024
ca6768a
Compresses images as per guidelines
yashrajd Sep 25, 2024
c9c80d4
Incorporates Michael's feedback
yashrajd Sep 25, 2024
c12c16c
Updates considering Michael's suggestions
yashrajd Sep 26, 2024
f27e0c3
Accepting more suggestions from Michael
yashrajd Sep 26, 2024
fd1de4b
Added desktop modal to illustrations
yashrajd Sep 27, 2024
55f60e3
Merge branch 'silent-payments' of https://github.com/yashrajd/Guide i…
yashrajd Sep 27, 2024
3ffa65d
Fixes carousel metadata
yashrajd Sep 27, 2024
11fe73f
Updating mobile images for better legibility
yashrajd Sep 27, 2024
d5dbae4
Removed bit about bip-39, 32 from setup
yashrajd Sep 30, 2024
9af6d60
Apply suggestions from Christoph's code review
yashrajd Nov 3, 2024
3d0cad6
Text updates based on feedback
yashrajd Nov 5, 2024
ea74770
Adds exchange withdrawals use-case
yashrajd Nov 5, 2024
5fa5071
Fixed typos in onboarding images
yashrajd Nov 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 3 additions & 2 deletions guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ How to design for use cases where it is important to manage multiple wallets in

<h2 class="h3" markdown="1">[Inheritance wallet]({{ '/guide/inheritance-wallet/' | relative_url }})</h2>

An in-depth exploration of a multi-key wallet designed for long-term savings and inheritance. It covers everything from wallet creation, backup, change management and succession.
An in-depth exploration of a multi-key wallet designed for long-term savings and inheritance. It covers everything from wallet creation, backup, change management and succession.

---

Expand Down Expand Up @@ -202,6 +202,7 @@ Explanations of various technical aspects of bitcoin and lightning.
[Lightning liquidity]({{ '/guide/how-it-works/liquidity/' | relative_url }})<br />
[Lightning services]({{ '/guide/how-it-works/lightning-services/' | relative_url }})<br />
[Sign in with bitcoin]({{ '/guide/how-it-works/sign-in-with-bitcoin/' | relative_url }})<br />
[Silent payments]({{ '/guide/how-it-works/silent-payments/' | relative_url }})<br />

</div>
</div>
Expand Down Expand Up @@ -236,4 +237,4 @@ Join our open community and help us improve the Bitcoin Design Guide. Here’s w
{% include next-previous.html
nextUrl = "/guide/getting-started/introduction/"
nextName = "Get started"
%}
%}
18 changes: 9 additions & 9 deletions guide/how-it-works/custom-spending-conditions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: guide
title: Custom spending conditions
description: An overview about advanced capabilities that enable users to create more flexible bitcoin wallets.
nav_order: 12
nav_order: 13
parent: How it works
permalink: /guide/how-it-works/custom-spending-conditions/
main_classes: -no-top-padding
Expand Down Expand Up @@ -46,13 +46,13 @@ In addition to these standard configurations it is also possible to create more

#### Self-custody

Custom spending conditions can be helpful to decrease the risk of losing funds in personal self-custody context. Let's say that you have a wallet that you use regularly on a weekly basis. You could unlock a recovery spending condition automatically if that wallet has not been used for more than six months, because it's likely that you have lost access to your primary key. The recovery condition could contain an additional key held in a different location. Such a setup does not decrease the wallet security, because the second key is locked under normal circumstances of using the wallet.
Custom spending conditions can be helpful to decrease the risk of losing funds in personal self-custody context. Let's say that you have a wallet that you use regularly on a weekly basis. You could unlock a recovery spending condition automatically if that wallet has not been used for more than six months, because it's likely that you have lost access to your primary key. The recovery condition could contain an additional key held in a different location. Such a setup does not decrease the wallet security, because the second key is locked under normal circumstances of using the wallet.

In a multi-key context, the recovery condition could require only one instead of two keys to spend funds after 6 months of inactivity. This will help mitigate the risk of loss of funds in case one key holder loses a key.

#### Company treasuries

Custom spending conditions can also be useful in an organizational context. Companies need to make sure that they retain access to funds even if one or more employees lose their keys. Not only that, employees could also be compromised by a third party or try to obstruct the deployment of funds for their own benefit. Another use case is that a company needs to implement company-specific processes for corporate spending. For example, they would want to create a rule that the CFO must sign transactions for treasury management.
Custom spending conditions can also be useful in an organizational context. Companies need to make sure that they retain access to funds even if one or more employees lose their keys. Not only that, employees could also be compromised by a third party or try to obstruct the deployment of funds for their own benefit. Another use case is that a company needs to implement company-specific processes for corporate spending. For example, they would want to create a rule that the CFO must sign transactions for treasury management.


## Building blocks
Expand Down Expand Up @@ -114,11 +114,11 @@ After the wallet has been created, it needs to be registered on all of the invol

### Timelocks

Timelocks can be relative (e.g. “1 year after the wallet has been last used”) or absolute (e.g. “on January 3rd, 2024”).
Timelocks can be relative (e.g. “1 year after the wallet has been last used”) or absolute (e.g. “on January 3rd, 2024”).

##### Relative timelocks

Relative timelocks can reach up to a maximum of 65535 blocks into the future, which is about 455 days.
Relative timelocks can reach up to a maximum of 65535 blocks into the future, which is about 455 days.

An important aspect of timelocks is that they are applied to each [unspent transaction output (UTXO)](/guide/glossary/#unspent-transaction-output-utxo) in the wallet individually, not to the wallet as a whole. If a wallet uses relative timelocks, this means that the timelocks expire at different times for each UTXO, based on the time and date on which they were deposited into the wallet.

Expand All @@ -135,7 +135,7 @@ An important aspect of timelocks is that they are applied to each [unspent trans
layout = "float-right-desktop"
%}

Let’s have a look at a concrete example. This image shows a wallet that contains three UTXOs with a total value of 0,40 BTC. The first UTXO of 0,10 BTC was received well ahead of the other two. And since it was not spent for six months, the recovery condition was unlocked. The emergency condition will unlock very soon, if the UTXO is not spent.
Let’s have a look at a concrete example. This image shows a wallet that contains three UTXOs with a total value of 0,40 BTC. The first UTXO of 0,10 BTC was received well ahead of the other two. And since it was not spent for six months, the recovery condition was unlocked. The emergency condition will unlock very soon, if the UTXO is not spent.

As you can see, we are actually dealing with three timelocks, rather than one.

Expand All @@ -153,16 +153,16 @@ Note that an on-chain transaction is required to reset a timelock, along with th

#### Absolute timelocks

Absolute timelocks use a specific calendar date or block height as their reference point. In contrast to relative timelocks, absolute timelocks can go out as far as you want (the technical limit is 500 million blocks).
Absolute timelocks use a specific calendar date or block height as their reference point. In contrast to relative timelocks, absolute timelocks can go out as far as you want (the technical limit is 500 million blocks).

Absolute timelocks apply the same timelock for each UTXO in the wallet. This has the advantage that they expire for all UTXOs in the wallet at the same time. This means that users only have to keep track of one deadline, which can make the management of the wallet easier and less demanding.

**Resetting an absolute timelock requires sending the funds to a brand new wallet,** because a self-transfer to the same wallet would re-apply the same absolute timelock to the newly created UTXO. If your product uses absolute timelocks, it is therefore recommended to provide features that help streamline this process for your users.
**Resetting an absolute timelock requires sending the funds to a brand new wallet,** because a self-transfer to the same wallet would re-apply the same absolute timelock to the newly created UTXO. If your product uses absolute timelocks, it is therefore recommended to provide features that help streamline this process for your users.


### Flexibility vs. complexity

Spending conditions based on Miniscript are composable. This means that you can create as many spending conditions as you like. You can even have one of the keys in one wallet be a multi-key wallet itself. Or you can combine time locked spending conditions with veto keys. It is also possible to combine relative and absolute timelocks.
Spending conditions based on Miniscript are composable. This means that you can create as many spending conditions as you like. You can even have one of the keys in one wallet be a multi-key wallet itself. Or you can combine time locked spending conditions with veto keys. It is also possible to combine relative and absolute timelocks.

However, these kinds of setups can become complex very quickly and should not be used in most personal setups or by users who are new to bitcoin.

Expand Down
6 changes: 6 additions & 0 deletions guide/how-it-works/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,12 @@ How lightning wallets can support authentication and payments with external appl

---

### [Silent payments]({{ '/guide/how-it-works/silent-payments/' | relative_url }})

A simplified explanation of how silent payments work, along with its impact on bitcoin's interaction model and wallet flows.

---

### [Wallet selector]({{ '/guide/how-it-works/wallet-selector/' | relative_url }})

Documentation of an interface pattern for letting users choose which external wallet to use when withdrawing, sending, or receiving in a bitcoin application.
Expand Down
6 changes: 2 additions & 4 deletions guide/how-it-works/sign-in-with-bitcoin.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,11 +166,9 @@ If a user loses their wallet, they also lose their access to your service. Ensur

---

Next, view our [case studies]({{ '/guide/case-studies/' | relative_url }}) to see examples of design applied to real bitcoin software.

{% include next-previous.html
previousUrl = "/guide/how-it-works/wallet-privacy/"
previousName = "Wallet privacy"
nextUrl = "/guide/how-it-works/wallet-selector"
nextName = "Wallet selector"
nextUrl = "/guide/how-it-works/silent-payments"
nextName = "Silent payments"
%}
Loading