Hyperledger fabric Hyperledger结构-如何更改链码的集合配置?

Hyperledger fabric Hyperledger结构-如何更改链码的集合配置?,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我正在使用Hyperledger结构及其私有数据功能。collection config.json的示例如下: [ { "name": "collectionMarbles", "policy": "OR('Org1MSP.member', 'Org2MSP.member')", "requiredPeerCount": 0, "maxPeerCount": 3, "blockToLive":1000000 }, { "name": "col

我正在使用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
 }
]
使用此配置,只有
或1msp.member
才能访问
“collectionMarblePrivateDetails”下的数据

现在我只想将可访问性更改为
Org2MSP.member
。是否可以执行类似于
$peer chaincode升级--collections config$GOPATH/src/github.com/chaincode/marbles02\u private/collections\u config.json
的操作,以更新收集策略?(尝试过,但尚未成功)

根据结构:

如果集合由链码引用,则链码将使用 以前的集合定义,除非创建了新的集合定义 在升级时指定。如果指定了集合配置 在升级过程中,将为每个现有集合创建一个定义 必须包含,并且可以添加新集合定义

当对等方提交块时,集合更新生效 包含链码升级事务的。请注意,集合 无法删除,因为服务器上可能存在以前的私有数据哈希 无法移除的频道区块链

因此,可以通过升级链码来更新私有数据收集成员身份

以下是我用于安装第二个链码版本,然后使用新的集合配置在频道上进行升级的语法:

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开始,私有数据收集的任何新添加成员也将通过对账过程自动接收先前提交给私有数据收集的私有数据。

根据Fabric:

如果集合由链码引用,则链码将使用 以前的集合定义,除非创建了新的集合定义 在升级时指定。如果指定了集合配置 在升级过程中,将为每个现有集合创建一个定义 必须包含,并且可以添加新集合定义

当对等方提交块时,集合更新生效 包含链码升级事务的。请注意,集合 无法删除,因为服务器上可能存在以前的私有数据哈希 无法移除的频道区块链

因此,可以通过升级链码来更新私有数据收集成员身份

以下是我用于安装第二个链码版本,然后使用新的集合配置在频道上进行升级的语法:

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开始,私有数据采集的任何新添加成员也将通过对账过程自动接收以前提交给私有数据采集的私有数据。

运行此命令得到了什么?我没有得到此命令。只是想知道如何更改私有数据的可访问性。您使用的是哪个版本的Fabric?@Gari it's Fabric v1。4@Harshit
运行此命令得到了什么?
>我只更新了配置JSON中的
collectionMarblePrivateDetails
,没有修改任何链码。通过使用其他适当的标志(例如,较新的版本号)运行此命令,该命令已被接受,我可以查询较新的版本,但我仍然只能使用Org1进行查询(尽管配置JSON已使用Org2作为唯一参与方进行了更新)。您通过运行此命令得到了什么?我没有得到此命令。只是想知道如何更改私有数据的可访问性。您使用的是哪个版本的Fabric?@Gari it's Fabric v1。4@Harshit
运行此命令得到了什么?
>我只更新了配置JSON中的
collectionMarblePrivateDetails
,没有修改任何链码。通过使用其他适当的标志(例如,较新的版本号)运行此命令,该命令已被接受,我可以查询较新的版本,但我仍然只能使用Org1进行查询(尽管配置JSON已使用Org2作为唯一参与方进行了更新)。谢谢@Dave,它可以正常工作!这似乎是我的疏忽。升级链码时是否可以添加新集合?是的,可能,但是您还需要包括所有现有集合定义。请记住,您不能更改name或blockToLive属性。否则,您的新收藏将无法生效(并且您在升级时不会看到与此相关的任何警告),谢谢@Dave,它可以工作!这似乎是我的疏忽。升级链码时是否可以添加新集合?是的,可能,但是您还需要包括所有现有集合定义。请记住,您不能更改name或blockToLive属性。否则,您的新收藏将无法生效(并且您在升级时不会看到任何与此相关的警告)