Skip to content

diginex/libra-core

Repository files navigation

Build Status

Libra Core

Libra Core is a Dart library client that can be used to interact with Libra nodes.

Thanks to JavaScript Libra Core from Perfect Makanju.

There is an example Flutter application built for Android, [iOS] coming soon.

Table of Content

Usage

There are two main interface classes:

  • LibraWallet
  • LibraClient

Creating an Account

Instantiate LibraWallet to create a libra account:

LibraWallet wallet = new LibraWallet();

Mnemonic is optional, a random mnemonic is generated and used without specifying one

const String mnemonic = 'danger gravity ... flip';
LibraWallet wallet = new LibraWallet(mnemonic: mnemonic);

A LibraWallet holds more than one LibraAccount objects, each account being a child of the wallet (start with index 0).

LibraAccount alice = wallet.newAccount();
LibraAccount bob = wallet.newAccount();

Generate addres from account:

String aliceAddress = alice.getAddress();

Minting Amount

Instantiate LibraClient and uses faucet service to mint, default config as Testnet:

LibraClient client = new LibraClient();
int amount = 1000000;
await client.mintWithFaucetService(aliceAddress, BigInt.from(amount), needWait: false);

Checking an address balance

Get state from alice which contains balance and other information such as sequenceNumber

LibraAccountState aliceState = await client.getAccountState(aliceAddress);
print('alice state: ${aliceState.balance}, ${aliceState.sequenceNumber}');

Transferring Libra Coins

Transfer from alice to bob, implemented with Libra Canonical Serialization:

LibraAccount bob = wallet.newAccount();
String bobAddress = bob.getAddress();
int amount = 1000000;
await client.transferCoins(alice, bobAddress, amount);

// Get bob state
LibraAccountState bobState = await client.getAccountState(bobAddress);
print('bob state: ${bobState.balance}, ${bobState.sequenceNumber}');

Query Transaction with Sequence Number

Query detail of the transaction sending from alice to bob, implemented with Libra Canonical Deserialization:

LibraSignedTransactionWithProof lastTransaction = await client.getAccountTransaction(aliceAddress, aliceState.sequenceNumber);
print('publicKey from alice: ${LibraHelpers.byteToHex(lastTransaction.signedTransaction.publicKey)}');

License

MIT

About

Dart client that can be used to interact with Libra nodes, implemented by

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages