はじめに
Facebookの仮想通貨Libraが話題になっているのでチュートリアルでもやっておこうと思った。おなじみAliceとBobの送金のチュートリアルはMy First Transactionに記載されていて、すでにQiitaでもいくつか記事が上がってるみたいだが、レポジトリをみるとClient構築用のDockerfileもあった。これを使った記事はまだないようなので書いておきます
Dociker imageをビルドする
まずレポジトリをcloneしてディレクトリに入ります
git clone https://github.com/libra/libra.git
cd libra
ビルド用のスクリプトを実行します。シェル内のパス指定の関係上 ./libra
下でスクリプトを実行してください
./docker/client/build.sh
以下のようにビルドプロセスが走ります。rustパッケージのダウンロードとコンパイルにけっこう時間がかかりました
Step 1/22 : FROM debian:stretch as builder
---> e1de74e67cc7
Step 2/22 : RUN echo "deb http://deb.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list && apt-get update && apt-get install -y protobuf-compiler/stretch-backports cmake golang curl && apt-get clean && rm -r /var/lib/apt/lists/*
---> Running in 00f85886bbc5
Get:1 http://security-cdn.debian.org/debian-security stretch/updates InRelease [94.3 kB]
Ign:2 http://cdn-fastly.deb.debian.org/debian stretch InRelease
...中略...
Step 21/22 : LABEL org.label-schema.vcs-ref=$GIT_REV
---> Running in adc05cec2283
Removing intermediate container adc05cec2283
---> 3c808c6bb4a9
Step 22/22 : LABEL vcs-upstream=$GIT_UPSTREAM
---> Running in c19717b2ec5e
Removing intermediate container c19717b2ec5e
---> 58d2f41cf45d
Successfully built 58d2f41cf45d
Successfully tagged libra_client:latest
完了後docker images
でみてみるとlibra_client
の他に<none>
なイメージができてました。client.Dockerfileをみるかぎりこれはbuilder
のほうでしょう
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
libra_client latest 58d2f41cf45d 3 minutes ago 497MB
<none> <none> 3f0911b2eef6 3 minutes ago 5.13GB
Clientを起動する
docker run -it libra_client
いきなりtestnetにつながったクライアントのプロンプトが表示されます。これは便利
Connected to validator at: ac.testnet.libra.org:8000
usage: <command> <args>
Use the following commands:
account | a
Account operations
query | q
Query operations
transfer | transferb | t | tb
<sender_account_address>|<sender_account_ref_id> <receiver_account_address>|<receiver_account_ref_id> <number_of_coins> [gas_unit_price_in_micro_libras (default=0)] [max_gas_amount_in_micro_libras (default 10000)] Suffix 'b' is for blocking.
Transfer coins (in libra) from account to another.
help | h
Prints this help
quit | q!
Exit this client
Please, input commands:
libra%
送金してみる
もうセットアップは必要ないので、チュートリアルのCreate Alice’s and Bob’s Accountからやります
libra% account create
>> Creating/retrieving next account from wallet
Created/retrieved account #0 address 0793206214112fc26cf8e0c830132f58487252eefc3e90791a7f91fee40cbe31
libra% account create
>> Creating/retrieving next account from wallet
Created/retrieved account #1 address 36b50257fd39825fec54f1b0534096a4dbd3f5fdbb64258d64c217296fd11a46
libra% account list
User account index: 0, address: 0793206214112fc26cf8e0c830132f58487252eefc3e90791a7f91fee40cbe31, sequence number: 0, status: Local
User account index: 1, address: 36b50257fd39825fec54f1b0534096a4dbd3f5fdbb64258d64c217296fd11a46, sequence number: 0, status: Local
libra% account mint 0 110
>> Minting coins
Mint request submitted
libra% account mint 1 52
>> Minting coins
Mint request submitted
libra% query balance 0
Balance is: 110
libra% query balance 1
Balance is: 52
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>
libra% query sequence 0
>> Getting current sequence number
Sequence number is: 1
libra% query sequence 1
>> Getting current sequence number
Sequence number is: 0
libra% query balance 0
Balance is: 100
libra% query balance 1
Balance is: 62
libra% transferb 1 0 10
>> Transferring
[waiting Transaction completed, found sequence number 1]
Finished transaction!
To query for transaction status, run: query txn_acc_seq 1 0 <fetch_events=true|false>
libra% query balance 0
Balance is: 110
libra% query balance 1
Balance is: 52
libra%
CTRL-C
問題なくできました
後片付け
これは任意だけど、コンテナを終了してイメージを削除する。また使う場合はやる必要はありません
docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
docker image rm 3f0911b2eef6
docker image rm 58d2f41cf45d
おわりに
dockerだとセットアップが楽でいいですね