Skip to content

Commit

Permalink
Test transactions & address management (#133)
Browse files Browse the repository at this point in the history
* Updated page and file structure

- created sub-folders to group related pages (e.g. design system).
- moved contacts and silent payment pages to milestone 1.8
-

* New "Addresses" page

* Added "Test Transactions" page

* Updated address management page

* Moved test transactions page to "other" milestone

* Reverting file re-organization of unrelated pages
  • Loading branch information
rabbitholiness authored Jan 13, 2025
1 parent e07337a commit 7d0efc7
Show file tree
Hide file tree
Showing 28 changed files with 174 additions and 32 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/send/test-transaction-finalize.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/send/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/send/test-transaction-form-big.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/send/test-transaction-form.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/send/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/send/test-transaction-review.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/send/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/settings/addresses-receive-big.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/settings/addresses-receive.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/settings/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/settings/addresses-reusable.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/settings/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions pages/console.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ layout: default
title: Console
permalink: /console/
nav_order: 183
indent: true
---

# Console
Expand Down
File renamed without changes.
1 change: 1 addition & 0 deletions pages/explorer.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ layout: default
title: Explorer
permalink: /explorer/
nav_order: 182
indent: true
---

# Explorer
Expand Down
File renamed without changes.
File renamed without changes.
46 changes: 46 additions & 0 deletions pages/milestones/other/address-management.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
layout: default
title: Addresses
permalink: /milestones/other/address-management/
nav_order: 185
indent: true
---

# Addresses

**Status: Early design exploration**

Users need a way to view and manage bitcoin addresses that are generated by their wallet.

### Single-use addresses (on-chain)

Historically users had to deal with two types of addresses:

- **Receive addresses**: Users share a receive address with the person they would like to receive a payment from. For privacy reasons it is a best practice to generate a fresh receive address for each payment.
- **Change addresses** are reserved for receiving the change output from spending transactions. Many wallet applications do not expose change addresses to their users at all. This implies that a significant amount of people are not familiar with the concept.

{% include picture.html
image = "/assets/images/settings/addresses-receive.png"
retina = "/assets/images/settings/addresses-[email protected]"
big = "/assets/images/settings/addresses-receive-big.png"
alt-text = "Screens with a list of receive addresses"
width = 800
height = 366
%}

### Reusable addresses (off-chain)

Through the implementation of the [Silent Payments](https://bitcoinops.org/en/topics/silent-payments/) protocol, which was introduced with [BIP-352](https://github.com/bitcoin/bips/blob/master/bip-0352.mediawiki), the task of managing one's own addresses has become more relevant.

A silent payment address is a static offchain address that is used by the sender to derive a fresh bitcoin address for each payment. Users can create sub-addresses according to their personal needs, e.g. for collecting donations, invoicing clients or their online store.

{% include picture.html
image = "/assets/images/settings/addresses-reusable.png"
retina = "/assets/images/settings/addresses-[email protected]"
big = "/assets/images/settings/addresses-reusable-big.png"
alt-text = "Screens with a list of reusable addresses"
width = 800
height = 366
%}


42 changes: 42 additions & 0 deletions pages/milestones/other/contacts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
layout: default
title: Contacts
permalink: /milestones/1-7-send/contacts
nav_order: 185
indent: true
---

# Contacts

**Status: Early design exploration**

Contacts are a useful a variety of reasons:
- Regular interactions
-

A contact should combine different types of payment information

### Contact information

A contact has a few different . The application uses the payment information to initiate payments.

Contact details:
- First name
- Last name
- Note

Payment information:
- Silent payment addresses
- Regular addresses
- Extended Public Keys (XPUBs)

The application

{% include picture.html
image = "/assets/images/send/contacts.png"
retina = "/assets/images/send/[email protected]"
big = "/assets/images/send/contacts-big.png"
alt-text = "A screen with a list of contacts and a detail screen showing contact information."
width = 800
height = 366
%}
22 changes: 22 additions & 0 deletions pages/milestones/other/silent-payments.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
layout: default
title: Silent payments
permalink: /milestones/1-7-send/silent-payments
nav_order: 186
indent: true
---

# Silent payments

**Status: Early design exploration**

### Receiving



### Sending

Sending to silent payment addresses works in much the same way as to regular addresses. Users can simply paste a silent payment address into the send form.

One peculiarity is that

60 changes: 60 additions & 0 deletions pages/milestones/other/test-transactions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
layout: default
title: Test transactions
permalink: /milestones/1-7-send/test-transactions
nav_order: 187
indent: true
---

# Automated test transactions

**Status: Early design exploration**

Sending large amounts of bitcoin can be associated with significant anxiety for users. Because they fear making a mistake, like sending bitcoin to the wrong address, many people make a small test transaction before sending the full amount. This approach lowers the likelihood of an error and increases user confidence. There is still room for error, however:

- Because two transactions are created, users have to pay twice as much in fees.
- Even though the receiving address can be verified, users can still make mistakes in the main transaction, like pasting a wrong or incomplete address.


### Automated test transactions

The Bitcoin Core App uses Replace-by-Fee (RBF) to make this process more robust by offering a more dedicated process for test transactions. If a high-value transaction is detected, users are offered the option to make a test transaction.

{% include picture.html
image = "/assets/images/send/test-transaction-form.png"
retina = "/assets/images/send/test-[email protected]"
big = "/assets/images/send/test-transaction-form.png"
alt-text = "Send form with a message and option to send a test transaction"
width = 800
height = 708
%}

The test transaction has an extremly low fee, which is not configurable by the user. The fee is high enough to get the transaction into the mempool, but so low that miners will not pick it up for confirmation.

{% include picture.html
image = "/assets/images/send/test-transaction-review.png"
retina = "/assets/images/send/test-[email protected]"
big = "/assets/images/send/test-transaction-review.png"
alt-text = "Review screen with a message and option to create the test transaction. Popup screen with instructions about next steps."
width = 800
height = 366
%}

Since the transaction is in the mempool, the recipients wallet application is able to detect it. Because of the low transaction fee, sender and recipient have enough time to confirm the correctness of the transaction through an out-of-band communication channel.

Once the recipient confirms the transaction, the sender finalizes the transaction. In the background, the application uses RBF to replace the test transaction.

{% include picture.html
image = "/assets/images/send/test-transaction-finalize.png"
retina = "/assets/images/send/test-[email protected]"
big = "/assets/images/send/test-transaction-finalize.png"
alt-text = "Transaction detail screen with options to cancel or finalize the transaction."
width = 800
height = 366
%}


# To be defined

- Let users define the threshold for high-value transactions (absolute and/or relative amount)
- If RBF is not enabled, offer a smooth flow for enabling it.
20 changes: 0 additions & 20 deletions pages/milestones/send/contacts.md

This file was deleted.

12 changes: 0 additions & 12 deletions pages/milestones/send/silent-payments.md

This file was deleted.

1 change: 1 addition & 0 deletions pages/showcase.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ layout: default
title: Showcase
permalink: /showcase/
nav_order: 184
indent: true
---

# Showcase (concept)
Expand Down
1 change: 1 addition & 0 deletions pages/snapshot.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ layout: default
title: Snapshot
permalink: /snapshot/
nav_order: 181
indent: true
---

# Snapshot (assumeUTXO)
Expand Down

0 comments on commit 7d0efc7

Please sign in to comment.