我使用Hyperledger面料以其私人数据功能。 collection-config.json
的例子是:
[
{
"name": "collectionMarbles",
"policy": "OR('Org1MSP.member', 'Org2MSP.member')",
"requiredPeerCount": 0,
"maxPeerCount": 3,
"blockToLive":1000000
},
{
"name": "collectionMarblePrivateDetails",
"policy": "OR('Org1MSP.member')",
"requiredPeerCount": 0,
"maxPeerCount": 3,
"blockToLive":3
}
]
有了这个配置,在"collectionMarblePrivateDetails"
数据只能由Org1MSP.member
访问。
现在我想改变无障碍只有Org2MSP.member
。是否有可能做这样的事情$ peer chaincode upgrade --collections-config $GOPATH/src/github.com/chaincode/marbles02_private/collections_config.json
,以便更新采集策略? (试过,但它没有成功还)
按照布料private data documentation:
如果集合是通过chaincode引用,除非在升级时指定一个新的集合定义chaincode将使用之前收集的定义。如果在升级过程中指定的集合配置中,每个现有馆藏的定义必须包括在内,你可以添加新的集合定义。
当同行提交包含chaincode升级事务块集合更新生效。需要注意的是集不能被删除,因为有可能是在通道的blockchain优先个人数据的哈希值,不能删除。
所以,是的,可以通过升级chaincode更新私有数据集合成员。
下面是我用来安装第二chaincode版本,然后将其升级与新的集合配置通道上的语法:
peer chaincode install -n marblesp -p github.com/hyperledger/fabric/examples/chaincode/go/marbles02_private -v 2
peer chaincode upgrade -C mychannel -n marblesp -c '{"Args":["init"]}' -v 2 -o 127.0.0.1:7050 --collections-config collection.json
它看起来像你错过了一些升级的标志。
任何新加入的成员将收到的私人数据在日后的交易。卸下的所有成员将停止接收私人数据为未来的交易。
注意,面料V1.4中,私有数据集合的任何新添加的成员也将自动获得以前通过和解进程致力于私有数据收集私人数据。