Possible Misconception: Bitcoin Wallet Singular

There is a possible misconception which people might have about how Bitcoin Wallets work, which I would say, because I had this misconception myself until only very recently. Many popular Bitcoin Wallets present themselves to the user as having one balance at one time.

Each time we receive funds, most of the time, we will want to receive those funds to a separately-created Address. And the difference between the Address and the Public Key, is mainly one in formatting of the binary data.

What many Wallets do not show the user, is that each receiving Address continues to hold its own balance. This means that when we tell such a Wallet to Send an amount of Bitcoins to another recipient, which is larger than the balance we hold on any one of our own Addresses, what our Wallet tends to try to do, is to make numerous transactions, one from each Address, all to the same recipient, until the total amount of funds has reached the amount we asked to Send.

Each of those Addresses, being a Public Key, has its own Private Key, which we must unlock across-the-board, at least until the transaction is complete. And each Private Key, therefore, only has a limited amount of Funds it can Send. Balances are not allowed to go negative.

And so what can happen to many users, is that our Wallets become fragmented, with only a small balance associated with each of our Addresses, many of which might have started out as having a larger, received balance. And sometimes, the P2P network can be reluctant to process such a transaction, because it represents a load on the network.

And so an operation that some Wallets recommend, is that if we have many small balances, eventually to transfer a larger sum, out of those balances, to a new, single receiving Address we have in our own, same Bitcoin Wallet. This incurs the transaction fee normally associated with such an operation, but the only benefit to us, is that we will have a single, larger balance afterward.

Other types of Wallets do not show us, how much of our balance is associated with each Address.

What this also means, in connection with what I wrote before, about being able to Sweep one Address, is that this ability is usually not so sweeping in practice. Since a wallet with 10 Addresses that hold balances, can also have 10 Private Keys, the program from which we might want to do the Sweeping, will need each of the Private Keys, in order to empty out a whole Wallet, for example.

From the security perspective, it could become a more complicated action, to steal 10 Private Keys, than it would have been simply to Steal 1 Private Key. And for off-line Wallets, this can be a limiting factor. We can only write down a limited number of Private Keys by hand, on a sheet of paper, for example.



Bitcoin, more specifically

One Bitcoin Address effectively works like a Public/Private Key-Pair, except that the trapdoor function used is not RSA. Given the Public Key (aka Address), it is possible to Audit that Address, i.e. to listen for payments made to it. And, there are specific cases where a Public Key can be associated with a known identity.

For example, an Address may have been published openly, to accept donations or vending-machine payments. Because the Public Keys can be tested for equality, any additional occurrence of the same one, will be known to belong to the same identity.

Further, while the Private Key associated with an Address is needed to Send a Payment from that Address, how many BTC any Address holds is decided by the system of Peers, more than by the one Wallet. Therefore, if a third party can obtain a Private Key, he or she can use the network in order to “Sweep” that Key, which means, to order any BTC held by that Private Key Sent to some other Address. This can work without physical access to the version of the Wallet which has actually been stored on a given Computer.

What this might mean for me, if the HD of my older computer was to die, is that if additionally, I had an offline copy of its Private Keys, I could Sweep those Keys into my new Wallet, on my new computer, without having to revive the old computer necessarily.



Bitcoin in general

Bitcoin-transactions are sent to Bicoin-Addresses, which consist of a long alphanumeric sequence that seems random. Because all Bitcoin-transactions can be retrieved from the P2P network, and because even those sequences can be matched when equal, recipients of funds will often create a new Receiving Address, in some cases one for every transaction.

Because it is a crypto-currency, public lists of transactions are not meaningful by default, beyond revealing the Addresses used. They cannot typically be associated back to specific people.