关于genesis block的基本概念
2018-10-07 本文已影响45人
CodingCode
关于genesis block的基本概念
- 系统级别的genesis block
- 每一个fabric instance都会有一个genesis block。
- 这个genesis block在orderer启动之前必须创建好。
-- 例如使用configtxgen工具从configtx.yaml配置生成。
configtxgen -profile OrdererOrgGenesis -outputBlock genesis.block
- orderer启动的时候会用到它,或者
-- 在orderer.yaml文件里面指定,或者
-- 直接在环境变量中指定(ORDERER_GENERAL_GENESISFILE) - 这个genesis block其实就是系统channel testchainid的channel genesis block
-- 我们可以通过peer channel fetch 0 testchainid.pb -c testchainid
-- 生成的testchainid.pb和genesis block内容是一样的。
- Channel级别的genesis block
- 每一个channel也有一个genesis block,这个genesis block就是Channel的第一个block。
- channel的genesis block在instance启动之后,调用orderer的API创建,主要分两步:
1. 使用configtxgen工具从configtx.yaml生成配置
configtxgen -profile PeerOrgChannel \
-outputCreateChannelTx {CHANNEL}-genesis.tx \
-channelID {CHANNEL}
2. 发送命令给orderer创建channel
peer channel create -c {CHANNEL} \
-f {CHANNEL}-genesis.tx \
-o {ORDERERADDREEE}
{CHANNEL}-genesis.tx的内容,我没有研究过,主要包含channel的很基本的信息,可以直接用文本编辑器打开,很多内容是可读的呢。
另外还有一点需要注意的是,genesis block文件不等价于只含一个genesis block的ledger文件;因为虽然ledger文件包含genesis block,但是ledger文件有自己的包装格式,对block进行了另外的包装,所以他们不是一样的文件内容。