peer channel create命令解析
我们以fabric/example/e2e_cli
为例
在e2e_cli
目录下中script/script.sh
文件,createChannel
函数中,
创建channel语句为:
peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA >&log.txt
该命令执行过程:
-
发送消息,创建了channel,名字为
$CHANNEL_NAME
-
获取创世区块,并且用protobuf进行序列化,本地生成了一个文件
$CHANNEL_NAME.block
变量
变量名 | 含义 |
---|---|
$CHANNEL_NAME | 采用的是默认,为mychannel |
$CORE_PEER_TLS_ENABLED | /e2e_cli/base/peer-base.yaml中定义的环境变量,为true- CORE_PEER_TLS_ENABLED=true |
$ORDERER_CA | orderer的证书ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ 目录在 e2e_cli/crypto-config 目录下 |
参数
查看fabric文档Commands Reference部分
参数名 | 含义 |
---|---|
-o | 连接的orderer的地址,hostname:port |
-c | channel的名称,默认为mychannel |
-f | 配置的交易信息(暂时还没搞清楚) |
--tls | 和orderer通信时是否启用tls |
--cafile | 使用tls时,所使用的orderer的证书 |
问题
orderer.example.com域名是如何解析的?
docker-compose本身就支持通过servicename进行访问。
参考:Networking in Compose
channel.tx
由工具configtxgen
生成channel.tx
在e2e_cli例子中,e2e_cli/generateArtifacts.sh
文件中
$CONFIGTXGEN -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
configtxgen
根据配置文件configtx.yaml
中的配置项**TwoOrgsChannel
**来进行生成
查看channel.tx和genesis.block内容
对于channel.tx
,可以通过工具configtxgen
查看json
格式数据
configtxgen -inspectChannelCreateTx channel.tx
对于genesis.block
,可以通过工具configtxgen
查看json
格式数据
configtxgen -inspectBlock genesis.block