關(guān)于genesis block的基本概念
- 系統(tǒng)級別的genesis block
- 每一個fabric instance都會有一個genesis block武通。
- 這個genesis block在orderer啟動之前必須創(chuàng)建好。
-- 例如使用configtxgen工具從configtx.yaml配置生成珊搀。
configtxgen -profile OrdererOrgGenesis -outputBlock genesis.block
- orderer啟動的時候會用到它冶忱,或者
-- 在orderer.yaml文件里面指定,或者
-- 直接在環(huán)境變量中指定(ORDERER_GENERAL_GENESISFILE) - 這個genesis block其實就是系統(tǒng)channel testchainid的channel genesis block
-- 我們可以通過peer channel fetch 0 testchainid.pb -c testchainid
-- 生成的testchainid.pb和genesis block內(nèi)容是一樣的境析。
- Channel級別的genesis block
- 每一個channel也有一個genesis block囚枪,這個genesis block就是Channel的第一個block。
- channel的genesis block在instance啟動之后劳淆,調(diào)用orderer的API創(chuàng)建链沼,主要分兩步:
1. 使用configtxgen工具從configtx.yaml生成配置
configtxgen -profile PeerOrgChannel \
-outputCreateChannelTx {CHANNEL}-genesis.tx \
-channelID {CHANNEL}
2. 發(fā)送命令給orderer創(chuàng)建channel
peer channel create -c {CHANNEL} \
-f {CHANNEL}-genesis.tx \
-o {ORDERERADDREEE}
{CHANNEL}-genesis.tx的內(nèi)容,我沒有研究過憔儿,主要包含channel的很基本的信息忆植,可以直接用文本編輯器打開放可,很多內(nèi)容是可讀的呢谒臼。
另外還有一點需要注意的是,genesis block文件不等價于只含一個genesis block的ledger文件耀里;因為雖然ledger文件包含genesis block蜈缤,但是ledger文件有自己的包裝格式,對block進行了另外的包裝冯挎,所以他們不是一樣的文件內(nèi)容底哥。