Not so long ago, Facebook removed the veil of secrecy from its new currency, Libra. As part of their presentation, they published documents - official and three technical - aboutLibra blockchain, Move language and LibraBFT. Despite the resulting storm on Twitter and trolling on Github, I gave myself the trouble to wait a bit to better assess the situation before sitting down at the keyboard.
I realized that all this criticism paradoxically testifies in favor of the importance of this event.
In this post I will look at the technical details.the new “blockchain”, including aspects such as consensus and decentralization. First of all, I will try to shed light on the nature of the social movement launched by Facebook, the macroeconomic and geopolitical effects of Libra, and also consider the alleged impact of the new currency on the blockchain space.
It is this part that makes me the greatestdisappointment with Libra. Alas, there is nothing special in Libra, and in some things I would even take its technical solutions as regression. Let's start our review of Libra with the part of it that most closely resembles Ethereum - its TX structure:
Translation of the document: “3.2 Transactional structure. A transaction is a signed message containing the following data:
- Sender address: Transaction sender account address. The virtual machine reads the sequence of number, authentication key and balance of resources stored on the Libra.T account.
- Sender public key: the public key corresponding to the private key used to sign the trade. The hash of this public key must match the authentication key stored on the sender's Libra account.
- Program: a bytecode move transaction script for execution, an additional list of script entries and an optional list of bytecode modules for publication.
- Gas price: the number of Libra coins that the sender is willing to pay per unit of gas for the transaction.
- Maximum Gas: The maximum number of units of gas that a transaction can use before it is stopped.
- Serial number: unsigned integer, which should be equal to the sequence number of the Libra.T account of the sender of the resource. After this transaction is completed, the sequence number will be incremented by one. Since only one transaction can be committed for a given sequence number, transactions cannot be replayed. ”
The first thing that catches your eye is that,Like Ethereum and unlike Bitcoin, Libra is based on accounts, not UTXO (unspent transaction output). We can see the sequence number (known in Ethereum as “nonce”) counting transactions on each account to prevent duplication of transactions. The next point coinciding with Ethereum is the price of gas and the maximum number of units of gas - Libra even takes the term “gas” from Ethereum.
Secondly, it is worth noting that requiredspecify both the address and the public key from which the TX is sent. This is done in order to distribute various signature schemes, as is already happening in Ethereum - they have implemented this mechanism quite well. However, in practice, Libra requires only one scheme to be signed - ECDSA, which has not been an innovation for a long time. To see something like Schnorr's signatures would be more relevant and innovative, and would leave a much better impression.
The first interesting difference between Libra and EthereumIt consists in the fact that the former does not have a value field, namely, the concept of a native system token in the Libra virtual machine (it is called Move), where the Libra token is implemented just like any other token on top of the Move virtual machine (MVM). I personally consider this move to be a purely positive phenomenon. Most Ethereum developers admit that simultaneously supporting ether and ERC20 is a very strange event.
However, in the program field morean important difference from Ethereum. Here we find that MVM operates in a completely different way than EVM (Ethereum Virtual Machine). To distinguish them from each other, it is important to look at the statement regarding MVM:
In Ethereum, when you publish a contract, itgets its own address, which acts as a separate “object” with its own repository, etc. He can also refer to other contracts, and this appeal will be indistinguishable from any other (there is a slight subtlety regarding tx.origin, which I will not go into).
However, in MVM, code is stored as modules. When a module is published, it is stored at the address that created it. Modules can create resources stored under the accounts with which they are associated (see figure).
The program field in the transaction is similar to the mainsoftware method. It contains code that can also call various modules. Please note that this is significantly different from Ethereum, because even if the module uses another module, the caller is always the original account. This is a completely different type of “smart contract” than in Ethereum.
One of the illustrations of this difference can be consideredlack of libraries in Ethereum. All code published in Ethereum is a smart contract code endowed with its own essence. For such purposes, people have come up with things like proxies and logical contracts that allow you to process code. But in Ethereum, this is implemented very unnaturally, which led to such things as, for example, hacking Parity. Libra takes the exact opposite approach: here, contracts are not endowed with the properties of sovereign entities, but there are modules that can be used (for similar purposes).
For me, this is a serious step in the wrong direction. I feel that contracts as subjects open up a huge range of opportunities, the most obvious and promising of which are certainly DAO structures. I am not sure that I understand from what considerations this approach was chosen. The main argument of Libra was the insecurity of smart contracts, which, of course, is a matter of utmost importance. However, in my opinion, these types of problems can be solved at higher levels, such as compilers, without affecting the system architecture.
Last technical comment concernsconfidential transactions. If Libra had the opportunity to produce something really revolutionary, bring a number of significant technological innovations to its product, allowing for confidential transactions, like Monero, ZCash, etc. - then this Libra feature was completely ignored, and it’s really annoying.
Consensus, decentralization and semantics
Libra's consensus mechanism is based on long-standingacademic tradition of BFT protocols. These protocols are used to achieve consensus between a set of well-known validators. This solution is clearly not decentralized, in direct accordance with the Libra technical document.
The Libra project claims that in the future theyWe intend to move to a proof-of-stake model in which validators can be panelized as well as modified. It is very difficult for me to believe this for two reasons: firstly, the larger the asset, the more difficult it is for centralized entities to give up its control, both because of the desire to maintain their power, and because of the requirements of regulatory authorities. Therefore, if they do not decide to decentralize control over the consensus mechanism at a time when the use of the asset is still very small, it is difficult to believe that they will do so in the future.
Secondly, Libra builds a model in which the tokensupported by an asset index. This in itself makes it a centralized system. It is hard to imagine how to combine error-free proof of a proof-of-stake model with an attached token of the kind that the Libra association will have to emit and burn.
Another issue to be discussed, II consider semantics. Libra Association calls its system blockchain. Although this term may be technically correct, I would still find it misleading. It is necessary to separate the blockchain with permission (such as Libra) and the blockchain not requiring permissions (such as, for example, Bitcoin, Ethereum, etc.), in which everyone can participate in the consensus process. There is no true or false here, as this is pure semantics, but I believe that blockchain is a concept that was developed in order to come to a consensus without the need for permissions. Allowed systems were known and possible before the publication of an article written by Satoshi, and therefore I think that (in the case of Libra) the use of the term blockchain is just an attempt to promote crypto noise.
Macroeconomic, social and geopolitical effects
Perhaps the most interesting thing in Libra is the socialthe consequences that the new cryptocurrency brings with it. And although I am quite critical about its technical features, I think that still launching Libra is a huge step in the right direction. Over the past century, money has managed to completely transform into a fiat system, monopolized by states. I believe that private companies, such as Facebook, which issue their own tokens and compete with fiat currencies in the free market, where participants have the opportunity to choose which is better for them to use, will definitely benefit digital currency users around the world.
I would also like to point out Libra's choicein relation to not tying your token to the US dollar. This may seem like a trifle, but in fact it is a serious decision, which, probably, has been discussed for a long time. Having chosen this path - and even publicly announcing it in a statement that the purpose of the solution is to maintain a stable cost of tokens - Libra (and Facebook) came into direct conflict with central banks, and, above all, with the US Federal Reserve. The military did not slow to make a stand: the finance minister of France, the US Congress and even Donald Trump himself stood in opposition to this step from Facebook.
Please note that in addition tostrategic course - not tied to the dollar - Facebook’s statement that Libra will be supported by the currency index is also a strong tactical move. Potentially, in this way, they can influence states that will try to counter Libra by not including currency in the index.
This shift in the balance of power cannot be underestimated. Although Libra is not decentralized, it is an open system. Namely, it does not rely on the state system of identity. Anyone can get a Libra account simply by creating a pair of private and public keys. This could give the equivalent of banking services to two billion people who are unable to use banking services.
And the last thing I would like to say is abouthow this whole story will affect the fate of books that do not require permission. I see two scenarios: in one, regulators in a certain epic battle will fight Libra and win. Facebook will abandon its project and close it. In this case, systems that do not require permission will receive a big impetus for development, since they, being decentralized, will be the only real alternative that will be able to help avoid pressure from regulators. In the second scenario, Libra will succeed in the free market, where private tokens will compete with fiat currencies. In this case, each user will have to choose between functions such as fiat binding, decentralization, privacy, etc. Although this may take longer than I would like, I am still optimistic that, in the long run, decentralization will sooner or later prove to be the most valuable of all the properties of cryptocurrency.