It has been several weeks since Facebook lifted the veil on top of its new currency Libra. As part of this exposure, they have published a whitepaper and three technical papers about the Libra blockchain, The Move language, and the LibraBFT. Despite Twitter’s immediate storm, and some Github trolling, I took the liberty to wait and get a better estimation on the situation before hitting the keyboard. I figured that with all the criticism, one cannot underestimate the importance of this move (yes, it’s a pun ^^).
In this post, I will review the technical details of this new “blockchain”, including its consensus and decentralization aspects. Above all, I’ll try to shed some light on the nature of this move by Facebook and its macroeconomic and geopolitical effects, together with its estimated impact on the blockchain space.
This is, to me, the part which is most disappointing about Libra. There is not much innovation to it, and in some things, I would even see it as regression. Let us start to review Libra from the part which is most similar to Ethereum, the structure of a TX:
The first thing which is visible is that similar to Ethereum and unlike Bitcoin, Libra is based on accounts rather than UTXOs. We can see the sequence number (known in Ethereum as nonce), counting the transactions from every account, to prevent the replay of transactions. Another thing which is the same as Ethereum is the Gas price and maximum Gas fields — they even borrowed the term Gas.
The second thing we notice is that one needs to specify both the address and the public key from which a TX is sent. This is in order to proliferate different signatures schemes, an effort already happening in Ethereum. It is nice to see it already implemented here. Nevertheless, practically Libra will start with only one signature scheme, ECDSA, which again shows no novelty. Seeing something like Schnorr signatures would have been innovative and given a much better impression.
The first interesting difference in Libra from Ethereum is that there is no value field, namely, there is no notion of a native token of the system in the Libra virtual machine (named Move), and the Libra token is implemented the same as any other token on top of the Move Virtual Machine (MVM). I personally consider that a very positive transition. Most Ethereum developers recognize how strange it is to support both Ether and ERC20.
However, a more important differentiation from Ethereum is revealed in the Program field. Here we discover that MVM acts very differently from the EVM. To distinguish between the two it is important to look at the MVM state:
On Ethereum when one is publishing a contract, this contract gets its own address, and it is acting as its own “entity” with its own storage, etc. It can also call other contracts, and this call is indistinguishable from any other call (there is a small subtlety here of tx.origin which I’ll not go into).
Yet, in the MVM, code is stored as modules. When a module is published it is stored under the address which created it. Modules can create resources that are saved under accounts which they are associated with (see figure).
The program field in the transaction is like the main method of a program. It contains code that can also call different modules. Notice that this is very different from an Ethereum call, as even if a module is using another module, the caller is always the original account. This is a very different type of “smart contracts” than Ethereum.
One way to think about this difference is the lack of libraries in Ethereum. Namely, all the code published in Ethereum is a code of smart contracts, which gets its own entity. Thus people came up with things like proxy and logic contracts, that allow for code recycling. But this is very unnatural in Ethereum and has led to things like the Parity hack. Libra takes the exact opposite approach: it has no notion of contracts as sovereign entities but has modules that can be used.
To me, this is a major step in the wrong direction. I feel that contracts as entities open a huge range of possibilities, the most obvious and promising being DAOs, of course. I’m not sure why this approach was chosen. The main argument that is raised is the safety of smart contracts, which is clearly an important issue. But in my opinion, these types of issues can be addressed on higher levels, such as the compilers, without affecting the architecture of the system.
One last technical comment is regarding confidential transactions. If there is one place where Libra could have brought some real technological innovation is by allowing confidential transactions, similar to Monero, ZCash, etc. The fact that this notion is completely ignored is just disappointing.
Consensus, decentralization, and semantics
The consensus mechanism in Libra is based on a long academic tradition of BFT protocols. These protocols are used for reaching a consensus between a set of known validators. This is clearly not decentralized, even according to the Libra whitepaper.
The Libra project claims that they intend to shift to a proof of stake model in the future, in which the validators can be panelized and also changed. I find this very hard to believe for two reasons: first, the bigger the asset the harder it is for centralized entities to give up control over it, both because of their wish to preserve their power, and because of demands by regulators. So if they are not decentralizing the control over the consensus mechanism while the asset’s use is very small, it is hard to believe that they will do so in the future. Second, Libra is building a model where the token is backed by an index of assets. This by itself makes it a centralized system. It is hard to imagine how a permissionless proof of stake model can be merged with this sort of pegged token that the Libra association must mint and burn.
Another issue to discuss is semantics. The Libra association is calling its system a blockchain. Although it might be technically true, I would consider that a very misleading terminology. They are separating between permissioned blockchain (like Libra) and permissionless blockchain (like Bitcoin, Ethereum, etc) in which anyone can participate in the consensus process. There is no true or false here as it is purely semantics, but my opinion is that blockchain is a concept that was designed to allow for permissionless consensus. Permissioned systems were known and possible prior to the paper by Satoshi, and so I think the use of the term blockchain is only an attempt to ride the blockchain hype.
Macroeconomics, social and geopolitical effects
This is probably the most interesting part about Libra: its social implications. Although I have some criticism on the technicalities and the permissionless of Libra, I think it is a huge step in the right direction. Money has transformed greatly over the last century into a system of fiat monopolized by the states. I believe that private companies such as Facebook issuing their own tokens and competing in a free market with fiat currencies, where one can choose what to use, will only benefit digital currency users around the world.
I would like also to point out the choice that Libra made to not peg their token to the USD. It might seem like a small thing, but it is a huge decision, likely discussed in great length. By choosing this path — even declaring it — by saying that the aim is to maintain a stable token value, Libra (and Facebook) has put itself on a direct collision with the central banks, and most of all, the US Federal Reserve. The war trumpet can already be heard: the French treasury minister, the US Congress, and even Donald Trump himself has reacted to this move by Facebook in strong opposition.
Notice that on top of the strategic course — to not be USD pegged — the declaration by Facebook that Libra will be backed by an index of currencies is also a strong tactical move. As they can basically coerce states that will try to oppose Libra by not including them in the index.
One cannot underestimate this shift in the balance of power. Although Libra is not decentralized, it is open. Namely, it does not rely on the identity system of the state. Anyone can have an account, by simply producing a private-public key pair. It can have an effect of banking two billion people that are unbanked.
One last word on how this will affect the permissionless ledgers. I can see two scenarios: in one, regulators will fight Libra in an epic battle, and win. Facebook will give up and close the project. In this case, the permissionless systems will get a big boost, as they will, being decentralized, be the only real alternative that can eschew regulators. In the second scenario, Libra will prevail, and private tokens will compete with fiat currencies on a free market. In this case, each user will have to choose between features like pegging, decentralization, confidentiality, etc. While it might take longer, I remain optimistic that decentralization will prove itself as the most desired feature in the long term.