【问题标题】:How hyperledger fabric chaincode signing and installation works?超级账本结构链码签名和安装如何工作?
【发布时间】:2018-07-04 10:04:11
【问题描述】:

在超级账本结构设置中,参与网络的各种组织都需要执行链代码(假设每个组织都有一个背书者)。我的问题是关于签署链码以防止篡改。我看到任何对等方都可以使用(仅作为示例)创建签名CDS

对等链码包 -n mycc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -v 0 -s -S -i "AND('OrgA.admin')" ccpack.out

现在,我的问题是 1. 我们如何指定链码应该由所需数量的所有者签名,我没有看到任何可以指定所有者的参数? 2. 如何验证链码是否已被所有者签名,即通过查看 CDS 进行验证? 3. 我们如何确保每个所有者都部署了实际签名版本并且没有被篡改链码?

谢谢

【问题讨论】:

    标签: hyperledger-fabric hyperledger


    【解决方案1】:

    -S 选项指示进程使用文件 .yaml 中 localMspid 属性值标识的 MSP 对包进行签名。

    ChaincodeDeploymentSpec 可以选择由集体所有者签名以创建 SignedChaincodeDeploymentSpec(或 SignedCDS)。 SignedCDS 包含 3 个元素:

    CDS 包含链代码的源代码、名称和版本。 链码的实例化策略,表示为背书策略。 链码所有者列表,通过背书定义。见:https://hyperledger-fabric.readthedocs.io/en/stable/chaincode4noah.html

    【讨论】:

      【解决方案2】:

      Chaincode 包签名的目的与您想象的略有不同。假设您是主要频道管理员,您的频道中有 50 个组织。只有您可以执行链码更新,但是两个组织非常重要,除非他们批准,否则您不得进行任何更改。为确保满足此条件,您准备了一个新的链码包,您将自己设置为唯一可以实例化它的实体:

      peer chaincode package -n mycc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -v 0 -s -S -i "AND('OrgA.admin')" ccpack.out
      

      您将此包裹发送给必须接受它的两个组织。一周后,您让他们重新签名。您手动确保签名正确,并且包裹没有被篡改(如果是,您可以立即看到它,因为您在发送包裹之前已经签署了)。对它们进行签名也是对您的一个信号,即这些组织已经在其背书节点上安装了链码,并且它们已准备好进行实例化。确保一切正常后,实例化链码。

      【讨论】:

        猜你喜欢
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 2019-03-07
        • 2021-03-27
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多