Milestone 1.7: Sending bitcoin

Status: Early design exploration

Design milestone, Figma

The big goal is to provide full-fledged wallet features for view-only, single-key, and multi-key wallets, as well as hardware wallet support and more. The specifics are yet to be determined and will be tackled via smaller milestone releases.

A major step in development is the moment when the application reaches parity with the existing QT GUI and can take its place. This requires a lot of foundational work in the codebase, and a lot of front-end development work.

Below is a visual map of how we can reach this parity point based on Milestone 1, split up into distinct milestones. Each milestone adds a mostly self-contained set of features, with milestones building on each other. These are explained in more detail in the following pages.

A visual map of which screens will be added in the 1.7 milestone

The complexity of the send flow can range dramatically. Some of the features to support:

  • Address book
  • Fee estimation, recommendations and customization
  • Coin selection
  • External signers
  • Multiple signers
  • Multiple signing paths
  • Silent payments
  • Transaction batching
  • Transaction (PSBT) import and export
  • Bitcoin URI scheme support
  • Clipboard support

Screens and flows have not been fully designed yet. This page covers the current state. Below is an early version of the tree of user flows we may end up with.

Zoomed-out view of a tree structure of screens involved in the send flow

This is an initial send screen where the user has a payment request on their clipboard, and the wallet has multiple active spending paths to choose from.

Send screen with a notice at the top about an invoice being on the clipboard

The goal is to keep the primary screen simple and focused for regular transactions, and hide less frequently used options in the menu, accessed easily via the ellipsis button.

Overlay menu with send screen options

Before the transaction is broadcast, the user has another chance to review it.

Transaction summary modal for the user to approve or cancel

Wallet can be set up to be view only. We need to decide whether to offer some type of upgrade path to enable signing.

A send screen with a notice about the view-only state and options to upgrade to a signing wallet

Batch transactions can be enabled via the menu. The user can add more recipients and specify amounts for each.

Send screen with a pagination for batch transactions

In coin selection, users can choose which inputs to include in a transaction.

Coin selection screen with multiple inputs to choose from

There is a lot missing from these designs, but they should provide a good foundation to build on.