【问题标题】:How do I create a dynamic endorsement policy (ESCC) in Hyperledger Fabric 1.2?如何在 Hyperledger Fabric 1.2 中创建动态背书策略 (ESCC)?
【发布时间】:2018-08-22 11:49:53
【问题描述】:

在背书政策文件中,声明如下:

背书策略的动态添加(例如,通过在链码部署时间部署交易)在有限的策略评估时间(终止)、确定性、性能和安全保证方面非常敏感。因此,不允许动态添加背书策略,但将来可以支持。

如果我有兴趣制定一个更灵活的背书政策,我们会不断添加新的对等节点,并希望背书政策基于与特定交易相关的一组独特的对等节点,那会是可能吗?

即在某些情况下,交易是在两个特定对等方之间进行的,因此它们都应该是有效的背书者。存在其他五个同行,假设他们是竞争对手,在这种情况下不应允许他们背书。

在 1.1 中,您似乎无法部署自己的自定义 ESCC/VSCC,如 https://jira.hyperledger.org/browse/FAB-8729 中所述。

使用新的 1.2 可插拔架构,我看不到如何获得对 ChaincodeStubInterface 的访问权以处理基于传递的事务参数的自定义逻辑。例如,旧的 1.1 可插拔链码架构扩展了 Chaincode interface

鉴于下面的方法签名,是否可以使用新方法签名中的数据访问ChaincodeStubInterface

https://hyperledger-fabric.readthedocs.io/en/release-1.2/pluggable_endorsement_and_validation.html

Endorse(payload []byte, sp *peer.SignedProposal) (*peer.Endorsement, []byte, error)

Validate(block *common.Block, namespace string, txPosition int, actionPosition int, contextData ...ContextDatum) error

具体来说,我想访问args := stub.GetStringArgs() 之类的东西,甚至只是负载的复合键/索引名称。

【问题讨论】:

    标签: hyperledger-fabric


    【解决方案1】:

    我最近尝试在自己的应用上开发类似的功能。虽然当前版本不支持动态背书策略,但我们可以使用动态配置来帮助我们定义我们在应用程序中期望的背书方法。

    我不确定我们是否可以通过方法签名直接访问ChaincodeStubInterface,但我会尝试并不断更新。

    这是我的解决方案。希望这能有所帮助。

    1. 使用Fabric-SDK-Node创建我的应用,并确保fabric版本在1.1.0以上,为我们提供了更全面的配置文件。
    2. 以下是部分配置文件示例,由官方提供:

      orderers:
        - orderer.example.com
      peers:
        peer0.org1.example.com:
          endorsingPeer: true
          chaincodeQuery: true
          ledgerQuery: true
          eventSource: true
        peer0.org2.example.com:
          endorsingPeer: true
          chaincodeQuery: true
          ledgerQuery: true
          eventSource: true
      chaincodes:
        - mycc:v0
      
    3. 您可以注意到,此示例为我们提供了四个选项来定义您希望将哪个连接策略用于您的事务。通过将peer0.org2.endorsingPeer 设置为false,当用户完成setConfigSetting 并加载连接配置文件后发生某人向fabric 网络发送invoke 提议的情况时,该事务只能由peer0.org1 背书。这三个选项的其余部分与endorsingPeer 相同。
    4. 现在我们可以创建一个函数,让用户在发送交易之前动态设计他们想要的背书策略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2018-12-17
      • 2019-09-17
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      相关资源
      最近更新 更多