hyperledger-fabricにブロックチェーンを学ぶ(1/9)ブロックチェーンとは
⇒ hyperledger-fabricにブロックチェーンを学ぶ(2/9)サンプルを動かす
hyperledger-fabricにブロックチェーンを学ぶ(3/9)ブロックを見る
hyperledger-fabricにブロックチェーンを学ぶ(4/9)kafkaを入れる
hyperledger-fabricにブロックチェーンを学ぶ(5/9)可視化する
環境構築
-
用意するもの
-
CentOS7 メモリ4GB以上 ※コメント参照
-
ブロックチェーンネットワーク環境
-
fabric-sdk:1.4
-
チェーンコード:golang
-
クライアント:node.js
-
ブロックチェーンネットワーク構成
(fabric-sample/balance-transfer) -
1組織2Peer
-
2組織
-
orderer1つ
-
kafkaなし
ブロックチェーンネットワーク構成を図で表すと以下のとおり
ordererはトランザクションを順番に処理するためのもの。
単一障害点となるので冗長化したほうがよい(対応方法調査中...)
インストール手順
- インストールするもの
- git
- jq
- docker
- node
- golang
- fabric-sample (git clone)
sudo yum install -y git
sudo yum install -y jq
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install -y docker-ce
nodeはpackage.jsonで指定されているバージョンを入れる。たぶん最新でも動く。
curl -sL https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum install -y nodejs-8.9.4 # node8.9, npm 5.6
sudo yum install -y golang
mkdir -p /var/www
cd /var/www/
git clone https://github.com/hyperledger/fabric-samples.git
実行手順
-
事前準備
-
dockerの起動
-
node clientの起動
-
channelの作成
-
channelに参加
-
chaincodeのインストール
-
channelの初期化
-
実行
-
チェーンコード実行
-
ブロック取得
-
channel情報取得
事前準備から実行は、シェル2つで完了
cd /var/www/fabric-samples/balance-transfer
./runApp.sh
./testAPIs.sh
マシンパワーを必要とするため、すんなり動かない事があると思います。
fabricSDKの呼び出しはいくつか直していきますが、今回はchannelの初期化に手を入れます。
channelの初期化(instantiate)呼び出しは、instantiate-chaincode.js で行われます。
instantiate-chaincode.js の timeout を 60秒から180秒へ変更(2カ所)
let results = await channel.sendInstantiateProposal(request, 60000); //instantiate takes much longer
↓
let results = await channel.sendInstantiateProposal(request, 180000); //instantiate takes much longer
}, 60000);
↓
}, 180000);
node clientの起動時にnpm installが実行されます。このときgccエラーが出ることがあるので、以下を参考にしてください。
Failed install script 'node-gyp rebuild'
npm install -g node-gyp
npm config set python /usr/bin/python
yum install gcc-c++