(內容可能有些亂,請見諒,日后會對格式進行整理!)
Orderer對來自不同通道的交易做區分,同時在Peer節點中會采用MSP對不同通道的消息做校驗,用於判斷消息是否屬於某個通道,通過Orderer以及Peer相結合,形成一個邏輯上的通道技術。
執行—排序—驗證
一、執行階段:
客戶端發送的交易提案是調用鏈碼功能的請求。背書節點對交易提案進行4點驗證:
格式是否正確;
在之前沒有被提交過;
(客戶端的)簽名是否有效;
提交者/客戶端是否被授權執行此次提案的操作。
如果以上驗證都通過,背書節點就將提案輸入作為所調用鏈碼函數的參數,對當前狀態數據庫執行chaincode並返回經過背書節點簽名的執行結果(讀寫集)給客戶端!然后客戶端收集背書,直到滿足背書策略。
二、排序階段:
當收集到足夠數量的背書后,客戶端將提案、執行結果和背書組裝成交易,發送給排序服務。排序服務按通道、按時間順序對接收的交易進行排序,並為每個通道創建區塊(注意:排序服務接收到交易的順序並不一定是交易被打包進入區塊的順序。。。)。然后將區塊發送到每個通道上的主節點(leader),由背書節點向其所在通道內的peers分發交易。
三、驗證階段:
當每個peer接收到新區塊后,會對其中包含的交易進行驗證,以確保滿足背書策略,以及確保賬本當前狀態的"讀集"變量沒有變化(因為"讀集"是由當前區塊中的交易執行生成的)。然后每個peer將區塊追加到本地的區塊鏈副本上,並將"寫集"提交到當前狀態數據庫!