Libra Cryptocurrency – Understanding by Implementing a Wallet

Libra has caused quite a stir since it was announced, about a month ago. This cryptocurrency led by Facebook (formally by the Libra Association, but it is Facebook’s presence which generates all the attention) is scheduled to be launched early next year and has already had its fair share of controversies. The possibility of Facebook providing a currency, through its proposed Calibra wallet, which its billions of users can use to pay for everything, across the world, has struck fear in most traditional financial strongholds, including regulators. A lot of the reaction is knee jerk – reacting to Facebook’s involvement, the current privacy concerns, unflattering equivalences to bitcoin, pricing volatility assumptions and, at its root, the fear of changing the status-quo. However, it is worth looking at the technology itself, separate from who is backing it or assumed comparisons to bitcoin, to get a more rounded perspective. We, at Nearex, built a wallet,, over Libra to explore it better and understand it as a technology platform, divorced from its hype. This post is a summary from those learnings. The whitepaper and technical papers from Libra provide a lot more detail – treat this post as an easy-read version.

Before we go too far, I want to set at rest questions about Nearex‘s connection to Libra. Nearex has been pioneering payment systems in the emerging markets for the last 6 years. Every opportunity, technology or development that can move the needle in our quest is of interest to us and one we want to study and see how it can help. This experiment is towards those ends and, given the conceptual stage of Libra, will likely remain just that for the moment. 

Jumping into the technical details, Libra has set up a Testnet – a platform to explore the Libra protocol and prototype. The code is open sourced (written in Rust) and they have provided a convenient command line program to connect to the Testnet and use it, as an end user. It still needs to be built from source to use and hence there is a need to have a more convenient alternative for the lay person to interact with Libra. This is the reason we created to let anyone create a wallet, connect to the Testnet and transact. Feel free to go there ( and check it out. There is a convenient HowTo there to help you use it.

Libra is distinguished from the other cryptocurrencies, like Bitcoin, in that it is built on a permissioned blockchain rather than a proof-of-work basis. This brings in several significant differences in its operating model. Only “approved” entities can participate as the key nodes, validators, in these operations. It is not that anyone can choose to start participating as a peer as in the case of bitcoin. The Libra whitepaper does seem to indicate a transition to a more open ecosystem in the distant future, but the current implementation is very solidly permissioned. The current set of validator nodes are run by members of the Libra Association. Fears of a majority takeover by an unexpected third party just doesn’t exist. More predictable latencies and guarantees can be achieved. Another side effect, secondary but still important, is that the elimination of proof-of-work also eliminates the enormous amounts of energy that are expended in mining

Validators are the entities that manage all updates to the Libra blockchain. They have a consensus protocol amongst themselves that allows a majority of them to sign any transaction in. All access to the Libra platform is via the interfaces that the validators provide. These interfaces are built on GRPC, Google’s RPC mechanism, which aims to simplify integration of systems written in potentially disparate languages. The primary interface the Libra protocol exposes, via GRPC, is that of AdmissionControl. This allows clients to submit requests to a validator and have it get queued up for acceptance. 

Requests use a combination of SHA3 for hashing and Ed25519 for signatures. Requests can be one of 2 types – submitting a transaction or getting the ledger updates. These both go in via the AdmissionControl interface and allow clients (like wallets, including our very own to submit requests. Each of the wallets needs to generate requests which match the crypto expectations of the validator. There is another service, the faucet, on the Testnet allowing “free” minting of Libra on the Testnet. This, obviously, will be structured quite differently in a full-blown implementation as this is where the fiat currency gets converted to Libra.

Submitting a transaction to the validator is a very generic and flexible operation. The actual transaction is defined in terms of Smart Contracts. Move is the language in Libra to write these Smart Contracts. Move is a script language which allows custom transactions to be written. The scripts get compiled to executable byte code and this byte code is included in the transaction request. This opens Libra to the power of languages like Solidity, with the ability to create custom, flexible transactions. At the time of writing this post, though, only a few pre-defined scripts are allowed by the Testnet. This includes the script to mint, create an account and a peer-to-peer transfer. These capabilities are the ones exposed via the interface as well.

So, that in essence is Libra. A set of validators, a GRPC API and clients submitting requests containing smart contracts written in Move and meeting certain crypto expectations. Rather underwhelming, but precisely because of that elegant in its simplicity. Feel free to create a wallet and mint or spend Libra at – no technical skill required!

The initial exploration of the Libra protocol indicates that it is a very promising platform, technically speaking, and quite simple and clean. Importantly, its availability in open source form well ahead of its launch, gives a lot of time for interested parties to figure it out; and for the Libra Association to improve it (they have already made breaking changes once in the 5 weeks or so since it became available). There are already a lot of attempts, like ours, to build around, with and integrate with Libra. These are worthwhile exploratory endeavours and, policies and politics permitting, can lead to a truly interesting platform with a rich ecosystem of players. 

Meanwhile, the name Libra aptly captures how its fate hangs in the balance, much like its namesake constellation.