Hyperledger Fabric 背书策略

背书策略是为了告知peer节点,交易是否被正确的背书。当peer接收到一个交易到时候,它将会invoke与交易相关的chaincode的VSCC(Validation
System Chaincode))作为交易验证流的一部分,来验证交易的有效性。 Recall that a transaction contains one
or more endorsement from as many endorsing peers

VSCC的任务是做出以下决定:

  • 所有的endorsement都是有效的(即它们是有效证书的预期信息的有效签名)。
  • 有适当数量的endorsement。
  • endorsement来自预期的源。

Endorsement policy 设计

Endorsement政策有两个主要部分:

  • 一个主体(principle)。
  • 一个门槛(threshold gate)。
    主体 P 识别预期签名的实体。一个门限(threshold gate) T
    会有两个输入:一个整数 t (threshold)和一个principle或者gate的列表 n
    .这个gate本质上是抓住满足这些 n (principle或者gate)的期望t。

例如:
- T(2, ‘A’, ‘B’, ‘C’) ,从“A”,“B”或“C”中的任何2个principle请求签名。
- T(1, ‘A’, T(2, ‘B’, ‘C’)) ,请求一个来自”A”的签名,或者一个来自”B”和”C”的签名。

CLI中的Endorsement policy语法

在CLI中,使用一种简单的语言来表示相对于Principal的布尔表达式的策略。

principal通过MSP进行描述,MSP的任务是验证签名者的身份和签名者在该MSP内的角色。目前,支持两个角色:成员管理员
principal被描述为 MSP.ROLE 其中 MSP 是所需的MSP ID,
ROLE member 或者 admin
有效principle的示例是 ‘Org0.admin’( MSP Org0的任何管理员)或
‘Org1.member’
(Org1 MSP的任何成员)。

语言的语法是:

EXPR(E[, E…])

其中 EXPR AND
OR
表示两个布尔表达式,并且 E 是principle(
具有上述语法)或另一个嵌套调用 EXPR

例如:
- AND(‘Org1.member’, ‘Org2.member’, ‘Org3.member’) ,请求3个principle的签名。
- OR(‘Org1.member’, ‘Org2.member’) 请求两个中的一个的签名。
- OR(‘Org1.member’, AND(‘Org2.member’, ‘Org3.member’)) ,请求一个来自MSP=red >
Org1 的签名,或者来自MSP=red > org2 的成员和来自=red > Org3 的成员的签名。

为chaincode指定Endorsement policy

通过使用这种语言,chaincode的开发者可以为一个chaincode指定特定的endorsement策略。
注意 - 默认策略需要 DEFAULTMSP 成员的一个签名 )。如果在CLI中未指定策略,则使用此选项。

该策略可以在部署时通过键 -P 来指定。

例如: peer chaincode deploy -C testchainid -n mycc
-p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
-c ‘{“Args”:[“init”,”a”,”100”,”b”,”200”]}’ -P “AND(‘Org1.member’, ‘Org2.member’)”

该命令使用 AND(‘Org1.member’, ‘Org2.member’) 策略,将chaincode
mycc 部署到链testchain上。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值