Fabric背书策略

转载请注明出处:www.huamo.online
字节杭州 求贤若渴:

  1. https://job.toutiao.com/s/JXTdQaH
  2. https://job.toutiao.com/s/JXTMWW3
  3. https://job.toutiao.com/s/JXT1tpC
  4. https://job.toutiao.com/s/JXTdu6h

背书策略

背书策略是用来指导一个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或者BC的签名。

CLI中的背书策略语法

CLI中,有一种简单的语言来表达策略,用布尔表达式来定义原则。

一个原则根据MSP来描述,用来验证签名者的身份以及签名者在MSP中的角色。目前,支持2种角色:memberadmin。原则用MSP.ROLE格式来描述,其中MSP是需要的MSP IDROLE则是一个字符串,取值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的背书是有效的。记住: 默认的策略是需要一个来自MSPIDDEFAULTMSP中一个成员的签名。如果在CLI中没有指定任何策略,那么这个默认策略就会生效。

策略可以在部署时通过-p开关来指定

参考文档

  1. http://hyperledger-fabric.readthedocs.io/en/release/endorsement-policies.html

转载请注明出处:www.huamo.online