LoginSignup
1
2

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-03-24

  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はトランザクションを順番に処理するためのもの。
単一障害点となるので冗長化したほうがよい(対応方法調査中...)

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f36333031382f62646561613035622d646661382d343231612d323331302d6332643830333234333331622e706e67.png

インストール手順

  • インストールするもの
    • 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++

1
2
2

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
1
2