在超级账本结构设置中,参与网络的各种组织都需要执行链代码(假设每个组织都有认可者)。我的问题是关于对链码进行签名以防止篡改。我看到任何同龄人都可以使用(例如)创建一个签名的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.我们如何确保每个所有者都已部署了实际的签名版本并且未篡改链码?
谢谢
答案 0 :(得分:0)
-S选项指导过程使用文件.yaml中localMspid属性的值标识的MSP对软件包进行签名。
ChaincodeDeploymentSpec可以选择由集体所有者签名,以创建SignedChaincodeDeploymentSpec(或SignedCDS)。 SignedCDS包含3个元素:
CDS包含源代码,名称和链代码的版本。 链码的实例化策略,表示为认可策略。 通过认可定义的链码所有者列表。参见:https://hyperledger-fabric.readthedocs.io/en/stable/chaincode4noah.html
答案 1 :(得分:0)
Chaincode包签名的目的与您假设的目的有所不同。假设您是主要的频道管理员,您的频道中有50个组织。只有您可以执行链码更新,但是两个组织非常重要,除非您批准,否则您不得进行任何更改。为了确保满足此条件,您准备了一个新的chaincode程序包,在其中您将自己设置为可以实例化的唯一实体:
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
您将此包裹发送给必须接受该包裹的两个组织。一周后,您需要重新签收它们。您手动确保签名正确无误,并且包裹没有被篡改(如果是的话,您可以立即看到它,因为您在发送包裹之前已经对包裹进行了签名)。对它们进行签名也向您发出信号,表明这些组织已经在其认可对等方上安装了链码,并且已经准备好实例化。确保一切正常之后,您实例化链码。