按照文档的要求成功运行 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

我只是按照文档的指示进行了尝试,这就是全部的故事了。