这一篇实战的第一篇,是最最基本的环境搭建,部署fabric官网上提供的fabric samples的第一个网络。后续文章会对其中的关键步骤进行分解。git
假设你已经安装好了docker和相关语言环境,我这里用的是go语言。 github
下载 Fabric samplesgolang
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的目录。
生成秘钥及相关交易信息docker
cd到fabric-samples/first-network目录下,运行数据库
./byfn.sh generate
该命令是用于生成fabric网络中的组件秘钥信息以及初始的交易信息。包括:ordering服务和节点的秘钥信息(msp和tls的证书),ordering服务的创世块,管道配置交易信息(channel.tx),和锚点的更新交易信息。bash
命令运行完成后,能够看到first-network下的crypto-config 和channel-artifacts文件夹下都新生成了一些文件。Channel-artifacts下是新生成的创世块和管道交易信息,以及锚点更新交易信息。Crypto-config里则是ordering 服务和节点相关的秘钥信息。微信
启动网络网络
./byfn.sh up
该命令启动了一个默认设置的网络,这些默认的设置包括:curl
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网络就搭建成功了。
覆盖完整的区块链知识体系,从入门到源码,这里有真正想要的区块链技术,欢迎你们关注微信号:蜗牛讲技术。扫下面的二维码