Hyperledger Fabric/Hyperledger 卡尺基准测试

Hyperledger Fabric/Hyperledger Caliper Benchmarking

最近学习了一些关于 Hyperledger Fabric 和 Hyperledger Caliper 的知识。

最近一直在关注 Hyperledger Caliper Fabric 基准测试教程 here 以了解更多相关信息。

它以 Fabric Samples 网络为例,使用的示例链代码是 asset-transfer-basic 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, status=grpc, 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)));