我正在使用Hyperledger Fabric及其私有数据功能。 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
的操作来更新收集策略? (尝试过,但尚未成功)
答案 0 :(得分:2)
根据结构private data documentation:
如果链码引用了集合,则链码将使用 先前的集合定义,除非有新的集合定义 在升级时指定。如果指定了收集配置 升级期间,每个现有集合的定义 必须包含在内,您可以添加新的集合定义。
当对等方提交该块时,集合更新将生效 包含链码升级事务。注意集合 无法删除,因为可能之前有私有数据哈希 渠道无法删除的区块链。
是的,可以通过升级链码来更新私有数据收集成员身份。
这是我用来安装第二个链码版本,然后使用新的集合配置在频道上升级的语法:
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
您似乎错过了一些升级标志。
任何新添加的成员都将收到私人数据,以供将来进行交易。任何被删除的成员将停止接收私人数据以备将来交易。
请注意,从Fabric v1.4开始,私有数据集合的任何新添加的成员还将通过对帐过程自动接收先前提交给私有数据集合的私有数据。