蜗牛讲-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

启动的流程为:

  1. 创建四个节点

  2. 创建了一个ordering服务

  3. 创建了一个cli服务,为了下面可以使用 docker exec -it bash 进入到各个容器内。

  4. 创建一个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
     

     

  5. 分别把四个节点加入到这个channel中

    
    
    peer channel join -b mychannel.block
    
    
    
    
  6.  之后更新这些加入到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
     

     

  7. 安装默认的chaincodepeer0.org2节点上

    peer chaincode install -n mycc -v 1.0 -l golang -p github.com/chaincode/chaincode_example02/go/
     

     

  8. 实例化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'\'')'
     

     

  9. 最后做了一步对链码的验证工作。

    查询改交易

    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网络就搭建成功了。

 

 


覆盖完整的区块链知识体系,从入门到源码,这里有真正想要的区块链技术,欢迎大家关注微信号:蜗牛讲技术。扫下面的二维码

 

posted @ 2018-05-27 14:04  shaotine  阅读(3303)  评论(0编辑  收藏  举报