问题描述
我正在使用hyperleger fabric V1.4.4,我试图在升级时强制执行包括2个组织的认可策略,但是当我这样做时,发现服务开始失败,并且策略丢失了。
我验证了加入频道时已定义了锚点对等点,所以这似乎不是问题。
这就是我在做什么:
最初,这是我实例化/升级链码的方式:
const gateway = new Gateway();
await gateway.connect(ccp,{ wallet,identity: userId,discovery: { enabled: true,asLocalhost: false } });
const client = gateway.getClient();
const network = await gateway.getNetwork(channelName);
const channel = network.getChannel();
const peers = client.getPeersForOrg(orgName);
const txId = client.newTransactionID(true);
const deployId = txId.getTransactionID();
var request = {
targets : peers,chaincodeId: ccName,chaincodeType: ccType,chaincodeVersion: ccVersion,fcn: ccFunc,args: ccArgs,txId: txId
};
let upgradeResponse = await channel.sendUpgradeProposal(request,300000);
通过这种方式,合同也可以使用发现服务,但是我没有所需的认可政策,因此我以这种方式更改了代码:
var policy = {
identities: [
{ role: { name: "member",mspId: "org1" }},{ role: { name: "member",mspId: "org2" }},],policy: {
"2-of": [{ "signed-by": 0 },{ "signed-by": 1 }]
}
}
var request = {
targets : peers,txId: tx_id,'endorsement-policy': policy
};
但是发现服务开始失败,并显示以下错误:
error: [Channel.js]: Channel:mychannel received discovery error:failed constructing descriptor for chaincodes:<name:"mycontract" >
我开始使用await channel.getDiscoveryResults()
查看发现结果,发现添加了认可策略后,认可会丢失。
我还从发现结果中看到,我只能看到从组织ccp传递过来的对等体,看不到网络中的所有对等体,但是可以看到所有订购者。
我认为问题在于进行升级时发现并没有看到所有组织的同伴,但是我不明白为什么。
我尝试从请求中删除对等对象,但这似乎并没有改变结果。我也尝试在请求中设置两个对等体,但出现下一个错误:
Error: Peer with name "peer.xxxxxx.eastus.aksapp.io" not assigned to this channel
我已经迷失了一段时间,是否有办法让我确认锚点对等正常工作? ccp阻塞发现过程的方式是什么?如何诊断我的问题?
这是我的ccp的样子:
{
"certificateAuthorities": {
"org1CA": {
"caName": "ca.org1","tlsCACerts": {},"url": "https://ca.xxxxxxxx.eastus.aksapp.io:443"
}
},"client": {
"connection": {
"timeout": {
"orderer": "300","peer": {
"endorser": "300"
}
}
},"organization": "org1"
},"name": "org1","organizations": {
"org1": {
"certificateAuthorities": [
"org1CA"
],"mspid": "org1","peers": [
"peer1.org1"
]
}
},"peers": {
"peer1.org1": {
"grpcOptions": {
"hostnameOverride": "peer1.xxxxxxxxxx.eastus.aksapp.io","ssl-target-name-override": "peer1.xxxxxxxxxx.eastus.aksapp.io"
},"url": "grpcs://peer1.xxxxxxxxxx.eastus.aksapp.io:443"
}
},"version": "1.0.0","wallet": "org1"
}
非常感谢您
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)