Hyperledger fabric 1.0.1 をドキュメント通りに動かす
Hyperledger fabric のドキュメントからChaincode for Developers にあるサンプルをそのまま動かしてみます。そのままでは芸がないので、Raspberry Pi3 で動かしてみた際のログです。
Download Docker images とありますが、Raspberry Pi3 でセルフビルドした fabric-1.0.1
を使用しています。
(2017/12/17) fabric-1.0.5 で実行してみました。
Install Hyperledger Fabric Samples
github.com
からfabric-samples をクローンしておきます。今回は、その中にある、chaincode-docker-devmode
を使用しています。
# git clone https://github.com/hyperledger/fabric-samples.git
# cd fabric-samples/chaincode-docker-devmode
Terminal1 - Start the network
# docker-compose -f docker-compose-simple.yaml up
ここで、セルフビルドしたdocker images
は以下の状態です。
# docker images | grep fabric
hyperledger/fabric-tools armv7l-1.0.1-snapshot-d9c3202 49c9cfafb134 4 weeks ago 1.13GB
hyperledger/fabric-tools latest 49c9cfafb134 4 weeks ago 1.13GB
hyperledger/fabric-testenv armv7l-1.0.1-snapshot-d9c3202 59f5cdae348c 4 weeks ago 1.21GB
hyperledger/fabric-testenv latest 59f5cdae348c 4 weeks ago 1.21GB
hyperledger/fabric-buildenv armv7l-1.0.1-snapshot-d9c3202 871ed15933a3 4 weeks ago 1.13GB
hyperledger/fabric-buildenv latest 871ed15933a3 4 weeks ago 1.13GB
hyperledger/fabric-orderer armv7l-1.0.1-snapshot-d9c3202 f8f5a7c74dc7 4 weeks ago 191MB
hyperledger/fabric-orderer latest f8f5a7c74dc7 4 weeks ago 191MB
hyperledger/fabric-peer armv7l-1.0.1-snapshot-d9c3202 b29908598708 4 weeks ago 193MB
hyperledger/fabric-peer latest b29908598708 4 weeks ago 193MB
hyperledger/fabric-javaenv armv7l-1.0.1-snapshot-d9c3202 21ee891f0e3a 4 weeks ago 1.2GB
hyperledger/fabric-javaenv latest 21ee891f0e3a 4 weeks ago 1.2GB
hyperledger/fabric-ccenv armv7l-1.0.1-snapshot-d9c3202 5f5d092f4106 4 weeks ago 1.11GB
hyperledger/fabric-ccenv latest 5f5d092f4106 4 weeks ago 1.11GB
hyperledger/fabric-couchdb armv7l-1.0.1-snapshot-d9c3202 fcc9b87debd4 5 weeks ago 1.3GB
hyperledger/fabric-couchdb latest fcc9b87debd4 5 weeks ago 1.3GB
hyperledger/fabric-kafka armv7l-1.0.1-snapshot-d9c3202 cf92328f7a5f 5 weeks ago 1.11GB
hyperledger/fabric-kafka latest cf92328f7a5f 5 weeks ago 1.11GB
hyperledger/fabric-zookeeper armv7l-1.0.1-snapshot-d9c3202 0b5260df8980 5 weeks ago 1.13GB
hyperledger/fabric-zookeeper latest 0b5260df8980 5 weeks ago 1.13GB
hyperledger/fabric-ca armv7l-1.0.1-snapshot-a21585d 0c7f9ed80088 5 weeks ago 240MB
hyperledger/fabric-ca latest 0c7f9ed80088 5 weeks ago 240MB
hyperledger/fabric-baseimage armv7l-0.3.2 48f9201658bb 5 weeks ago 1.09GB
hyperledger/fabric-baseimage armv7l-0.3.2-snapshot-fcaa2fb 48f9201658bb 5 weeks ago 1.09GB
hyperledger/fabric-baseimage latest 48f9201658bb 5 weeks ago 1.09GB
hyperledger/fabric-basejvm armv7l-0.3.2-snapshot-fcaa2fb 5490f550786d 5 weeks ago 456MB
hyperledger/fabric-basejvm latest 5490f550786d 5 weeks ago 456MB
hyperledger/fabric-baseos armv7l-0.3.2 f846d9fe1f89 5 weeks ago 171MB
hyperledger/fabric-baseos armv7l-0.3.2-snapshot-fcaa2fb f846d9fe1f89 5 weeks ago 171MB
hyperledger/fabric-baseos latest f846d9fe1f89 5 weeks ago 171MB
実は、ちょっと手を入れて Makefile
でビルドした後で一部 docker tag
しているものがあります。
先ほどの docker-compose
の結果が、こんな感じです。
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c871233d26c7 hyperledger/fabric-tools "/bin/bash -c ./sc..." 5 minutes ago Up 5 minutes cli
9d334f97d2b6 hyperledger/fabric-ccenv "/bin/bash -c 'sle..." 5 minutes ago Up 5 minutes chaincode
174fd57ac7fb hyperledger/fabric-peer "peer node start -..." 5 minutes ago Up 5 minutes 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp peer
693d0962f027 hyperledger/fabric-orderer "orderer" 5 minutes ago Up 5 minutes 0.0.0.0:7050->7050/tcp orderer
あ、docker-compose
も古かったので Raspberry Pi3 用に作り直しています。
(Raspberry Pi用docker-composeの構築)
Terminal 2 - Build & start the chaincode
# docker exec -it chaincode bash
# cd sacc
# go build
# CORE_PEER_ADDRESS=peer:7051 CORE_CHAINCODE_ID_NAME=mycc:0 ./sacc
もちろん、ここで使っている Raspberry Pi3 には go 1.8.3 を導入済みです。と言って、Download Page をみたら既に go1.9
になってましたけど。
Terminal 3 - Use the chaincode
ここから cli で chaincode を動かしていますが、一応 time
コマンドも使ってみました。
最初に chaincode を install します。
# docker exec -it cli bash
# time peer chaincode install -p chaincodedev/chaincode/sacc -n mycc -v 0
...
real 0m4.136s
user 0m1.330s
sys 0m0.420s
(2017/12/17) fabric-1.0.5の場合です。
real 0m2.385s
user 0m0.650s
sys 0m0.350s
次に、instantiate でアセットに 10 を設定します。
# time peer chaincode instantiate -n mycc -v 0 -c '{"Args":["a","10"]}' -C myc
...
real 0m2.849s
user 0m0.960s
sys 0m0.880s
(2017/12/17) fabric-1.0.5の場合です。
real 0m2.721s
user 0m0.420s
sys 0m0.090s
query で、アセットに 10 が設定されていることを確認してみます。
# time peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc
...
Query Result: 10
2017-08-25 14:29:58.334 UTC [main] main -> INFO 007 Exiting.....
real 0m0.932s
user 0m0.380s
sys 0m0.080s
(2017/12/17) fabric-1.0.5の場合です。
real 0m0.477s
user 0m0.170s
sys 0m0.080s
invoke でアセットの値を 20 にしてみます。
# time peer chaincode invoke -n mycc -c '{"Args":["set", "a", "20"]}' -C myc
...
2017-08-25 14:31:28.726 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 0a8 Chaincode invoke successful. result: status:200 payload:"20"
2017-08-25 14:31:28.727 UTC [main] main -> INFO 0a9 Exiting.....
real 0m1.868s
user 0m0.940s
sys 0m0.070s
(2017/12/17) fabric-1.0.5の場合です。
real 0m0.765s
user 0m0.310s
sys 0m0.130s
再度 query で、アセットの値が 20 になっていることを確認してみます。
# time peer chaincode query -n mycc -c '{"Args":["query","a"]}' -C myc
...
Query Result: 20
2017-08-25 14:40:50.400 UTC [main] main -> INFO 007 Exiting.....
real 0m0.912s
user 0m0.410s
sys 0m0.090s
(2017/12/17) fabric-1.0.5の場合です。
real 0m0.412s
user 0m0.180s
sys 0m0.090s
無事にドキュメント通りの動作を確認することができました。
最後に、お行儀良く docker-compose down
でコンテナを停止して削除しておきます。
# docker-compose -f docker-compose-simple.yaml down
Stopping cli ... done
Stopping chaincode ... done
Stopping peer ... done
Stopping orderer ... done
Removing cli ... done
Removing chaincode ... done
Removing peer ... done
Removing orderer ... done
Removing network chaincodedockerdevmode_default
ドキュメント通りにうごかしてみたという、只それだけのお話でした。