LoginSignup
7
3

More than 3 years have passed since last update.

FacebookのLibra clientをdockerで動かして送金してみる

Posted at

はじめに

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だとセットアップが楽でいいですね

7
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3