Thursday, August 22, 2019

Libra - Simple Global Currency



The techno-world is running behind the Blockchain. Blockchain is a peer-to-peer distributed immutable ledger that provides tamper proof protection for the data stored.
Industry and Academic world consider the Blockchain to be the next Web 3.0/Industry 4.0. 

From big Multinational companies to small start-ups migrate their products and solutions to blockchain or creating their own blockchain & cryptocurrencies (many without a vision and clarity). Social media giant Facebook finally decided to jump into Blockchain well. 

A new Blockchain and Cryptocurrency named "Libra (LBR)" was announced early this year. "Libra" refers to a unit of weight in ancient Rome. Libra Blockchain and Currency will be maintained by Libra Association (non-profit independent). 

Below I am sharing my observations and comments after some reading and experimentation.

Mission of Libra as stated in their Whitepaper - Enable a Simple Global Currency. 

What is different (and new) in Libra?

  • Libra is a asset backed cryptocurrency - For every Libra created (bought) -->  bank deposits and short-term government securities will be held by Libra Reserve (maintained by Libra Association) 
  • Libra Blockchain designed and uses the new Move programming Language --> for Transaction logic and Smart Contracts.
  • Libra Blockchain designed and uses BFT based Consensus protocol called LibraBFT (Hotstuff Protocol)
  • Libra blockchain is a single data-structure that records the history of transactions and states over time.(This is different to the view of existing blockchain where we see it as a collection of blocks of transaction)
  • The transactions are maintained in Merkle Accumulators (instead of Tree)
Libra Blockchain will be initially released as a permissioned blockchain, this is considering the scalability, stability and security issues to support a larger user-base. But the organisation aims to make it permissionless within 5 years from the launch.

"Financial Inclusion" a much heard word during the demonetization and Pradhan Mantri Jan Dhan Yojana (Government of India, Financial Inclusion Scheme).
One main mission the whitepaper states is to provide financial inclusion such that transferring money is easy and secure like sending a text SMS.

Viewing from technical aspect Libra Blockchain states 3 requirements

1. Scale blockchain to billions of accounts with 
  • High Transaction Throughput
  • Low Latency
  • Efficient and High Capacity Storage System
2. Highly Secure
3. Flexible

Very good and clear goals, defined road maps. What is that we have as of now? 

A Testnet for developers to try and understand Libra :) 

https://developers.libra.org/ explains the step by step instructions for downloading, building and starting Libra Testnet node in your system (only MacOS and Linux). This installs Libra Core in your system. Libra Core is the open source implementation of Libra Protocol. [Info: Libra Core is implemented in Rust language]. This is a CLI based wallet.

Like other blockchains, Libra also provides a Explorer where you can view the transactions and other information & stats. https://librabrowser.io/ (This is only one of the multiple explorers) 

Based on the instructions in the developers site, I have downloaded, build and started my Libra Node on a MacOS. 
We are running a normal node when we complete executing the scripts as mentioned in the link. A node has the following components Mempool, Consensus and virtual machine. 

There are special nodes called validators that receives the transaction from clients, runs the consensus and stores the state. I did a transfer of 10 LBR from Account index #0 to Account index #1. On checking the transaction status, I could see some familiar terms and new terms.



Gas Used, Gas Price and Max Gas could be a familiar term for Ethereum blockchain users, only difference being Gas price is measured in Libra currency. Instead of Block Height, there refer the block as Version. To prevent replay attacks, Libra uses sequence number which means number of transactions sent from that account.

Libra Testnet allows us to mint LBR (Libra Coins/Currency) [I know coins and currency is different.] to your account. As far as I understood minting here is just a transfer of LBR from a predefined account to your account. 


https://librabrowser.io/account/000000000000000000000000000000000000000000000000000000000a550c18 is the account from which the money is transferred when we mint LBR. Something that I couldn't understand is that "Balance remains the same even after so many transfer - 3181055902667.0967 Libra"

Account/Wallet Address Generation is similar to other blockchains. https://librapaperwallet.com/ use this to generate a Libra Address and understand.

Looking from crypto perspective. Libra uses SHA-3 as their hashing algorithm. For signatures they use ED25519 and X25519 for key exchanges. SLIP-0010 is used for the universal hierarchical key derivation.

Now if you look at the System Architecture you might understand something 

+---------------------+---------------------+ | Consensus | Mempool | +---------------------+---------------------+ | Validator Network | +---------------------+---------------------+ | NetworkProvider | +------------------------------------------------+-----------------+ | | Discovery, health, etc | RPC | DirectSend | | +--------------+---------------------------------------------------------+ | Peer Manager | +------------------------------------------------------------------+-----+




(To be continued)