我的Fabric网络联盟(在configtx.yaml中)有两个组织:ORG1和ORG2。 ORG1有4个主要对等体,ORG2只有1个对等体。 ORG2 peer的唯一目的是拥有分类帐的副本(用于审计目的)。
他们都加入了同一个频道,让我们说ORG1的管理员已经安装/实例化了0.1的链码
现在,ORG2的管理员也可以使用相同的链码名称“对等链代码升级”到版本0.2,当提案到达其中一个ORG1对等体时,它会说:
endorsement failure during invoke. response: status:500 message:"cannot retrieve package for chaincode [chaincode name]/0.2, error open /var/hyperledger/production/chaincodes/[chaincode name]/0.2: no such file or directory"
我们如何完全阻止ORG2升级链码版本?这样只有ORG1的管理员才能执行管理操作?
我搜索了ACL,但似乎管理操作不受ACL设置的控制。
经过研究,我们发现我们可以在链代码包的实例化策略中设置它。
请看下面的面料文件:
使用标志-i,您可以在打包链码时设置实例化策略。然后,只有策略允许的组织才能实例化或升级通道上的链码