目的
構築したHyperledger Fabricには3つのサンプルネットワークが同梱されています。
・ byfn
・ fabcar
・ balance-transfer
今回使用する予定なのは「fabcar」なのですが、せっかくなので他のサンプルネットワークにも触れておきます。
今回は「byfn」のサンプルネットワークを実際に動かしてみます。
参考
[Blockchain]Hyperledger Fabricを試す(構築編)
起動
以下のコマンドを実行することで起動できます。
$ cd fabric-samples/first-network/
$ ./byfn.sh generate
$ ./byfn.sh up
$ docker ps --format "table{{.Names}}"
NAMES
dev-peer1.org2.example.com-mycc-1.0
dev-peer0.org1.example.com-mycc-1.0
dev-peer0.org2.example.com-mycc-1.0
cli
orderer.example.com
peer1.org2.example.com
peer1.org1.example.com
peer0.org2.example.com
peer0.org1.example.com
ただ、一度サーバを停止したあと、再度起動するとエラーが発生します。
:
Error: got unexpected status: FORBIDDEN -- Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied
!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========
ERROR !!!! Test failed
この場合、一度byfnの停止処理を実行し、再度起動することで正常に起動することができました。
$ ./byfn.sh down
$ ./byfn.sh up
動作確認
cli用のコンテナに接続し、chaincodeを実行してみます。
cli用のコンテナに接続
$ docker exec -it cli bash
チャネル名の設定
# export CHANNEL_NAME=mychannel
現在の「価値」の参照
# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
90
# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'
210
「価値」の移動
「a」から「b」に対して価値「10」を移動します
# peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}'
移動後の「価値」の参照
価値の値が変化していることが見てわかります
# peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
80
# peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","b"]}'
220
Hyperledger Explorer
Hyperledger Explorerでも価値が移動していることが見てわかります。
おわりに
簡単ではありますが、チュートリアルにある説明の通りの動作を確認することができました。
環境を構築するのが大変だっただけに、このbyfnが動いたときはとても感動しました。
コマンドでの実行結果の確認だけでなく、Hyperledger ExplorerというGUIツールでもTransactionが生成されている、価値が移動しているという経緯を確認できました。
また、勝手な解釈ですが、byfnはHyperledger FabricでBitcoinのような「価値」のやり取りが出来るサンプルネットワークだと理解しました。
当然、Chaincodeを解析すれば、登場人物を「a」「b」の他に作成することもできそうです。
次回はbalance-transferを検証してみる予定です。