There have been a plethora of articles attempting to analyze and comment on Libra. But the truth is that Libra is not what most people - including politicians, technologists, investors and regulators - think it is. Is Libra a blockchain? Does Libra compete with Bitcoin… or maybe Ethereum? What are the implications of Facebook entering the payments industry?
Libra’s Whitepaper is the “Mueller Report” of Crypto: everyone is talking about it, but nobody is reading it. Libra has managed to simultaneously catch the attention of the crypto, financial, and regulatory communities without fully satisfying any of them. Despite the confusion, the goal of the project is stated clearly in Libra’s whitepaper:
Libra’s mission is to enable a simple global currency and financial infrastructure that empowers billions of people.
Behind that simple mission is a complicated blend of technology and politics, and a controversial company. Libra employs quite a bit of complex cryptography and sophisticated computer science concepts. In this article, I’ll be unpacking Libra from a technology and application perspective and providing explanations for these concepts that require little to no technical knowledge. For those who want to learn more, I’ll also provide reference links for additional reading.
No Blocks or Chains
The first thing to understand is that despite their documentation, Libra is not really a Blockchain. Libra has been criticized for claiming that the protocol runs on a blockchain while simultaneously including this contradictory sentence:
“Unlike previous blockchains, which view the blockchain as a collection of blocks of transactions, the Libra Blockchain is a single data structure that records the history of transactions and states over time.”
No blocks? No chains? Where’s the blockchain? As with many things, however, the truth is more complicated. Libra runs using a Byzantine Fault Tolerant consensus algorithm (BFT). In Libra’s case, the BFT algorithm is HotStuff which is similar, but not exactly the same, to the types of consensus you would see in Hyperledger or Ripple. This consensus is used to update a global state machine which progresses with each transaction and is structured in a massive, global Merkle tree (more on that in a moment)
Here’s a diagram from Libra’s developer documents describing their state machine:
A and B represent Alice’s and Bob’s accounts in the blockchain.
- SN-1 represents the (N-1)th state of the blockchain.
- TN is the n-th transaction executed on the blockchain.
- F is a deterministic function. F always returns the same final state for a specific initial state and a specific transaction. If the current state of the blockchain is SN-1, and transaction TN is executed on state SN-1, the new state of the blockchain is always SN.
- SN is the n-th state of the blockchain. SN is an outcome of applying F to SN-1 and TN.
TL;DR Every transaction progresses the state of the network forward and each state represents a “snapshot” of the entire network at a given point in time.
In case that doesn’t make perfect sense, let’s break it down a little more. For starters, Merkle trees are an important concept for blockchains in general as nearly every cryptographic protocol uses them in one form or another. For the computer scientists out there, a Merkle tree is just a binary tree where each of the leaves is an arbitrary piece of data. Each of the internal nodes on this tree is a hash of the data blocks below it. A hash can be thought of as a smaller “digital fingerprint” of a given piece of data. All of this is eventually consolidated in a “Merkle root” which is a single hash that can be thought of as a digital fingerprint of the entire tree structure.
For the non-computer scientists out there, a Merkle Tree (created by Ralph Merkle of UC Berkeley) is a special data structure that allows for high data integrity and search efficiency. The data structure achieves a high level of integrity through the concept of the “merkle root” which represents the entire data structure in a single hash. This means the entire tree can be snapshotted as the state of the network changes, resulting in a unique digital fingerprint for every single state. This structure yields tremendous search efficiencies due to the nature of the cryptography behind Merkle trees. In order to validate that a given piece of data is a member of the Merkle tree, an algorithm would only have to find a single traversal route up the Merkle tree instead of searching an entire database, which is extremely efficient at scale. Perfect for a giant company that wants to create a global cryptocurrency, isn’t it?
Merkle trees are used in many areas of the crypto industry including to bundle transactions in Bitcoin blocks, Ethereum transactions, states and receipts and even to do things like timestamp the entire internet archive. If you want to learn more about how cryptocurrencies work, I highly recommend reading more about Merkle trees. These clever data structures silently power nearly every protocol in the cryptocurrency space.
A “Free Rent” Solution
Something that all crypto protocols have struggled with is what I like to call the “Free Rent Problem.” All of this transaction data has to be stored and replicated in order to have integrity. In order to initiate a transaction on Bitcoin or Ethereum, there is a transaction fee or what is often known as Gas. But once that transaction fee is paid, the data in the transaction or state machine execution (e.g. smart contracts or data storage), exists on the blockchain taking up space forever. While blockchain data storage only charges one up front fee, storing that data forever has a much higher cost. The Free Rent Problem is an issue that Ethereum has struggled with and has had difficulty solving.
Libra has an interesting approach to the Free Rent issue. Using the Merkle tree structure, data that isn’t being touched can be progressively placed in increasingly colder storage. When the data needs to be accessed the protocol can charge a “read fee” - a little upfront heat to melt cold storage if you will - depending on how cold that data is. When appending transactions to a merkle tree, you only affect one branch from the merkle root. Therefore, nodes can use hashes that represent the data held in “colder storage” instead of needing to validate the entire tree data in every transaction
Libra also comes with its own programming language and network capabilities. Part of what has enchanted developers about Ethereum is it’s powerful smart contracts written in Solidity code that runs on the Ethereum network, turning it into Vitalik Buterin’s vision of “programmable Bitcoin.” Libra also has its own linearly typed smart contracts language called Move which is a subset of Rust, a popular language used by heavyweights such as Dropbox, Firefox, and Cloudflare. Understanding how networks and languages work together will help you understand the implications of Libra for developers and its future as a protocol.
Move is a linearly typed language. In computer science terms, this means that once a variable is defined, it is never “destroyed”, which fits well with the merkle tree data structure and acts as a “Free Rent” solution. In practical terms, this also means that re-entry attacks, which were the primary cause of the $70 million dollar DAO hack and subsequent Ethereum/Ethereum Classic split, aren’t possible with a linearly typed language.
Despite these protections, Libra will be rolling out full network capabilities slowly. With all of the attention and mixed reception and even the U.S. Congress requesting a development moratorium, the last thing they want is a developer writing questionable code on their network. Right now, the Libra protocol’s capabilities are limited to simple logic and locks similar to the OPCODE system that exists on Bitcoin, but isn’t a Turing complete language which is required for generic smart contracts. A Turing complete language actually does exist under Libra’s hood and will power some aspects of the Libra stablecoin, with more potentially being exposed in future. Perhaps the Libra developers are worried about the potential network split risks that comes with a Turing complete smart contracts language as we’ve seen in Ethereum. But Ethereum has also demonstrated that there is a lot of value and innovation that comes from a generic language. Libra will have to find the balance between innovation and giving monkeys machine guns, so to speak.
Is Libra Decentralized?
We’ve established that Libra isn’t a blockchain, but instead runs using a Merkle tree that is updated through progressive states using BFT consensus. So, is Libra decentralized? To answer this question, we have to understand the difference between “permissioned” and “permissionless” networks. Libra specifically addresses this in their whitepaper:
“Blockchains are described as either permissioned or permissionless in relation to the ability to participate as a validator node. In a ‘permissioned blockchain,’ access is granted to run a validator node. In a ‘permissionless blockchain,’ anyone who meets the technical requirements can run a validator node. In that sense, Libra will start as a permissioned blockchain.
To ensure that Libra is truly open and always operates in the best interest of its users, our ambition is for the Libra network to become permissionless. The challenge is that as of today we do not believe that there is a proven solution that can deliver the scale, stability, and security needed to support billions of people and transactions across the globe through a permissionless network. One of the association’s directives will be to work with the community to research and implement this transition, which will begin within five years of the public launch of the Libra Blockchain and ecosystem.”
In other words - there’s still work to be done and technical hurdles to overcome in order to fully realize the vision of Libra, and much of this future work has to do with making Libra permissionless.
What does permissionless mean? Simply put, “permissioned” means a centralized system is deciding whether or not something is allowed, whereas “permissionless” means nobody can stop anything from happening. Bitcoin and Ethereum are fully permissionless. Anyone can run a node, participate in mining, create a wallet and send/receive transactions or write “unstoppable” code. It was exactly the permissionless structure that made Bitcoin and Ethereum so revolutionary. Bitcoin was permissionless value and Ethereum was permissionless computing.
Facebook.com, on the other hand, is an example of a completely permissioned system. Facebook decides whether or not you can open an account, whether or not your account is in good standing, what applications should be allowed on the network, who gets access to the data, etc. What makes Libra more complicated is that it is simultaneously permissioned and permissionless.
How is this possible? Running a validator, which is responsible for maintaining consensus and approving transactions, is permissioned while participating in the network is permissionless. What this means is if you want to create a wallet and send/receive Libra, then you don’t need to ask anyone for permission. If you want to run a validator and help secure the network, then you will need the Libra Association’s permission.
Who do you ask for permission? In short, organizations that are members of the Libra Association, a non-profit organization associated with Facebook and the Libra project. The initial 28 members are essentially tasked with the initial validation of the network. Unless you are allowed into this group, you do not have permission to run a validator node.
To sum it up,Libra is “sort of” decentralized. To be fair, decentralization is rarely black and white. Differing network structures result in differing levels of decentralization and centralization. While Bitcoin validation is completely permissionless, large groups of miners have become the primary organizations that largely “govern” the system. This governance process was tested when different groups of miners vehemently disagreed on the future of Bitcoin, ultimately resulting in the controversial Bitcoin Cash fork.
Other networks like EOS have a delegated proof of stake network model whereby the 21 participating nodes are collectively voted upon by network participants (mirroring some of the two tiered permissioned/permissionless structure that Libra has). This type of system also have flaws, namely allegations of collusion for the mutual benefit of validators which are essentially breakdowns in “social decentralization”.
One thing that is clear with Libra is that the Libra foundation, and indirectly Facebook, has a great deal of control in how the network operates. Time will tell if this level of decentralization is feasible or widely accepted by everyday network participants, or if the system is decentralized in name only.
Who will use Libra?
While there has been a lot of regulatory noise around Libra in the U.S, the primary user of Libra may not be U.S. based. While the U.S. is the #2 country for Facebook, countries such as Brazil, India and Indonesia, Mexico and Vietnam have massive amounts of Facebook users and would in theory, welcome a simple, borderless remittance currency.
From Libra’s whitepaper:
“1.7 billion adults globally remain outside of the financial system with no access to a traditional bank, even though one billion have a mobile phone and nearly half a billion have internet access.”
Similar to how WeChat and AliPay have made cash largely obsolete in the Chinese market, Facebook may have a similar effect on the unbanked audience globally. Messaging, social, and financial services together create an opportunity to bring new people who never had access to financial services into the global financial system.
Libra is no Bitcoin and in some ways isn’t even a cryptocurrency in the strict permissionless or decentralized sense. Libra competes less as a protocol within the crypto space and more as an alternative within the banking space. So really Libra is like a marriage between Ripple and a stable coin. It will bring a new wave of people into the “internet of value” and ultimately push the world towards modernizing an aging global financial system through increased efficiency and more consumer-centric services. Whether you agree or disagree with the idea (or company) behind Libra, this push towards innovation and change will ultimately be healthy and drive more people towards the ideas and philosophies that have been pioneered by the crypto industry. Facebook rightly sees this as a whole new path to global relevance and a new market for it to enter and dominate.
Ready or not - Libra is coming.