背書策略流程
Hyperledger Fabric 區塊鏈網絡交易的執行分爲以下幾個步驟。Endorser 與 Committer 都是 Hyperledger Fabric 區塊鏈網絡中 Peer 節點的具體角色。與背書策略強相關的是第3步。
- Client 構造交易併發往 Endorser 節點,Endorser 節點執行交易並調用系統鏈碼 ESCC 對交易簽名(背書),結果返回 Client
- Client 將交易響應發送給 Orderer 節點進行排序出塊,Orderer 節點將交易打包到區塊中,廣播給網絡上的 Committer 節點
- Committer 節點收到區塊後,對區塊內交易逐一驗證,其中一個重要的步驟是調用系統鏈碼 VSCC 校驗交易是否符合指定的 Endorsement 策略,最後將區塊追加到區塊鏈上。
Hyperledger Fabric 區塊鏈網絡的交易執行到第3步時, Orderer 節點已經出塊,交易包含在區塊中。若此處僅僅是區塊內部的交易驗證失敗,不會影響區塊上鍊,只是對於該交易會標記一個交易失敗的驗證碼(ValidationCode: “0” 表示交易成功,"非0"表示交易無效),對於背書策略不符的情況,驗證碼爲 ENDORSEMENT_POLICY_FAILURE(10)。
更新背書策略
對於 Chaincode 實例化後才加入的組織,其節點可以進行 Chaincode 查詢操作,但是不能對背書交易進行提交,此時需要修改 Chaincode 的背書策略以增加該組織相關節點的權限。我們可以通過 Upgrade Chaincode 來達到爲其指定新的背書策略的目標。
策略內容
策略就是去驗證簽名者的身份,根據MSP的role來驗證。一共有4種role
- member
- admin
- client
- peer
Org0.admin: any administrator of the Org0 MSP
Org1.member:any member of the Org1 MSP
Org1.client:any client of the Org1 MSP
Org1.peer:any peer of the Org1 MSP
默認策略
Chaincode需要在部署時指定 Endorsement Policy ,否則默認的背書策略爲通道中組織的任意成員( “any member of the organizations in the channel”)。例如,通道中有兩個組織 Org1, Org2 ,則默認策略爲 OR(‘Org1.member’, ‘Org2.member’)。