关于genesis block的基本概念

关于genesis block的基本概念

  1. 系统级别的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内容是一样的。
  1. 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进行了另外的包装,所以他们不是一样的文件内容。

你可能感兴趣的:(关于genesis block的基本概念)