转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
背书策略
背书策略是用来指导一个peer
如何确定一笔交易是否被正确的背书。当一个peer
接收到一笔交易后,它会invoke
与该交易的chaincode
相关的VSCC(Validation System Chaincode)
,作为交易确认流程的一部分来确定交易的有效性。回想一下,一个交易包含了一个或多个背书peer
的认可。VSCC
的任务是做出如下决定:
背书策略是指定第2点和第3点的一种方式。
背书策略设计
背书策略有2个重要组件: 1. 一个原则。 2. 一个门槛
原则P
定义了期待哪个主体的签名。
门槛T
有2个输入:一个实数t
(门槛值)和一个包含了n
个原则的列表;这个门槛本质上就是刻画了满足n
个原则的预期,t
就是必须要满足的数量。
举个例子: T(2, 'A', 'B', 'C')
要求来自A
, B
或者C
任意2个主体的签名;T(1, 'A', T(2, 'B', 'C'))
要求来自A
或者B
和C
的签名。
CLI
中的背书策略语法
在CLI
中,有一种简单的语言来表达策略,用布尔表达式来定义原则。
一个原则根据MSP
来描述,用来验证签名者的身份以及签名者在MSP
中的角色。目前,支持2种角色:member
和admin
。原则用MSP.ROLE
格式来描述,其中MSP
是需要的MSP ID
,ROLE
则是一个字符串,取值member
或者admin
。举一个有效的原则例子,比如Org0.admin
(需要Org0 MSP
中任意一个管理员的签名),或者Org1.member
(需要Org1 MSP
中任意一个成员的签名)。
这种语言的语法是: EXPR(E[, E...])
其中EXPR
要么是AND
,要么是OR
,代表了这2个布尔表达式的功能,而E
要么是一个原则(根据上面的语法描述),要么就是另一个嵌套的EXPR
。
举个例子:AND('Org1.member', 'Org2.member', 'Org3.member')
需要来自3个实体的所有签名;OR('Org1.member', 'Org2.member')
需要来自2个实体中任意一个的签名;OR('Org1.member', AND('Org2.member', 'Org3.member'))
需要来自Org1 MSP
中一个成员的签名,或者是,需要来自Org2 MSP
中一个成员的签名以及来自Org3 MSP
中一个成员的签名。
为一个chaincode
指定背书策略
使用这种语言,一个chaincode
部署者可以根据指定的策略,来验证一个chaincode的背书是有效的。记住: 默认的策略是需要一个来自MSPID
为DEFAULT
的MSP
中一个成员的签名。如果在CLI
中没有指定任何策略,那么这个默认策略就会生效。
策略可以在部署时通过-p
开关来指定
参考文档
转载请注明出处:www.huamo.online