At Perpetual one of our areas of focus is the blockchain. Having built some aspects of initial coin offerings, stable coins, security tokens and several smart contracts, we were excited to learn about Facebook’s foray into this world. We’d like to share our observations on Libra below.
Today Facebook released the whitepaper for Libra, a new cryptocurrency designed to be a simple global currency that will facilitate access to financial infrastructure to billions of people.
Libra is planned to be a stablecoin, a currency that is backed by some physical assets that give it some intrinsic value. Unlike several other stablecoins currently available, Libra won’t be pegged to a single asset type (USD, Euro, gold, etc). Instead, it will be backed by baskets of bank deposits and short-term government securities.
The Libra coins will only be minted when purchased with fiat assets, and will only be burned when coins are sold back to the governing body, and equivalent underlying assets are given back in return.
The Libra Association has been formed as an independent, not-for-profit organization that will govern the Libra Blockchain. Each member of the association invested $10 million into the project to earn a spot at the table, and is allowed a single representative on the Libra Association council. The members will be the ones initially running the nodes on the blockchain, making it a permissioned blockchain, rather than a traditional one. They are also responsible for maintaining the Libra Reserve, a reserve of real assets that back Libra coins.
Libra is a newcomer to the blockchain industry looking to shake up the current environment by introducing changes in the Libra blockchain. The biggest thing to note is that Libra is a permissioned blockchain. This means that all the nodes on the chain will be known entities, as opposed to anonymous nodes like on the Bitcoin and Ethereum chains. However, this also limits one of the core tenets of blockchain technology, decentralization. The Libra team has however promised to move towards a permissionless system within five years of initial launch.
The Libra team has decided to forgo Proof of Work as it’s methodology of consensus, instead opting for its own version of a Byzantine Fault Tolerant consensus approach, called LibraBFT. This allows the network to function correctly even if some nodes are corrupted.
The final notable difference to other blockchains is that Libra has introduced a new programming language, dubbed Move, to facilitate transactions and program modules on their blockchain.
Move is the new programming language that is being developed to interact with the Libra Blockchain. The main components of the Move language are modules and resources.
Modules will be Libra’s version of ‘smart contracts’, code that is executed on the blockchain to facilitate transactions. Modules declare resource types; and define procedures for creating, destroying, and updating those resources.
Resources are a specific data type within the Move language. They are scoped to the module, and critical operations on resources can only occur within the module that defines it, allowing for data abstraction of resources. Modules will be deployed to individual users’ accounts, and a user account may only have a single instance of a particular resource. Outside of these limitations, resources can be used in much the same way as a normal variable. They can be included in other data structures and passed into functions the same way a developer would with a primitive type.
The Libra team has published examples for developers to get an idea of what modules will look like, including the modules that define user accounts and the Libra Coin itself. View the examples here.
Along with the whitepaper, Libra has also released an early version of their testnet, and a command line interface to interact with it. Currently, the testnet seems pretty simplified. There is no support for third party Move modules just yet, which means you can’t deploy custom code to the testnet.
So users are left with just interacting with three major commands; account, transfer, and query.
The account command contains subcommands to create, list, save, and recover created accounts (user accounts on the testnet), and a command to mint testnet Libra Coins.
The transfer command allows users to transfer those minted Libra Coins to other accounts on the testnet.
The query command has subcommands for balances, events, statuses, and a couple other variables.
Overall, it will be exciting to see the CLI expanded upon in the coming months, as currently there isn’t much to it.
Libra is set to launch the production blockchain in the first half of 2020. The Association is currently focused on recruiting members, with a goal of reaching 100 members by launch.
Meanwhile, on the developer side Libra is currently looking to create APIs and libraries to interact with the blockchain, while adhering to open-source methodologies. They also plan on working on fleshing out the Move language, with the intention of stabilizing it enough to allow third party modules onto the blockchain.
We are looking forward to digging into Move once third-party modules become available.