What is a wallet? It's a place where you store your money before your spend it. A Bitcoin wallet, then, must be a piece of software that does the same thing for your Bitcoins. That's the metaphor we've been using since the first version of the Bitcoin software, but it's not going to last much longer in its present form.
Bitcoin does behave in ways that is similar to physical cash, but it's also got some additional capabilities that got far beyond non-digital currencies. Ownership and possession are simple concepts when it comes to traditional physical currency. You either have a quarter or you don't, and your ability to spend it depends only on whether it's on your immediate person or not.
Bitcoins aren't like that - users typically have more than one device capable of accessing their balances. Spending bitcoins might be possible from all devices, a subset of their devices, or require cooperation between multiple devices. In addition to this, individual bitcoin balances might require cooperation between multiple users.
This functionality has not become common yet, but it's coming soon. One of the first things that is going to need to change is expanding our understanding of what it means to own bitcoins. Actually, ownership isn't even a particularly useful concept when it comes to Bitcoin - all that matters to the network is whether one can spend them or not, and the question of whether a user can spend specific Bitcoin balances from a particular device is not at all straightforward. The wallets of the future will need to differentiate between different degrees of spendability and discover ways to display this to their users in a meaningful form.
To illustrate the scope of the problem, let's enumerate the categories wallets will encounter.
- Number of keys required: a UTXO may require signing by zero, one, or many private keys before it can be spent.
- Number of keys controlled by the user: a user may possess zero, some, or all of the keys requires to spend a UTXO.
- Number of keys held in the wallet: a given wallet may contain zero, some, or all of the relevant keys which the user possesses.
Three axes with three possibilities each leads to 27 theoretical combinations. Fortunately, most of those combinations don't actually make sense and can be ignored. The rest can be grouped into four convenient categories. All of these categories will be discussed in the context of a particular user on a specific device.
The chart above shows all 27 categories. The ones with a black background are invalid combinations. Now we can start grouping the valid ones.
Red boxes represent bitcoins that a user will never spend. A wallet could monitor these balances as "watching-only", which is a supported by several existing clients. We can call this category "unspendable" (by this user).
Green boxes are the opposite of the red ones. They represent balances which can be spent directly from this device without any outside assistance from another user or device. We can call this category "spendable".
Blue boxes represent balances that are under the control of the user, but for which this device can not sign transactions. They could also be considered a type of watching-only balance, but should be differentiated from the unspendable balances. We can call this category "offline".
'
All the previous categories involve concepts that at least one common Bitcoin wallet have already implemented. The yellow boxes, on the other hand, represent a new category that only occurs with multisignature outputs. Bitcoins in these categories are ones in which the device can act as one of several required participants in the creation of transactions. We can call this category "signable".
This is a preview of the concepts users will need to learn in future of Bitcoin wallets. Once advanced transaction types, and secure offline storage become more common the question of, "what is my balance?" will not longer have a simple answer. "Your balance" can mean at least three different things, depending on the context. Packaging this in a way that makes it usable for non-experts will be a challenge for wallet implementors above and beyond implementing the actual functionality.