區塊鏈筆記

2021-10-25 06:18:02 字數 3771 閱讀 2084

./byfn.sh generate

##### generate certificates using cryptogen tool #########

######### generating orderer genesis block ##############

### generating channel configuration transaction 'channel.tx' ###

####### generating anchor peer update for org1msp ##########

####### generating anchor peer update for org2msp ##########

1.crypto-config.yaml

cryptogen工具使用該檔案生成「密碼材料」,即fabric網路中各種實體(peer、order、ca)所需的證書及金鑰。crypto-config.yaml包含網路拓撲結構定義,cryptogen以其為基礎為組織(包括order)和屬於這些組織的元件(peer和ca)生成證書及金鑰。該配置檔案中的「count」變數用來指定每個組織的對等點數量,檔案的其餘部分較容易理解。

cryptogen generate --config=./crypto-config.yaml   

#執行該工具後,這些證書將被放置在乙個名為「crypto-config」的資料夾中。

2.configtx.yaml

configtx.yaml包含乙個聯盟網路(通道)的定義。該檔案首先指定每個成員組織的msp目錄的位置(order創世區塊中需要儲存成員組織的根證書)、組織的錨節點等。

然後指定了乙個聯盟(聯盟中可以建立多個通道)由哪些組織構成,以及order服務的相關配置(共識型別,區塊大小等)。

fabric的賬號實際上是根據pki規範生成的一組證書和秘鑰檔案。在fabric中每條交易都會加上發起者的標籤(簽名證書),同時用發起人的私鑰進行加密。如果交易需要其他組織的節點提供背書功能,那麼背書節點也會在交易中加入自己的簽名。這樣每一筆交易過程都會非常清晰並且不可篡改。鑑於傳統系統中基於賬號和密碼的驗證體系已經無法完成這樣的工作。此外該檔案還規定了系統通道和普通通道的一些訪問控制策略。

configtxgen工具基於configtx.yaml配置檔案建立四個工件:genesis.block,channel.tx,org1mspanchors.tx,org2mspanchors.tx。genesis.block為系統通道(由所有order節點維護)的創世區塊,後三者分別為建立通道,設定org1、org2的錨節點(錨節點為某組織對order可見的節點)的系統事務,fabric的配置操作作為系統事務提交到系統通道中。

export fabric_cfg_path=

$pwd

#告訴configtxgen從**尋找configtx.yaml檔案

configtxgen -profile samplemultinodeetcdraft -channelid byfn-sys-channel -outputblock ./channel-artifacts/genesis.block #生成系統通道創世區塊genesis.block

export channel_name=mychannel #通過環境變數設定通道名稱

configtxgen -profile twoorgschannel -outputcreatechanneltx ./channel-artifacts/channel.tx -channelid $channel_name

#建立 通道配置 事務

configtxgen -profile twoorgschannel -outputanchorpeersupdate ./channel-artifacts/org1mspanchors.tx -channelid $channel_name -asorg org1msp #建立、更新組織org1在該通道上的錨節點的事務

主要指令碼:

1.ccp-generate.sh

fabcar案例中,startfabric.sh指令碼中在使用cryptogen工具為組織生成證書後,呼叫該指令碼生成ccp檔案,生成的ccp檔案有json和yaml兩種格式。

configtxgen -profile twoorgschannel -outputanchorpeersupdate ./channel-artifacts/org2mspanchors.tx -channelid $channel_name -asorg org2msp   #建立、更新組織org2在該通道上的錨節點的事務
生成的四個配置元件位於channel-artifacts目錄下

msp (fabric membership service providers)

fabric的賬號實際上是根據pki規範生成的一組證書和秘鑰檔案。在fabric中每條交易都會加上發起者的標籤(簽名證書),同時用發起人的私鑰進行加密。如果交易需要其他組織的節點提供背書功能,那麼背書節點也會在交易中加入自己的簽名。這樣每一筆交易過程都會非常清晰並且不可篡改。鑑於傳統系統中基於賬號和密碼的驗證體系已經無法完成這樣的工作。

msp出現在區塊鏈網路中的兩個地方:channel配置(channel msp),以及本地(local msp)。localmsp,是為節點(peer 或 orderer)和使用者(使用cli或使用sdk的客戶端應用程式的管理員)定義的。每個節點和使用者都必須定義乙個localmsp,因為它定義了誰在該級別和channel的上下文之外,具有管理或參與許可權(例如,誰是peer所在組織的管理員)。

相反,channel msp在channel層面定義管理和參與權。參與channel的每個組織,都必須為其定義msp。channel上的peers 和 orderers將在channel msp上共享相同的檢視,並且此後將能夠正確認證channel參與者。這意味著如果乙個組織希望加入該channel,那麼需要在channel配置中,加入乙個包含該組織成員的信任鏈的msp。否則來自該組織身份的交易將被拒絕。

錨節點

gossip 用來確保在不同組織中的 peer 節點能夠知道彼此。

當提交乙個包含錨節點更新的配置區塊時,peer 節點會聯絡錨節點並從它們那裡獲取該節點知道的所有 peer 節點的資訊。一旦每個組織中至少有乙個 peer 節點已經聯絡到乙個或多個錨節點的話,錨節點就會知道這個通道中的每個 peer 節點。因為 gossip 通訊是不變的,並且 peer 節點總是會要求告知他們不知道的 peer 節點,這樣就建立起了乙個通道成員的通用檢視。

比如,我們可以假設在通道中有三個組織:a、b、c,有乙個為組織 c 定義的錨節點 peer0.orgc。當 peer1.orga (來自組織 a)聯絡 peer0.orgc 的時候,它會告訴 peer0.orgc 關於 peer0.orga 的資訊。然後當 peer1.orgb 聯絡 peer0.orgc 的時候,後者會告訴前者關於 peer0.orga 的資訊。之後,組織 a 和 b 就可以開始直接地交換成員資訊而不需要任何來自 peer0.orgc 的幫助了。

由於組織間的通訊要基於 gossip 來工作,所以在通道配置中至少要定義乙個錨節點。為了提高可用和冗餘,非常建議每個組織提供他們自己的一組錨節點。

建立過程:

建立容器->建立通道->peer加入通道-> 錨節點更新->chaincode植入->chaincode例項化->

區塊鏈筆記

1.區塊鏈 開發文件。其他資料 基礎 精通位元幣 行業知識 從區塊鏈到信用社會 技術高階 區塊鏈原理設計與應用 除了 精通位元幣 可以從網路獲得,其他是實體書籍。還有github本身就是乙個豐富的資料庫,位元幣和以太坊的開發者文件可以也可以作為技術高階 2.區塊鏈的核心技術組成 1 p2p網路協議 ...

區塊鏈學習筆記

關於區塊鏈的概念早在2012年就聽說過了,但是當時並未引起重視,當下雖然很流行,但是仍無法看到應用在何方,粗略了解,先學習一點咯,只做一些筆記用來學習下吧 先過概念 區塊鏈是 分布式資料儲存 點對點傳輸 共識機制 加密演算法等計算機技術的新型應用模式。所謂 共識機制是區塊鏈系統中實現不同節點之間建立...

區塊鏈入門筆記

區塊與雜湊的一一對應 1.區塊頭 區塊頭裡面儲存著區塊的頭資訊,包含上乙個區塊的雜湊值 prehash 本區塊體的雜湊值 hash 也就是區塊體的hash 以及時間戳 timestamp 等等。2.區塊體 區塊體儲存著這個區塊的詳細資料 data 這個資料報含若干行記錄,可以是交易資訊,也可以是其他...