Bitcoin, despite being commonly referred to as a payment network is not. It is actually a settlement network that will allow for superior payment networks to be built on top of it. Jeff Garzik's tweet on this subject was particularly succinct: https://twitter.com/jgarzik/status/595606257936957440. So, now that we know what to compare Bitcoin to (other settlement mechanisms), one might wonder why Bitcoin is superior? I will argue that the answer lies in the CAP theorem: http://en.wikipedia.org/wiki/CAP_theorem.
The CAP theorem states that a distributed database cannot be simultaneously: consistent, available, and partition tolerant. Since all systems (including traditional banking settlement systems and Bitcoin) must accept partitions due to both network related partitions and in the past even partitions due to time delays in settling between bank branches which might have been done overnight, a settlement system must make a design decision about whether it wants to prioritize consistency or availability. The traditional banking system has chosen availability and Bitcoin chose consistency. I will explain the consequences of those design decisions in this blog.
To further expand on how traditional banking chose availability and Bitcoin chose consistency, we have to look at what happens when there is a partition. In the traditional banking system, individual banks are actually setup in a sort of permanent partition mode. This is probably for historical reasons due to the fact that in the past you would actually need to physically hand messages from one bank to another to determine state. They use what's known as fractional reserve banking, so they can create up to a certain amount of money at any given time as long as they meet certain reserve requirements. See http://en.wikipedia.org/wiki/Fractional-reserve_banking. When you go into a bank to request a car loan, the bank can actually loan you money that it doesn't have. This leads to the problem that occurs when many people want to make a withdrawal at the same time, you have a possibility that the bank may become insolvent. This led to the need for a central bank who has the ability to create unlimited money who could always loan a troubled bank money to fix the problems. The central bank also operates as the settlement network between banks because it can guarantee that when bank A sends money to bank B, the payment will always go through and is guaranteed by the central bank who can create money at will. Today there is a settlement network called Fedwire that facilitates these types of transactions. Other countries have similar systems. This system assumes permanent long term partitions and favors availability over consistency. What I mean by that is that you can always get a loan at bank (availability), but the money supply is highly inconsistent and actually cannot be known by any one person in real time because it depends on the up to the minute activities of each bank.
Bitcoin, on the other hand, chooses consistency over availability. To just briefly describe how the Bitcoin network confirms transactions, there is a competition among all nodes on the network to solve a proof of work puzzle that includes all transactions that are to be confirmed. See the Bitcoin white paper for full details: https://bitcoin.org/bitcoin.pdf. If the Bitcoin network is partitioned (lets just say you can only connect to one node), your transaction cannot be committed to the network. So the Bitcoin network very clearly chooses consistency over availability. While some might argue that you can have competing blocks of which one or more will be orphaned, that's actually a slightly different scenario than what I'm describing because if you have connectivity to the entire network and you are not attempting a double spend, your transaction should be included in both of the competing chains.
So, what are the consequences of this design decision you ask? First, there is a consistently known state of the Bitcoin money supply at any given point in time. Anyone can easily look at websites that display information about the network to determine how many bitcoins are in circulation. Also, we do not need to create a lender of last resort because members of the Bitcoin network can settle debts directly.
The next question is: what trade-offs do we make by giving up availability? It turns out very few because of the way the system was designed and some things that can be implemented in the layer above the Bitcoin system. Since Bitcoin is implemented on the internet, network partitions fairly rare. They definitely happen, but the visa network and other payment networks already depend on the internet with acceptable results. In Bitcoin, blocks are solved on average every 10 minutes, so there is the question of how you can get instant payments. This again is a result of Bitcoin's insistence on consistency over availability. However, there are some possible solutions to this problem that are being implemented in the layers above the Bitcoin protocol. For instance, the lightning network https://lightning.network/ uses something called payment channels which allow you to settle instantly. There is also something called green address (https://greenaddress.it/en/) which allows you to add a trusted third party needs to be trusted to track double spends and ensure they don't occur. This is another way to prevent double spends.
So, to summarize: Bitcoin chooses consistency over availability while the traditional banking system choose the opposite prioritization. This results in a system more suited to modern technology. Layers above the Bitcoin settlement network will be able to resolve all currently perceived problems.
Friday, May 15, 2015
Friday, February 28, 2014
Bitcoin: how to protect consumers from exchanges.
In wake of the collapse and bankruptcy of Mt. Gox, which was once the biggest Bitcoin exchange, many commentators have proposed potential solutions to the problem. One of the primary solutions proposed is the cryptographic proof of solvency, whereby an exchange would offer cryptographic proof of sum of account balances without revealing participant's balance via hash-tree.
This solution would be far superior to what we have today, which led to the fact that Mt. Gox became insolvent. However, this solution stems from a view of the old world of finance where clearing firms must hold funds to ensure trades can be executed and that the market functions. In this brave new world of Bitcoin, that is no longer the case. Individual participants can hold onto their own bitcoins and transfer at precisely the moment the trade executes. In fact, the typical mechanisms provided by a brokerage can be executed without the broker, clearing firm, or exchange ever touching the participant's bitcoins. Unfortunately, if you are trading dollars for bitcoins, the same does not apply to your dollars. They would need to be held in the same way that traditional clearing firms, brokers, and exchanges hold assets today. But bitcoins (or other virtual currencies) would not need to be held at all for market orders and only for the period of time while a limit order has been placed but not yet executed. In fact there are even some solutions to giving up control of bitcoins when placing a limit order that I will discuss later.
First, lets discuss market orders. Lets say a participant has some amount of bitcoin that he/she would like to trade. At the time of the trade, the participant has that amount of bitcoin in an address that he controls. He is trading with another participant who has some form of fiat currency which is already ensured to be in their account through the standard mechanisms used by securities and commodity exchanges today to ensure that funds are available. The actual process of making a market order can be consummated with the bitcoin owner signing the transaction in which he sends the bitcoin to the participant(s) that the exchange has instructed him to send it to with his private key and submitting it to the block chain. A commission in which the participant sends bitcoin to the exchange can also be required as part of this transaction. Once the exchange confirms this transaction in the block chain it can debit the purchaser of the bitcoin's fiat currency account and credit the seller of the bitcoin's fiat currency account at the same time. Thus, with market orders, the exchange never even touches the bitcoin at all.
Things get a little more complicated with limit orders, but there are a number of workable solutions that at least reduce the risk of the exchange making mistakes. One solution is that the exchange participants be required to hold a balance in fiat to secure any amount of bitcoin that they wish to trade. Then, the exchange participant can make a trade for bitcoin using a limit order and the exchange can transfer a bitcoin on behalf of the participant when that trade finally executes. The exchange participant is then required to transfer the bitcoin to the exchange, but if that user does not make the transfer, the exchange is protected by the fact that it holds the participant's funds in fiat currency. With such an arrangement, brokers could grant credit facilities to allow for more flexibility in trading and you can picture an environment where this is not a significant limitation.
Alternatively, if the exchange does not want to require all participants to hold fiat currency equal to the amount of bitcoin, exchanges could also setup an escrow scenario whereby in order to initiate a limit order a participant transfers bitcoin into an escrow account that is controlled by the exchange. The user would be able to verify at all times that their money is in the escrow account because each participant would have their own assigned escrow address which no one else would know about and they could verify the balance at all time through the block chain. Once the limit order is triggered, the bitcoins would be transferred from the escrow account to the other market participant. In this scenario, the exchange only holds the bitcoin during the time while the limit order is open which substantially reduces the risk both to the market participant and the exchange. One could come up with ways to implement a multiple signature escrow account that must be signed by the exchange and the participant in order to consummate the transaction as well, but that goes beyond the scope of this blog and may be a topic for the future.
So, in conclusion, while cryptographic proof of solvency is an interesting concept and better than what we have today, there are a number of ways in which exchanges can be avoid holding bitcoins in the first place.
This solution would be far superior to what we have today, which led to the fact that Mt. Gox became insolvent. However, this solution stems from a view of the old world of finance where clearing firms must hold funds to ensure trades can be executed and that the market functions. In this brave new world of Bitcoin, that is no longer the case. Individual participants can hold onto their own bitcoins and transfer at precisely the moment the trade executes. In fact, the typical mechanisms provided by a brokerage can be executed without the broker, clearing firm, or exchange ever touching the participant's bitcoins. Unfortunately, if you are trading dollars for bitcoins, the same does not apply to your dollars. They would need to be held in the same way that traditional clearing firms, brokers, and exchanges hold assets today. But bitcoins (or other virtual currencies) would not need to be held at all for market orders and only for the period of time while a limit order has been placed but not yet executed. In fact there are even some solutions to giving up control of bitcoins when placing a limit order that I will discuss later.
First, lets discuss market orders. Lets say a participant has some amount of bitcoin that he/she would like to trade. At the time of the trade, the participant has that amount of bitcoin in an address that he controls. He is trading with another participant who has some form of fiat currency which is already ensured to be in their account through the standard mechanisms used by securities and commodity exchanges today to ensure that funds are available. The actual process of making a market order can be consummated with the bitcoin owner signing the transaction in which he sends the bitcoin to the participant(s) that the exchange has instructed him to send it to with his private key and submitting it to the block chain. A commission in which the participant sends bitcoin to the exchange can also be required as part of this transaction. Once the exchange confirms this transaction in the block chain it can debit the purchaser of the bitcoin's fiat currency account and credit the seller of the bitcoin's fiat currency account at the same time. Thus, with market orders, the exchange never even touches the bitcoin at all.
Things get a little more complicated with limit orders, but there are a number of workable solutions that at least reduce the risk of the exchange making mistakes. One solution is that the exchange participants be required to hold a balance in fiat to secure any amount of bitcoin that they wish to trade. Then, the exchange participant can make a trade for bitcoin using a limit order and the exchange can transfer a bitcoin on behalf of the participant when that trade finally executes. The exchange participant is then required to transfer the bitcoin to the exchange, but if that user does not make the transfer, the exchange is protected by the fact that it holds the participant's funds in fiat currency. With such an arrangement, brokers could grant credit facilities to allow for more flexibility in trading and you can picture an environment where this is not a significant limitation.
Alternatively, if the exchange does not want to require all participants to hold fiat currency equal to the amount of bitcoin, exchanges could also setup an escrow scenario whereby in order to initiate a limit order a participant transfers bitcoin into an escrow account that is controlled by the exchange. The user would be able to verify at all times that their money is in the escrow account because each participant would have their own assigned escrow address which no one else would know about and they could verify the balance at all time through the block chain. Once the limit order is triggered, the bitcoins would be transferred from the escrow account to the other market participant. In this scenario, the exchange only holds the bitcoin during the time while the limit order is open which substantially reduces the risk both to the market participant and the exchange. One could come up with ways to implement a multiple signature escrow account that must be signed by the exchange and the participant in order to consummate the transaction as well, but that goes beyond the scope of this blog and may be a topic for the future.
So, in conclusion, while cryptographic proof of solvency is an interesting concept and better than what we have today, there are a number of ways in which exchanges can be avoid holding bitcoins in the first place.
Monday, January 09, 2006
Subscribe to:
Posts (Atom)