LoginSignup
3
4

Macでブロックチェーンに触れてみた (Hyperledger-fabric)

Last updated at Posted at 2019-04-10

#Macでブロックチェーンを動かしてみる
Hyperledger FabricはDockerコンテナとしてあるので、それをMacOSで利用することができます。
環境構築を行い、サンプル実行までの方法をまとめています。
サンプル実行できたらOKって感じなので中身は薄いです。
公式サンプルの「fabcar」でHyperledger Fabricの動作確認を行っていきます。
自分の環境では、以下の手順でいけました!
#Go, node, Git, npmのバージョン

インストール前にそれぞれのバージョンを記載しておきました。
参考にしてください。

go
$ go version
go version go1.9.1 darwin/amd64
node
$ node -v
v8.11.4
Git
$ git --version
git version 2.14.3 (Apple Git-98)
npm
$ npm -v
3.10.10

Dockerは最新のやつで大丈夫そう。

#Go,nodebrew, Docker, npmのインストール
##Goのインストール

Homebrewでインストール
$brew install go
パスを通す
$ echo 'export GOPATH=$HOME/go' >> ~/.bash_profile
$ echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.bash_profile
$ source ~/.bash_profile

##nodebrewのインストール

culrでインストール
$ curl -L git.io/nodebrew | perl - setup
nodeのバージョン一覧表示
nodebrew ls-remote

インストール可能なバージョンの一覧が表示されます。

バージョン指定してnodeをインストール
$ nodebrew install-binary v8.11.4
lsでインストール済みの一覧表示
$ nodebrew ls
v6.2.1
v8.1.0
v8.11.4
v8.15.1
v10.12.0

current: v8.11.4

currentが現在利用中のバージョンとなっています。

##Dockerのインストール
公式サイトからDocker for Macをインストールしました。
Docker for Mac
とりあえずインストールできたらOKです。

#Hyperledger Fabricの環境構築
ここから環境構築していきます。

ディレクトリを作成
$ mkdir -p $GOPATH/src/github.com/hyperledger
$ cd $GOPATH/src/github.com/hyperledger
Gitリポジトリのコピーを取得
$ git clone https://github.com/hyperledger/fabric.git
$ cd fabric
ブランチを切り替える
$ git branch
* release-1.4
$ git checkout ae4e37d
$ git branch
* (HEAD detached at ae4e37dba)
  release-1.4

[git branch] で現在のブランチ名の左側に「*」が表示されます。
[git checkout ブランチ名 (ここではae4e37dというハッシュ値) ] でブランチを切り替えて、
[git branch]で確認してみると切り替わっていることが確認できます。

ディレクトリを移動し、buildする
$ cd $GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
$ go build --tags nopkcs11 ./

buildは何も出力がなかったら成功です。
#サンプルの実行準備
公式サンプルの「fabcar」でHyperledger Fabricの動作確認を行っていきます。
ここではその準備を行っていきます。

fabric-samplesの取得
$ git clone https://github.com/hyperledger/fabric-samples.git -b v1.0.6

fabcarサンプルのセットアップ
$ cd fabric-samples/fabcar/
$ npm install
   (略)
 (warningは無視)

セットアップスクリプトを実行する前にDockerを起動しておきます。
F4を押してアプリケーション一覧の中から起動します。
スクリーンショット 2019-04-10 17.15.37.png

セットアップスクリプトを実行
./startFabric.sh

[docker ps] で起動しているコンテナを確認します。

コンテナが起動しているか確認
$ docker ps --format "{{.Names}}"
dev-peer0.org1.example.com-fabcar-1.0
cli
peer0.org1.example.com
couchdb
orderer.example.com
ca.example.com

6個起動していればOKです。
#サンプルの実行
いよいよサンプルの実行です。

管理ユーザadminの登録
$ node enrollAdmin.js
      (略)
Successfully enrolled admin user "admin"
      (略)
一般ユーザuser1の登録
$ node registerUser.js 
      (略)
Successfully loaded admin from persistence
Successfully registered user1 - secret:beiNjAAEqimU
Successfully enrolled member user "user1" 
User1 was successfully registered and enrolled and is ready to intreact with the fabric network
ユーザuser1として全データの問い合わせを行い、結果を表示
$ node query.js 
      (略)
Successfully loaded user1 from persistence
Query has completed, checking results
Response is  [{"Key":"CAR0", "Record":{"colour":"blue","make":"Toyota","model":"Prius","owner":"Tomoko"}},
{"Key":"CAR1", "Record":{"colour":"red","make":"Ford","model":"Mustang","owner":"Brad"}},
{"Key":"CAR2", "Record":{"colour":"green","make":"Hyundai","model":"Tucson","owner":"Jin Soo"}},
{"Key":"CAR3", "Record":{"colour":"yellow","make":"Volkswagen","model":"Passat","owner":"Max"}},
{"Key":"CAR4", "Record":{"colour":"black","make":"Tesla","model":"S","owner":"Adriana"}},
{"Key":"CAR5", "Record":{"colour":"purple","make":"Peugeot","model":"205","owner":"Michel"}},
{"Key":"CAR6", "Record":{"colour":"white","make":"Chery","model":"S22L","owner":"Aarav"}},
{"Key":"CAR7", "Record":{"colour":"violet","make":"Fiat","model":"Punto","owner":"Pari"}},
{"Key":"CAR8", "Record":{"colour":"indigo","make":"Tata","model":"Nano","owner":"Valeria"}},
{"Key":"CAR9", "Record":{"colour":"brown","make":"Holden","model":"Barina","owner":"Shotaro"}}]


何やら、車の情報がたくさん出力されました。これでHyperledger Fabricのサンプルは実行できました。
SDK for Node.jsを利用した、Hyperledger FabricとのやりとりによってState DBの内容を取得しているそうです。詳しくは勉強中なので今後まとめていきたいと思います。

3
4
0

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
3
4