背書策略
背書策略用於指導peer如何確定交易是否得到了的認可。當一個peer接收到一個事務時,它會調用與事務的Chaincode相關聯的VSCC(驗證系統鏈代碼),作為事務驗證流程的一部分,以確定交易的有效性。一個交易包含了一個或多個peer背書節點中的背書支持。VSCC的任務是做出以下決定:
- 所有的背書都是有效的(也就是說,它們是有效的簽名,而不是預期的消息)。
- 有適當數量的背書
- 背書來自預期的來源(s)
背書策略指的是第二和第三點其中的一種方式。
CLI中的背書策略語法
在CLI中,使用一種簡單的布爾表達式語言來表達對主體的背書策略。
一個主體被描述為MSP,它的任務是驗證簽名者的身份,以及簽名者在MSP中所扮演的角色。目前,支持兩個角色,即成員和管理員。角色組成,MSP必須承載MSP ID,角色是成員和管理員兩個字符串之一。例如一個有效的主體是“Org0.admin”(任何組織的任何管理員)或是Org1.member(任何組織的成員)。
該語言的語法是:
EXPR(E[, E...])
EXPR使用AND或者OR其中之一作為表達式,E要么是一個主體(上面描述的是語法),要么是另一個對EXPR的嵌套調用。
例如:
- AND('Org1.member', 'Org2.member', 'Org3.member')三個主體必須同時背書並認可簽名
- OR('Org1.member', 'Org2.member')兩個主體中的任意一個背書並認可簽名
- OR('Org1.member', AND('Org2.member', 'Org3.member'))主體1背書並認可簽名或者主體2和主體3同時背書並認可簽名
為chaincode指定背書策略
使用這種語法,chaincode部署人員可以請求對chaincode的背書在指定的策略上進行驗證。注意-默認策略需要一個來自默認MSP的成員的簽名。如果在實例化chaincode時,在CLI中沒有指定策略,則使用此方法。
可以在實例化時使用“-P”關鍵詞指定策略,然后執行策略。
例如:
peer chaincode instantiate -C <channelid> -n mycc -P "AND('Org1.member', 'Org2.member')"
這個命令使用 AND('Org1.member', 'Org2.member') 背書策略來部署chaincode mycc,該策略要求Org1和Org2的成員兩個都必須簽署事務。
