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.
There are two main interface classes:
- LibraWallet
- LibraClient
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();
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);
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}');
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 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)}');
MIT