Snapshot (assumeUTXO)
Status: In development
Github issue, Figma, Prototype
The initial block download can take quite some time. assumeUTXO is a method for allowing users to interact with their wallet more quickly by importing a snapshot of all UTXOs. This allows for calculation of the balance and listing transactions in a wallet that have been received, and not yet spent.
The application only temporarily relies on this snapshot. It still downloads and validates the whole history of blocks in the background. Once it has caught up with the snapshot, it discards it. While there is some data validation, users still trust the data in the snapshot for some time.
This feature can speed things up for the user, and also introduces a new interaction. They need to find and download a trustworthy snapshot file and import it. It is not quite clear yet where users will find these files. Alternatively, users can create their own snapshots from a fully synced node, and import it into another node or share it with others.
Both design and implementation of this feature likely need iteration over time, as best practices for usage become more clear.
The image below shows the two user flows for creating and importing snapshots.
The feature is named snapshot to be more broadly understandable. Some other terms were discussed, like quick-start file and bootstrap file. Neither term can fully convey all important aspects of the feature. That can be achieved with short, contextual descriptions.
When a snapshot file was imported, but is still being validated, that status is shown in next to the block clock.
Transactions that have not been verified by the local node show that status (instead of the date). Users can still easily see the date by clicking the transaction.
Snapshot files are created at certain points in time. The application source code includes a hash for a specific one, against which downloaded files can be compared. Users should be presented the basic information they need to decide whether to trust the snapshot, and what to convey when sharing their own snapshots with others. The designs are starting points and likely need iteration.
Further designs are needed for the send flow. Users may need to be informed when including UTXOs in their transactions that have not been verified yet.