在使用contract.submitTransaction()
或channel.sendTransaction()
以Hyperledger架构提交交易之后,是否有办法从特定的同行那里获得认可?
到目前为止,认可似乎总是来自同一个同行,而不是组织中的其他同行。请在下面查看我的环境详细信息。
另外,如果我使用首选节点sdk sendTransactionProposal(request)'s
ChaincodeInvokeRequest或忽略列表来定位特定的对等节点,这似乎没有任何区别。
是否有解决此问题的任何特定文档或替代资源?
ChaincodeInvokeRequest { 目标:allPeers或peer2,//或其他对等 首选:peer2, 忽略,peer1 }
环境详细信息 当前设置: 1个单位和2个同行
简单的认可政策:
{"identities":[{"role":{"name":"member","mspId":"Org1MSP"}}],policy:{"1-of":[{"signed-by":0}]}}
织物SDK库:
fabric-ca-client - v1.4.1
fabric-client - v1.4.1
fabric-network - v1.4.1
超级账本结构版本:v1.4.1
使用以下方法定位sdk中的特定对等点:
const request = {
targets: peers or peer[1] or [peer2], -- target specific peer
chaincodeId: chaincodeName,
txId,
fcn: functionName,
args,
transientMap: transientMapData // , // private data,
ignore: list of peer[s] to ignore
preferred: list of peer[s] to prefer
};
const endorsementResults = await channel.sendTransactionProposal(request);
if (channel.verifyProposalResponse(endorsementResults[0][0])) {
const transactionRequest = {
proposalResponses: endorsementResults[0],
proposal: endorsementResults[1]
};
invokeResponse = await channel.sendTransaction(transactionRequest);
}
预期结果:
transaction1-客户端向peer1提交交易,并获得peer1的背书。 transaction2-客户向peer2提交交易,并获得peer2的认可。
实际结果:
transaction1-客户端向peer1提交交易,并获得peer1的背书。 transaction2-客户向peer2提交交易,并获得peer1的认可。