按照文档的要求成功运行 Hyperledger Fabric 1.0.1
按照文件操作将Hyperledger Fabric 1.0.1运行
我将直接从Hyperledger Fabric的文档中提取Chaincode for Developers中的示例并运行它。为了增加趣味性,以下是在Raspberry Pi3上运行时的日志。
我們使用了在樹莓派3上自行構建的 fabric-1.0.1,而非下載 Docker 映像。
我在2017年12月17日使用fabric-1.0.5进行了实验。
安装Hyperledger Fabric样例。
从github.com上克隆fabric-samples。本次使用其中的chaincode-docker-devmode。
# git clone https://github.com/hyperledger/fabric-samples.git
# cd fabric-samples/chaincode-docker-devmode
终端1 – 启动网络
# docker-compose -f docker-compose-simple.yaml up
在这里,自行构建的 Docker 镜像的状态如下所示。
# 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标记。
刚才的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也太旧了,所以我正在重新为树莓派3创建它。(为树莓派创建docker-compose)
二号航站楼 – 构建并启动链码
# docker exec -it chaincode bash
# cd sacc
# go build
# CORE_PEER_ADDRESS=peer:7051 CORE_CHAINCODE_ID_NAME=mycc:0 ./sacc
当然,我正在使用的Raspberry Pi 3已经安装了go 1.8.3。但是当我查看下载页面时,已经更新到了go 1.9。
三号航站楼-使用链码
我正在這裡使用CLI運行鏈碼,但我也試著使用time命令。
首先安装chaincode。
# 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
然后,使用实例化将资产设置为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
我們將查詢資產,確認是否設定了 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
尝试将资产的值设置为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
我再次查询一下,确认资产的值是否变为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停止并删除容器。
# 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
我只是按照文档的指示进行了尝试,这就是全部的故事了。