Click the comments link on any story to see comments or add your own.
Subscribe to this blog
11 May 2013
When I was a small boy and needed clothes, my mother would take me to the Best's department store, where we'd pick something out, and then go to pay for it. The clerk would take the money and the slips, put them in a cylindrical container, and send them off with a whoosh through a pneumatic tube to somewhere upstairs. After a delay of what seemed to me to be about a week and a half, our change and receipt would whoosh back, and we could go.
Buying things with Bitcoin is a lot like that. It's really, really slow to use, like ten minutes to several hours per transaction. While there are workarounds to speed it up, they all break some of the aspects of Bitcoin that make it different from normal money.
A fundamental problem that every kind of electronic money has to solve is double spending. If I have a quarter and I give it to you, I don't have the quarter any more. But if I have some packet of digital data and give it to you, I've just given you a copy of it, and I could give copies of it to lots of other people as well. Something has to arrange so that the first payment works, and subsequent payments with the same coin don't. The usual way to do that is to have a central authority, i.e. a bank. In book entry systems, the bank has an account for you and for me, I direct the bank to move some amount of money from my account to yours, and the bank tells you that it's done so. The bank prevents double spending by tracking my balance, and rejecting transactions if my balance is insufficient. This is similar to the way bank giro payments have worked in Europe for many years.
In bearer systems without accounts, my packet of data is a virtual coin, and to pay you I send the bank the coin and your address. The bank voids the coin and sends you a new coin of the same value (or maybe a little less if the bank charges transaction fees.) The bank prevents double spending by remembering which coins are valid and rejecting transactions using coins that have already been used.
The two major issue with using a bank are that all the parties have to trust the bank not to cheat them, and the bank has a record of every transaction. Bitcoin is designed for people who don't trust anyone, a bearer system with no bank. Instead it has a peer to peer (P2P) network that publishes records of transactions. Bitcoins live in cryptographic "wallets" that are nominally anonymous. If I want to pay you for something, I make up a transaction that includes our two wallets and the bitcoins, and send it out to the network. The various hosts look at the transaction and if it looks valid, i.e., I'm giving you coins that someone gave to me or that I mined, and I haven't given them to anyone else, they'll pass it along. Eventually there will be enough P2P nodes publishing your transaction that no competing transaction could be published, and the recipient will be able to publish subsequent transactions to give the coins to someone else. If two competing transactions are sent out at the same time, one of them will eventually win, via a process I don't entirely understand, but the details don't matter here.
Cryptographically, this is extremely clever. Practically, it means that if I purport to pay you for, say, a cup of coffee with bitcoins, you have to watch reports from the P2P network until you see enough nodes reporting the transaction that you believe that it won't be overtaken by a competing transaction, which takes a while. Depending on how confident you want to be, that could take anywhere from several minutes to several hours. By that time, my coffee is cold and has an unattractive scum on top. (A friend who's been to Bitcoin conventions reports that people often give up and buy coffee with regular money.)
While it's certainly possible to invent add-ons that speed things up, they either require a bank or that the buyer be identified.
A bank could issue, in effect, bitcoin debit cards. I deposit my bitcoins with the bank, and when I pay you, I tell the bank to pay you, which it does in one quick transaction, and tells you that you've been paid. This requires that we both have accounts at the bank, either identified like US banks, or anonymous like Caribbean tax shelter banks, and that we both trust the bank.
Or we could do the transactions the existing way, but add something on to persuade you that I am sufficiently trustworthy not to wait for the transaction to become irrevocable. That's analogous to the check guarantee cards that used to be popular in Europe. If I write you a check and have a card, you note the card number on the check, and if the check bounces, the bank will pay you and it's the bank's problem to try to collect from me. Again, it's not hard to do, but it requires that you trust the guarantor, and that the guarantor knows enough about me to be willing to make the guarantee. Again, it's not anonymous, and there's that pesky trusted third party.
In our next instalment, we consider that P2P transaction chain, and how it means that Bitcoin is probably the least anonymous payment system since the famous giant Yap island stone coins.
My other sites
© 2005-2020 John R. Levine.
CAN SPAM address harvesting notice: the operator of this website will not give, sell, or otherwise transfer addresses maintained by this website to any other party for the purposes of initiating, or enabling others to initiate, electronic mail messages.