LoginSignup
1
0

More than 3 years have passed since last update.

[Blockchain]Hyperledger Fabricを試す(byfn検証編)

Posted at

目的

構築した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でも価値が移動していることが見てわかります。

(移動前)
image.png

(移動後)
image.png

おわりに

簡単ではありますが、チュートリアルにある説明の通りの動作を確認することができました。
環境を構築するのが大変だっただけに、このbyfnが動いたときはとても感動しました。
コマンドでの実行結果の確認だけでなく、Hyperledger ExplorerというGUIツールでもTransactionが生成されている、価値が移動しているという経緯を確認できました。
また、勝手な解釈ですが、byfnはHyperledger FabricでBitcoinのような「価値」のやり取りが出来るサンプルネットワークだと理解しました。
当然、Chaincodeを解析すれば、登場人物を「a」「b」の他に作成することもできそうです。
次回はbalance-transferを検証してみる予定です。

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