Full reserve banking with fiat using a block chainImagine a block chain acting as a ledger for a fiat currency such as USD or EUR. Fiat payments would be conducted analogously to cryptocurrency payments. Wallets would contain fiat money instead of cryptographic currencies. This post explores whether such a block chain can exist.
RationaleDepending on its implementation, a fiat blockchain can inherit some of the properties from the bitcoin blockchain:
- Fiat in the blockchain cannot be confiscated by a central authority;
- Fiat in the blockchain cannot be frozen by a central authority;
- Cheap and convenient payments, also cross-border;
- Settlement of payments within max one hour;
- Pseudonimity;
- Difficult to trace;
- Balance total is protected by cryptography.
Of course, some Bitcoin advantages are not inherited, such as:
- Predictable and moderate inflation of the amount of currency units;
- Currency units are themselves valuable, whereas fiat currency units are a proxy for fiat, and must be backed by physical fiat to retain their value;
- Trustless, whereas a fiat blockchain requires some level of trust in fiat bankers.
Implementation mock-upIn a fiat block chain, there is no mining, and no block reward. Rather, there will only be transaction hashers, and the hashers are motivated by transaction fees only.
A fiat block chain must be provably 100% backed by reserves with as little trust as possible. Every currency unit on the block chain must exist physically in a safe. Although a fractional reserve block chain is possible, it is not considered here. Due to the nature of fiat, a fully decentralized and trustless implementation is not possible. Here we will try to explore how a fiat block chain can be implemented with as little as possible compromises to the advantages which the decentralized and trustless model offers.
In order to get fiat currency units on the fiat block chain, fiat money must be deposited and stored physically with a fiat banker. The fiat banker is authorized to issue fiat currency units on the block chain at the address of the depositor. For instance, a deposit of USD 100 would be carried out as follows: the depositor hands over a physical USD 100 bill to the fiat banker. The fiat banker releases USD 100 on the block chain at the address of the depositor. The fiat banker stores the USD 100 bill in a safe.
To prevent the fiat banker from releasing fiat on the block chain for which no reserves are held, a method is proposed to ensure that the fiat is provably held by the fiat banker. Although trust can not be fully removed, it can be reduced significantly. Whether it can be reduced sufficiently to make a fiat block chain feasible remains an open question.
The fiat banker stores bank notes in a bank safe. In our method, only a single bank note size is stored, such as USD 100 or EUR 50 bills. Depositing fractions of the standard bank note size is not possible. The fiat banker will therefore physically store USD 100 or EUR 50 bills only. This will facilitate prove of reserves.
Every bill has a unique serial number printed on it. When a fiat banker releases fiat on the block chain, it must be done such that the serial number of the bank note, as well as a unique reference or ID of the fiat banker is also verifiably released. This allows the depositor to verify that his bank note is correctly released on the block chain, although it would have no consequences for the depositor if it were not. That is: the serial number is released, but not tied to the address of the depositor. The depositor receives currency units that can be freely spent in fractions just like a cryptocurrency. The serial number is on the block chain for reference, as it facilitates prove of reserves. The reference of ID of the fiat banker can be a number, but it is also released. Together, the block chain stores that a bank note with a certain serial number has been deposited with a fiat banker with a certain ID. Thus, the block chain stores the serial numbers of every physical bill that has been deposited for every fiat banker.
A fiat banker naturally also serves withdrawals of fiat. A holder of fiat on the block chain can withdraw his units on the block chain by visiting a fiat banker and exchanging his balance on the block chain for physical bank notes. In the simplest example, if USD 100 is to be withdrawn, the withdrawer visits the fiat banker and sends the USD 100 to the address of the fiat bank. The fiat bank then takes a physical USD 100 bill from its stock and hands it over to the withdrawer. However, the transaction is conducted such that the serial number of the bank note that must be returned by the fiat banker is determined randomly by the block chain. The withdrawer sends a special withdrawal transaction to the fiat banker. The block chain knows all the serial numbers of all previously deposited bank notes. The block chain randomly defines which bank note must be returned to the withdrawer. The fiat banker must retrieve the physical bank note as randomly determined by the block chain from the safe and hand it to the withdrawer.
This scheme makes it very difficult for a fiat banker to cheat. If the fiat banker would release bank notes on the block chain for which the physical notes do not exist, then this will become clear very quickly if withdrawers find that the fiat banker is not able to produce the bank notes with the serial numbers as demanded by the block chain. In fact, if the fiat banker fails to produce the bank notes as demanded by the block chain, it can no longer be trusted, and depositors should no longer deposit with this fiat banker.
A rogue fiat banker is able to fund an account on the block chain using serial numbers of bills that are not in his possession. Next, the rogue fiat banker can send his balance over to a honest fiat banker and receive physical bank notes in return for his unbacked balance. This will only be discovered as soon as anyone tries to withdraw fiat with the rogue fiat banker, at which point it would become clear that the rogue banker can not produce the bills with the serial numbers as demanded by the block chain. By then however it is already too late.
To mitigate such schemes, the fiat banker must have additional incentives to remain honest. This is an open point, although it can probably be resolved by legal means or by demanding fiat bankers to deposit an amount in escrow in order to be allowed to act as a fiat banker. Also, limits can be imposed on a fiat banker as to how much fiat can be put on the block chain, which in turn can depend on the type of legal measures or height of the deposit in escrow, or both.
Since a deposits and withdrawals are in units of a chosen bank note, fractional amounts can not be withdrawn. This is easy to circumvent, however. For instance, to withdraw a fractional amount, the withdrawer can add an amount to reach a multiple of the bank note amount. For instance, to withdraw USD 143, the withdrawer would send USD 143 to the address of the fiat banker, as well as hand him USD 57 in cash. The fiat banker then asks the block chain to release two USD 100 bank notes, and hands them to the withdrawer. Of course, the withdrawer is supposed to verify the serial numbers on the bank notes with the block chain generated numbers.
The idea of a fiat block chain presented here is very rudimentary and only serves as a jumping point for further exploration, or alternatively, dismissal.