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.



One Caveat of using Bitcoin-Core

I happen to own some Bitcoins. But I also happen to be a person, who has never bought anything with them. Maybe this is partially because, officially, Bitcoin was not recognized as a currency in Canada or the USA. I bought the Bitcoins a long time ago, with the hope of watching their value increase – which it did – and then being able to continue owning them.

And we have a variety of Bitcoin Wallets to choose between. I began by choosing “Bitcoin Core” as my Wallet. This particular Bitcoin Client has as feature, to be able to support the Peer-2-Peer infrastructure, should other clients want to negotiate transactions, while mine is visible as a potential server for those to connect to. Further, I chose to set this one up “On A Zero-Trust Basis”. The way most Bitcoin Wallets work, they simply connect to a dedicated server, and accept whatever data that Peer offers. A Peer based on zero-trust cannot do that, but needs to find the first Bitcoin-transaction that ever occurred, and needs to download all the transactions that took place since then, to verify the integrity of all those blocks, and eventually to determine the integrity of our own Wallet.

(Edit 10/07/2016 : This is an option which Bitcoin Core gives us when we set it up for the first time. Not all the instances are set up this way, the alternative being the quicker, recommended, Automatic Connection option.)

Obviously, we would not choose to install it this way on our Smart-Phone, since it produces long delays if told to connect, after long periods of inactivity. And I did not choose this approach due to mistrust. I chose this approach, because it was the most powerful version of the software, still within my practical reach. And I still live in an era, where users want their computers to have far more power, than we really need. Further, this version of the software does not provide the user with a GUI, from which he could actually display all those anonymous transactions and Bitcoin-Addresses, as if to investigate them. But this also suits me well, as such a transaction history would be meaningless for me just to look at.

But if the need comes up, to migrate all the critical data off a Hard-Drive, let us say because the computer in question has become unstable, and if we have a Bitcoin Wallet on that HD, then we also need to transfer our Bitcoins, to a Wallet on another computer. This sounds straightforward, since one person can have as many Bitcoin Wallets as they wish, and can transfer the Bitcoins as though transferring chunks of gold, from one pouch to another.

But when I fired up my Bitcoin Wallet yesterday afternoon, around 13h00, I found out that it had fallen out-of-sync By 1 Year and 6 Weeks. It needed to recap the full transaction history that has taken place in the meantime, before giving me access to my own, meager Bitcoins.

And this happened to take, until 4h00 this morning. In the future, I will think twice before installing this one, particular type of Wallet. There are other Wallets available today, interesting in other ways.