hyperledger-fabricにブロックチェーンを学ぶ(2/9)サンプルを動かす


  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)
gitのインストール
sudo yum install -y git
jqのインストール
sudo yum install -y jq
dockerのインストール
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で指定されているバージョンを入れる。たぶん最新でも動く。

nodeのインストール
curl -sL https://rpm.nodesource.com/setup_8.x | sudo bash -
sudo yum install -y nodejs-8.9.4 # node8.9, npm 5.6
golangのインストール
sudo yum install -y golang
fabric-sampleのclone
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++