我正在尝试使用节点sdk更新超级分层结构中的现有频道。我只是想将batchsize从10增加到11(可以在官方配置更新示例中找到)。我的配置更新如下所示:
{
"channel_id": "mychannel",
"read_set": {
"groups": {
"Orderer": {}
}
},
"write_set": {
"groups": {
"Orderer": {
"values": {
"BatchSize": {
"mod_policy": "Admins",
"value": {
"absolute_max_bytes": 102760448,
"max_message_count": 11,
"preferred_max_bytes": 524288
},
"version": "1"
}
}
}
}
}
}
用户注册情况如下:
ORG1_TOKEN=$(curl -s -X POST \
http://localhost:4000/users \
-H "content-type: application/x-www-form-urlencoded" \
-d 'username=jim&orgName=org1')
我在Docker容器上运行网络并使用所有图像和二进制文件的1.0.2版本。
我创建了一个update-channel.js函数,非常类似于余额转移示例的app文件夹中的create-channel.js函数。我使用configtxlator将json更新转换为二进制文件:
superagent.post('http://127.0.0.1:7059/protolator/encode/common.ConfigUpdate',
configFile)
.buffer()
.end((error, res) => {
error ? reject(error) : resolve(res.body);
});
当我签署并将更新的配置推送到订货人时,我收到以下错误消息:
0xc42011e558 identity 0 does not satisfy principal: The identity is a
member of a different MSP (expected OrdererMSP, got Org1MSP)
principal evaluation fails
...
Rejecting CONFIG_UPDATE because: Error
authorizing update: Error validating DeltaSet: Policy for [Values]
/Channel/Orderer/BatchSize not satisfied: Failed to reach implicit
threshold of 1 sub-policies, required 1 remaining
我可以想象这个问题与我为Org1注册用户的事实有关。我的解决方案是将用户注册到OrdererOrg(甚至可能)吗?或者我是否需要更改配置更新json?
答案 0 :(得分:0)
我们找到了解决方案。您确实需要orderer组织管理员签名。我们将network-config更改为还包括orderer的admin和mspid信息,然后使用admin来签署配置更新:
"orderer": {
"mspid": "OrdererMSP",
"url": "grpcs://orderer.example.com:7050",
"server-hostname": "orderer.example.com",
"tls_cacerts": "../artifacts/channel/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt",
"admin": {
"key": "../artifacts/channel/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/keystore",
"cert": "../artifacts/channel/crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp/signcerts"
}
}
然后,签名对象包含orderer org admin infos:
client.signChannelConfig(channelConfig);
这会导致频道成功更新。
这是更新orderer部分下的任何频道配置项。如果它与应用程序部分相关,则需要提取参与组织的签名(通过其管理员)并将其提交给订购者。