Wallet: A User Friendly Data Structure



Summary:

A proposal for a wallet data structure has been put forward to make wallets more user-friendly. It is intended to partially solve "Pruned wallet support #9409" and work with "Complete hybrid full block SPV mode #9483". The proposed data structure would allow the wallet to run in a separate process from the Bitcoin node, with a set of whitelisted/trusted nodes that may only be those belonging to the user. The goals of the new data structure include instant-on capabilities, support for partial scans of the block height range, fast loading of external private keys and other watched identifiers, and transaction deprecation and double spending support. The wallet will also have the ability to merge, and connect with different kinds of nodes/providers of transaction evidence. The wallet consists of several lists: Spend Term, Wallet Coin, Spend Attempt, Transaction Evidence, Coin Scan, and Evidence Source. A Spend Term is anything that can be used to identify a coin that should be tracked by this wallet. An Evidence Source is a {operator, device, software} that fully validates blocks. It provides evidence of coin confirmations and spends. A Wallet Coin is a bitcoin txo with some extra data relevant to the wallet. A Spend Attempt is a list of Wallet Coins that identifies a spent transaction. Lastly, Transaction Evidence is evidence of the creation or spend of a coin. Types of Transaction Evidence include Confirmed UTXO Set Presence, Confirmation, and Discovery (Unconfirmed TX). Confirmed UTXO Set Presence is evidence that a coin is or is not in the confirmed utxo set and is only used for Wallet Coins, not Spend Attempts. Confirmation is evidence that a transaction was confirmed. Discovery (Unconfirmed TX) is evidence merely that a transaction was discovered. Lastly, the wallet would request a scan from the Source through a Spend Term Scan. It would provide the spend terms, target, and range, with the Source responding with any Transaction Evidence discovered.


Updated on: 2023-05-20T02:06:30.703128+00:00