问题
问题在于您提供给 Caliper 的网络配置文件。根据Hyperledger Caliper的官方文档,网络配置包含一个YAML 网络配置文件。该文件需要有一个对象caliper,因为它是Required和一个Non-empty object,其中包含一个属性blockchain,即Required和Non-empty string。您的日志说您指定的文件中缺少此对象和特定属性。
解决方案
您指定的文件是 docker-composer 文件。Fabric 区块链的网络配置文件应该类似于,例如,位于“networks/fabric/v1/v1.4.1/2org1peercouchdb/fabric-go.yaml”的文件,其中包含 Hyperledger Caliper 所需的网络配置参数和在caliper对象内的属性命令中管理docker容器。
您可以在caliper github 存储库中获取这些文件,也可以查看 Hyperledger Caliper官方文档以获得更好的理解。
例子
您应该有一个网络配置文件,该文件在属性 caliper.blockchain 上指定您正在使用的区块链,以及如何在属性 caliper.command 上管理 docker 容器(就像其余和必需的参数一样)。例如:
...
caliper:
blockchain: fabric
command:
start: export FABRIC_VERSION=1.4.0;export FABRIC_CA_VERSION=1.4.0;docker-compose -f networks/fabric/docker-compose/2org1peercouchdb/docker-compose.yaml up -d;sleep 3s
end: docker-compose -f networks/fabric/docker-compose/2org1peercouchdb/docker-compose.yaml down;(test -z \"$(docker ps -aq)\") || docker rm $(docker ps -aq);(test -z \"$(docker images dev* -q)\") || docker rmi $(docker images dev* -q);rm -rf /tmp/hfc-*
...
...
笔记
我使用 JSON 文件作为 Hyperledger Sawtooth 和 Ethereum 的网络配置文件,以及 Hyperledger Caliper。但是,我不确定 JSON 文件是否适用于 Fabric 基准测试。