上一篇介绍了安装Hyperledger fabric的环境准备,本篇我们使用fabric-sample中自带的first-network搭建一个示例网络并安装一个智能合约。
记得关掉selinux,否则docker image起不来,docker log显示permission deny。
注意hyperledger二进制文件和docker image版本要一致,因为fabric-sample里master分支的config文件已经使用了2.0的特性,所以我实验的时候,选择了2.0版本。
启动网络
进入fabric-sample/first-network, 执行./byfn.sh generate来生成证书和创始区块,并配置通道。
cd fabric-sample/first-network
./byfn.sh generate
这里可能出现‘etcdraft configuration missing’的错误,需要把first-network/configtx.yaml里Orderer: &OrdererDefaults下的orderType改为solo,这里官方这版配置文件好像有点问题,这里default的配置orderType是etcd,但是没有相关主机配置。虽然后面profile里的SampleMultiNodeEtcdRaft覆盖了设置,但是执行byfn.sh generate时,有几步是不用这个配置的。
这步执行完,生成了所有用来证明身份的证书,创建了创始区块的系统通道,配置了一个用户通道mychannel,并配置了锚结点。
然后执行.byfn.sh up。实际上不需要执行上一步byfn.sh generate,执行up的时候会自动执行generate,为了说明过程,这里分开执行。
./byfn.sh up
执行完成后,脚本为我们自动创建了两个peer节点:org1.example.com和org2.example.com,几个orderer节点:orderer.example.com,并安装了一个智能合约。默认是安装go语言的智能合约,如果想要安装javascript的智能合约,执行./byfn.sh up -l javascript
byfn脚本为我们封装了非常多的操作,如果想详细了解启动网络的细节,可以分析脚本或者参考https://hyperledger-fabric.readthedocs.io/en/master/build_network.html