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

     

  • 安装默认的chaincodepeer0.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网络就搭建成功了。   

    相关内容推荐