蜗牛讲-fabric实战之搭建fabric samples网络
这一篇实战的第一篇,是最最基本的环境搭建,部署fabric官网上提供的fabric samples的第一个网络。后续文章会对其中的关键步骤进行分解。
假设你已经安装好了docker和相关语言环境,我这里用的是go语言。
下载 Fabric samples
curl -sSL https://goo.gl/6wtTN5 | bash -s 1.1.0
该命令会下载1.1.0 版本相关的samples代码,执行环境,二进制文件和docker镜像文件(包括 fabric-ca,fabric-tools,abric-orderer,fabric-peer,
fabric-kafka,fabric-couchdb 等)。命令执行完成后,会在当前目录生成一个 fabric-samples的目录。
生成秘钥及相关交易信息
cd到fabric-samples/first-network目录下,运行
./byfn.sh generate
该命令是用于生成fabric网络中的组件秘钥信息以及初始的交易信息。包括:ordering服务和节点的秘钥信息(msp和tls的证书),ordering服务的创世块,管道配置交易信息(channel.tx),和锚点的更新交易信息。
命令运行完成后,可以看到first-network下的crypto-config 和channel-artifacts文件夹下都新生成了一些文件。Channel-artifacts下是新生成的创世块和管道交易信息,以及锚点更新交易信息。Crypto-config里则是ordering 服务和节点相关的秘钥信息。
启动网络
./byfn.sh up
该命令启动了一个默认设置的网络,这些默认的设置包括:
-
channel名字为myChannel
-
cli的timeout时间为10s
-
延迟为3s
-
使用的docker-compose-file为docker-compose-cli.yaml
-
数据库类型为goleveldb
-
语言为go语言
-
使用最新的镜像启动网络
完整的命令如下:
./byfn.sh up –c myChannel –t 10 –d 3 –f docker-compose-cli.yaml –s goleveldb –l go –i latest
启动的流程为:
-
创建四个节点
-
创建了一个ordering服务
-
创建了一个cli服务,为了下面可以使用 docker exec -it bash 进入到各个容器内。
-
创建一个channel
peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx --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
-
分别把四个节点加入到这个channel中
peer channel join -b mychannel.block
-
之后更新这些加入到myChannel的节点所属的ordering服务已经msp信息
peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --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
-
安装默认的chaincode到peer0.org2节点上
peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
-
实例化chaincode
peer chaincode instantiate -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 mychannel -n mycc -l golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P 'OR ('\''Org1MSP.peer'\'','\''Org2MSP.peer'\'')'
-
最后做了一步对链码的验证工作。
查询改交易
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
调用交易
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 mychannel -n mycc -c'{"Args":["invoke","a","b","10"]}'
到这里我们整个网络已经启动完成。这个时候可以看下运行的容器情况,通过docker ps可以查看到相关容器信息
至此,一个简易的fabric网络就搭建成功了。
覆盖完整的区块链知识体系,从入门到源码,这里有真正想要的区块链技术,欢迎大家关注微信号:蜗牛讲技术。扫下面的二维码
作者: shaotine(蜗牛)
公众号:蜗牛讲技术
出处: http://www.cnblogs.com/StephenWu/
关注公众号:蜗牛讲技术。 满满的都是干货
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.