问题描述
最近学习了一些关于 Hyperledger Fabric 和 Hyperledger Caliper 的知识。
最近一直在关注 Hyperledger Caliper Fabric 基准测试教程 here 以了解更多相关信息。
它使用 Fabric Samples 网络作为示例,使用的示例链代码是资产转移基础 javascript。
例如运行 caliper 以创建 1000 个资产时。
在资产创建操作期间初始化测试时偶尔会出现错误,如下所示:
2021-05-05T21:28:58.344Z - error: [discoveryHandler]: compareProposalResponseResults[undefined] - read/writes result sets do not match index=1
2021-05-05T21:28:58.344Z - error: [Transaction]: Error: No valid responses from any peers. Errors:
peer=undefined,status=grpc,message=Peer endorsements do not match
2021.05.05-22:28:58.344 error [caliper] [connectors/v2/FabricGateway] Failed to perform submit transaction [CreateAsset] using arguments [0_231,blue,20,penguin,500],with error: Error: No valid responses from any peers. Errors:
peer=undefined,message=Peer endorsements do not match
示例链码操作非常简单:
// CreateAsset issues a new asset to the world state with given details.
async CreateAsset(ctx,id,color,size,owner,appraisedValue) {
const asset = {
ID: id,Color: color,Size: size,Owner: owner,AppraisedValue: appraisedValue,};
ctx.stub.putState(id,Buffer.from(JSON.stringify(asset)));
return JSON.stringify(asset);
}
发生此类错误是否有任何特殊原因?即使偶尔。
解决方法
caliper 中的教程明确检查了 fabric-samples 中的特定标签。这是因为 main
分支中的链代码示例中存在一个错误,该错误不存在于特定的 git 提交中。该错误导致您看到的问题
您实际上已将该错误包含在您发布的代码段中。在链码中,它是一行
ctx.stub.putState(id,Buffer.from(JSON.stringify(asset)));
这是不正确的。应该是
await ctx.stub.putState(id,Buffer.from(JSON.stringify(asset)));