Fabric v1.x 背书策略

一、什么是背书策略

Committing Peers在验证交易的时候,通过背书策略来验证一个交易是否有效,背书策略里面定义了一些要求,只有根据背书策略进行背书的交易才被认为是有效的。每个智能合约在部署的时候,都会指定背书策略。

Fabric定义了ESCC和VSCC两个system chaincode来为交易进行背书和验证:

  • ESCC (Endorsement System ChainCode)在Endorsering Peer上签署提案响应
  • VSCC(Validation System ChainCode)在Committing Peer上验证背书

背书节点仿真执行完交易后,会通过ESCC对执行结果进行签名,返回给client端;记账节点收到排序节点发送的交易区块后,会通过VSCC来验证是否符合背书策略,如下图所示:
在这里插入图片描述

二、背书策略的指定

背书策略在chaincode实例化的时候会被指定,使用-P参数即可,示例如下所示:

peer chaincode instantiate
-C mychannel
-n mycc
-v 1.0
-p chaincode_example02
-c '{"Args":["init","a", "100", "b","200"]}'
-P "AND('Org1MSP.member')"

2.1 背书策略句法

策略句法为:EXPR(E[, E…])

  • EXPR可以是:AND、OR或者OutOf
  • E:主体或者嵌套的EXPR

主体句法:MSP.ROLE

  • 支持的角色(ROLE)有:member, admin, client, peer
  • 在MSP为“MSP ID”的情况下,ROLE可以为"member" 或者 “admin”

2.2 背书策略示例

Request 1 signature from all three principals

  • AND(‘Org1.member’, ‘Org2.member’, ‘Org3.member’)

Request 1 signature from either one of the two principals

  • OR(‘Org1.member’, ‘Org2.member’)

Request either one signature from a member of the Org1 MSP or (1 signature from a member of the Org2 MSP and 1 signature from a member of the Org3 MSP)

  • OR(‘Org1.member’, AND(‘Org2.member’, ‘Org3.member’))
发布了29 篇原创文章 · 获赞 3 · 访问量 5582

猜你喜欢

转载自blog.csdn.net/ice_fire_x/article/details/104394945
今日推荐