【仮想通貨NEM】 NEM2-CliでCatapultネットワークに触れる2
前回の続きです。
今回やること
今回はTechBureauから公開されているCatapult Service Bootstrapを利用してDocker仮想環境上にmijinネットワークを構築して動かし、その内容を確認するところまでやります。
bootstrapのダウンロード
まずは、下記リンクからTechBureauのGithubページに行ってcatapult-service-bootstrapのclone and downloadボタンからbootstrapのzipファイルをダウンロードしましょう。
ダウンロードしたzipを解凍したら、ファイルの中にREADME.ja.mdがあります。日本語の説明文です。親切ですね。はい。これに従うだけです。
Docker docker-compose を使える状態にする
bootstrapはdocker-composeを使います。Dockerが入ってない場合はまず最初にDockerを入れてください。ちなみに、私が今使っていバージョンは...
catapult-service-bootstrap-master$ docker --version
Docker version 18.05.0-ce, build f150324
catapult-service-bootstrap-master$ docker-compose --version
docker-compose version 1.21.2, build a133471
でした。
docker-compose upを叩くだけ
ダウンロードしたcatapult-service-bootstrap-masterファイル上に移動し、docker-compose upを叩くだけです。READMEのとおりですね。
ちなみに、私の環境(ubuntu 18.04 LTS)ではDockerを動かすときには管理者権限が必要になるので全部sudo付けています。
ネットワークの構成
Catapultネットワークは二層で構成されています。ブロックの生成、承認、を行うネットワークとそのネットワークから情報を聞き出し、クライアントからのリクエストに答えるAPIネットワークの二層です。それ以前は(現在のNIS1では)これらは一つにまとめられていて一層です。
図にしたので載せておきます。
今回は、一番下のブロックチェーンネットワークは peer-node-0_1 と peer-node-1_1 の2つ、APIネットワークが api-node-0_1 のひとつ、クライアントが NEM2-Cli となります。
コンソールに吐き出される情報を見てみる
docker-compose upを叩くとdocker仮想環境上でネットワークが構築され、勝手にネメシスブロックを生成し、ブロックチェーンネットワークが動き出します。
ちょっと内容を見てみます。
peer-node-0_1 | 2018-07-02 03:00:10.499019 0x00007fef967fc700:
(consumers::NewBlockConsumer.cpp@53) forwarding a new block with height 5390
新しいブロックをnode-0_1が見つけたよう。heightは5390 ( 暫く放置してた )
こんな感じで何をやっているかが読めます。
Block height1の情報を取ってみる
APIノードがクライアントからの要求を受け取るソケットは3000番のポートにbindされています。
ということで、ちゃんと動いているかの確認も含めて、READMEにもありますが、block高さ1、つまりnemesisブロックの情報を取ってみましょう。クライアントは何でも良いですが、とりあえずブラウザを使えば良いと思います。(README はcurl使ってるけど)
WebブラウザのURL欄に 「 localhost:3000/block/1 」を打ち込んでみましょう。
{"meta":{"hash":"C8F26B4BC7B2293BADA2D36115ABF23355B11521BAD2C92E4FA33632FAFB1E54","generationHash":"D17D69C0B81FDD6CEA58F43295D1A5952559F954F3DE8440C2AE8639E04876E2","totalFee":[0,0],"numTransactions":25,
・
・
・
,"blockTransactionsHash":"6E7B8D9AF96527EF6775D1AF06420881B809C6927E5258F75B5C074689E95F80"}}
こんな感じでnemesisブロックのデータがとれます。
テストネットの終了は Ctrl-C でinterrupt送れば勝手にいい感じに終了してくれます。
また再開したければ初回同様catapult-service-bootstrap-masterファイル上に移動し、docker-compose upを叩くだけです。終了した時点のブロックから再開してくれます。
今回はここまで(続く)