Facebookが発表した仮想通貨Libraを動かしてみる

画像出典:Libra Developer Site

今週Facebookが仮想通貨Libraを発表しました。

ステーブルコインとして価値が一定になるような仮想通貨で、Facebook Messenger, WhatsApp, 専用のウォレットアプリ カリブラ(Calibra)などで利用できるようです。

Libraを使ったアプリを開発できるMoveというプログラミング言語も発表されています。

LibraのDeveloperサイト https://developers.libra.orgに、Libraを実行するチュートリアルがあったので、実行してみました。

1. Libraをクローンする

まずGitHubからLibraをクローンしてきましょう。

$ git clone https://github.com/libra/libra.git && cd libra

2. 依存ライブラリをインストールする

$ ./scripts/dev_setup.sh

スクリプトを実行すると、依存ライブラリをインストールされます。

3. Libra CLIを実行する

./scripts/cli/start_cli_testnet.sh

ビルドするのに結構時間がかかりました。 ビルドが終わるとLibra CLIが起動します。

Libra CLI

4. トランザクションを実行する

LibraのMy First Transactionのページ https://developers.libra.org/docs/my-first-transaction に沿って実行していきます。

AliceとBobのアカウントを作成する

1. CLI Clientがシステムで動いているか確認する

Libra CLIで account コマンドを実行します。すると以下のようにコマンドの説明が表示されます。

Use the following args for this command:

create | c 
	Create an account. Returns reference ID to use in other operations
list | la 
	Print all accounts that were created or loaded
recover | r <file_path>
	Recover Libra wallet from the file path
write | w <file_path>
	Save Libra wallet mnemonic recovery seed to disk
mint | mintb | m | mb <receiver_account_ref_id>|<receiver_account_address> <number_of_coins>
	Mint coins to the account. Suffix 'b' is for blocking

2. Aliceのアカウントを作成する

account create コマンドを実行します。

libra% account create

するとアカウントのアドレスが発行されます。

>> Creating/retrieving next account from wallet
Created/retrieved account #0 address 05f2ce8714d7f6fb6eeb0735477ce31c7ee8087790bc522b1d37a8a107e82f46

3. Bobのアカウントを作成する

もう一度 account create コマンドを実行します。

libra% account create

すると次は #1のアカウントが作成されます。

>> Creating/retrieving next account from wallet
Created/retrieved account #1 address 806ada4d58bab45bf9f3ea1d37d2aa383a750812c16af63a57d69692459a3a97

4. アカウント一覧を表示する

account list コマンドでアカウント一覧を表示できます。

libra% account list

すると先ほど作成したアカウント一覧が表示されます。

User account index: 0, address: 05f2ce8714d7f6fb6eeb0735477ce31c7ee8087790bc522b1d37a8a107e82f46, sequence number: 0, status: Local
User account index: 1, address: 806ada4d58bab45bf9f3ea1d37d2aa383a750812c16af63a57d69692459a3a97, sequence number: 0, status: Local

LibraコインをAliceとBobのアカウントに追加する

account mintコマンドを使いますがこの機能はテストネットのみのようです。

1. 110 LibraをAliceのアカウントに追加する

account mintコマンドでAliceのアカウントに110 Libraを追加します。

libra% account mint 0 110

するとリクエストがサブミットされたことがわかります。

>> Minting coins
Mint request submitted

ここではまだリクエストをサブミットしただけで実際に110Libra付与されたわけではありません。

2. Bobのアカウントに52Libra追加する

Alice同様、BobのアカウントにもLibraを追加します。

libra% account mint 1 52

こちらもリクエストがサブミットされます。

>> Minting coins
Mint request submitted

3. 残高を確認する

残高を確認するには、queryコマンドを使います。

Aliceの残高を確認します。

libra% query balance 0

すると先ほど付与した110libraあることがわかります。

Balance is: 110

同様にBobの残高も確認します。

libra% query balance 1
Balance is: 52

トランザクションを実行する

アカウントのシーケンス番号を取得する

トランザクションを実行する前に、シーケンス番号を取得します。

libra% query sequence 0
>> Getting current sequence number
Sequence number is: 0
libra% query sequence 1
>> Getting current sequence number
Sequence number is: 0

Alice, Bobのどちらもシーケンス番号は0です。これはまだどちらのアカウントもトランザクションを実行していないことを意味します。

送金する

送金するには transfer コマンドを使用します。

Alice(0)からBob(1)に10Libraを送金します。

libra% transfer 0 1 10

すると送金リクエストがバリデータに送信されたことがわかります。

libra% transfer 0 1 10
>> Transferring
Transaction submitted to validator
To query for transaction status, run: query txn_acc_seq 0 0 <fetch_events=true|false>

query txn_acc_seq 0 0 true コマンドを実行することでトランザクションの詳細をみることができます。

これでバリデータに承認されると送金が行われます。

送金後のシーケンス番号を確認する

libra% query sequence 0
>> Getting current sequence number
Sequence number is: 1
libra% query sequence 1
>> Getting current sequence number
Sequence number is: 0

Aliceのシーケンス番号は1, Bobのシーケンス番号は0のままです。AliceからBobに送金したのでAliceのシーケンス番号を1つ上がっています。

AliceとBobの残高を確認する

query balanceコマンドを使って、両者の残高を確認しましょう。

libra% query balance 0
Balance is: 100
libra% query balance 1
Balance is: 62

以上で送金ができました!

試すのは簡単

Libraの開発者サイトを参考にテストネットで試してみましたが、Libraを送金するのは非常に簡単ですね。

今度はMoveについても試してみたいと思います。

エンジニアリング Libra Facebook CryptoCurrency Blockchain


関連記事