Hyperledger Fabric/Hyperledger Caliper 基准测试

问题描述

最近学习了一些关于 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)));

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...