啟動(dòng)Fabric網(wǎng)絡(luò)
主要步驟包括計(jì)劃拓?fù)湟亩肌?zhǔn)備相關(guān)配置文件弦追、啟動(dòng)Orderer節(jié)點(diǎn)捂龄、啟動(dòng)Peer節(jié)點(diǎn)和操作網(wǎng)絡(luò)等漆诽。
網(wǎng)絡(luò)拓?fù)?/h4>
啟動(dòng)的Fabric網(wǎng)絡(luò)中包括一個(gè)Orderer節(jié)點(diǎn)和四個(gè)Peer節(jié)點(diǎn),以及一個(gè)管理節(jié)點(diǎn)生成相關(guān)啟動(dòng)文件
在網(wǎng)絡(luò)啟動(dòng)后作為操作客戶端執(zhí)行命令扮休。四個(gè)Peer節(jié)點(diǎn)分屬于同一個(gè)管理域(example.com)下的兩個(gè)組織Org1和Org2迎卤,這兩個(gè)組織都加入同一個(gè)應(yīng)用通道(business-channel)中。每個(gè)組織中的第一個(gè)節(jié)點(diǎn)(peer0節(jié)點(diǎn))作為錨節(jié)點(diǎn)與其他組織進(jìn)行通信玷坠,所有節(jié)點(diǎn)通過(guò)域名都可以相互訪問(wèn)蜗搔,
整體網(wǎng)絡(luò)拓?fù)淙缦聢D所示。
準(zhǔn)備相關(guān)配置文件
Fabric網(wǎng)絡(luò)在啟動(dòng)之前八堡,需要提前生成一些用于啟動(dòng)的配置文件樟凄,主要包括MSP相關(guān)文件(msp/*)、TLS相關(guān)文件(tls/*)兄渺、系統(tǒng)通道初始區(qū)塊(orderer.genesis.block)缝龄、新建應(yīng)用通道交易文件(businesschannel.tx)、錨節(jié)點(diǎn)配置更新交易文件Org1MSPanchors.tx和Org2MSPanchors.tx)等。
各個(gè)文件的功能如下所示叔壤。
生成組織關(guān)系和身份證書
Fabric網(wǎng)絡(luò)提供的是聯(lián)盟鏈服務(wù)瞎饲,聯(lián)盟由多個(gè)組織構(gòu)成,組織中的成員提供了節(jié)點(diǎn)服務(wù)來(lái)維護(hù)網(wǎng)絡(luò)百新,并且通過(guò)身份來(lái)進(jìn)行權(quán)限管理企软。因此,首先需要對(duì)各個(gè)組織和成員的關(guān)系進(jìn)行規(guī)劃饭望,分別生成對(duì)應(yīng)的身份證書文件仗哨,并部署到其對(duì)應(yīng)的節(jié)點(diǎn)上。
用戶可以通過(guò)PKI服務(wù)(如使用fabric-ca)或者OpenSSL工具來(lái)手動(dòng)生成各個(gè)實(shí)體的證書和私鑰铅辞。但當(dāng)組織結(jié)構(gòu)比較復(fù)雜時(shí)厌漂,這種手動(dòng)生成的方式容易出錯(cuò),并且效率不高斟珊。
Fabric項(xiàng)目提供了cryptogen工具(基于crypto標(biāo)準(zhǔn)庫(kù))實(shí)現(xiàn)自動(dòng)化生成苇倡。這一過(guò)程首先依賴crypto-config.yaml配置文件。crypto-config.yaml配置文件的結(jié)構(gòu)十分簡(jiǎn)單囤踩,支持定義兩種類型(OrdererOrgs和PeerOrgs)的若干組織旨椒。每個(gè)組織中又可以定義多個(gè)節(jié)點(diǎn)(Spec)和用戶(User)。
一個(gè)示例的crypto-config.yaml配置文件內(nèi)容如下堵漱,其中定義了一個(gè)OrdererOrgs類型的組織Orderer(包括一個(gè)節(jié)點(diǎn)orderer.example.com)综慎,以及兩個(gè)PeerOrgs類型的組織Org1和Org2(分別包括2個(gè)節(jié)點(diǎn)和1個(gè)普通用戶)。
使用該配置文件勤庐,通過(guò)如下命令可以為Fabric網(wǎng)絡(luò)生成指定拓?fù)浣Y(jié)構(gòu)的組織和身份文件示惊,存放到crypto-config目錄下:
$ cryptogen generate --config=./crypto-config.yaml --output ./crypto-config
查看crypto-config目錄結(jié)構(gòu),按照示例crypto-config.yaml中的定義進(jìn)行生成:
$ tree -L 4 crypto-config
按照crypto-config.yaml中的定義愉镰,所生成的crypto-config目錄下包括多級(jí)目錄結(jié)構(gòu)米罚。
ordererOrganizations下包括構(gòu)成Orderer組織(1個(gè)Orderer節(jié)點(diǎn))的身份信息;
peerOrganizations下為所有的Peer節(jié)點(diǎn)組織(2個(gè)組織丈探,4個(gè)節(jié)點(diǎn))的相關(guān)身份信息录择。
其中最關(guān)鍵的是msp目錄,代表了實(shí)體的身份信息碗降。
對(duì)于Orderer節(jié)點(diǎn)來(lái)說(shuō)隘竭,需要將crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com目錄下的內(nèi)容(包括msp和tls兩個(gè)子目錄)復(fù)制到Orderer節(jié)點(diǎn)的/etc/hyperledger/fabric路徑(與Orderer自身配置一致)下。
對(duì)于Peer節(jié)點(diǎn)來(lái)說(shuō)遗锣,則需要復(fù)制peerOrganizations下對(duì)應(yīng)的身份證書文件货裹。
以org1的peer0為例嗤形,將crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com目錄下的內(nèi)容(包括msp和tls)復(fù)制到Peer0節(jié)點(diǎn)的/etc/hyperledger/fabric(與Peer自身配置一致)路徑下精偿。
對(duì)于客戶端節(jié)點(diǎn)來(lái)說(shuō),為了方便操作,可將完整的crypto-config目錄復(fù)制到/etc/hyperledger/fabric(與configtx.yaml中配置一致)路徑下笔咽。
注意 目前搔预,組織結(jié)構(gòu)一旦生成,如果要進(jìn)行修改叶组,只能手動(dòng)對(duì)證書進(jìn)行調(diào)整拯田,因此需要提前做好聯(lián)盟的規(guī)劃。未來(lái)會(huì)支持對(duì)組織結(jié)構(gòu)和節(jié)點(diǎn)身份進(jìn)行動(dòng)態(tài)在線調(diào)整甩十。
生成Ordering服務(wù)啟動(dòng)初始區(qū)塊
Orderer節(jié)點(diǎn)在啟動(dòng)時(shí)船庇,可以指定使用提前生成的初始區(qū)塊文件作為系統(tǒng)通道的初始配置。
初始區(qū)塊中包括了Ordering服務(wù)的相關(guān)配置信息以及聯(lián)盟信息侣监。
初始區(qū)塊可以使用configtxgen工具進(jìn)行生成鸭轮。生成過(guò)程需要依賴/etc/hyperledger/fabric/configtx.yaml文件。configtx.yaml配置文件定義了整個(gè)網(wǎng)絡(luò)中的相關(guān)配置和拓?fù)浣Y(jié)構(gòu)信息橄霉。
編寫configtx.yaml配置文件可以參考Fabric代碼中(如examples/e2e_cli路徑下或sampleconfig路徑下)的示例窃爷。
該配置文件定義了兩個(gè)模板:TwoOrgsOrdererGenesis和TwoOrgsChannel,其中前者可以用來(lái)生成Ordering服務(wù)的初始區(qū)塊文件姓蜂。通過(guò)如下命令指定使用configtx.yaml文件中定義的TwoOrgsOrdererGenesis模板按厘,來(lái)生成Ordering服務(wù)系統(tǒng)通道的初始區(qū)塊文件。
注意這里排序服務(wù)類型采用了簡(jiǎn)單的solo模式钱慢,生產(chǎn)環(huán)境中可以采用kafka集群服務(wù):
$ configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./orderer.genesis.block
所生成的orderer.genesis.block需要復(fù)制到Orderer節(jié)點(diǎn)上(與Orderer配置中ORDERER_GENERAL_GENESISFILE指定文件路徑一致逮京,默認(rèn)放到/etc/hyperledger/fabric路徑下),在啟動(dòng)Orderering服務(wù)時(shí)進(jìn)行使用滩字。3.生成新建應(yīng)用通道的配置交易新建應(yīng)用通道時(shí)造虏,需要事先準(zhǔn)備好配置交易文件,其中包括屬于該通道的組織結(jié)構(gòu)信息麦箍。這些信息會(huì)寫入該應(yīng)用通道的初始區(qū)塊中漓藕。同樣需要提前編寫好configtx.yaml配置文件,之后可以使用configtxgen工具來(lái)生成新建通道的配置交易文件挟裂。為了后續(xù)命令使用方便享钞,將新建應(yīng)用通道名稱busi