Caliper是一个区块链性能测试框架,可用于测试不同的区块链实现。支持
- fabric v1.0+
- sawtooth 1.0+
- Iroha 1.0
测试内容指标包括:
- 交易成功率
- 交易吞吐量TPS
- 交易延迟
- 资源消耗
感受一下先
准备
先安装NodeJS 8.X、node-gyp、Docker、Docker-compose。
git clone https://github.com/hyperledger/caliper.git
cd caliper
npm install
安装区块链SDK(以fabric为例)
# caliper项目目录下
npm install grpc@1.10.1 fabric-ca-client fabric-client
跑个测试
性能测试示例在benchmark
目录下,用法如下:
node benchmark/simple/main.js -c yourconfig.json -n yournetwork.json
- -c用于指定区块链的配置文件,不指定的话默认为
config.json
; - -n用于指定区块链网络配置文件,不指定的话由-c指定的配置文件定义。
跑一个smallbank的例子:
node benchmark/smallbank/main.js
生成的报告长这样(部分):
架构
在这个标准框架核心,是可以译解信息的“适配层”,让Caliper可以安装智能合约,触发合约,或者查询各种分布式账本的状态,从而更好地测量其有效性。
适配层 Adaptation Layer
适配层用于将现有的区块链系统与Caliper框架集成。适配器使用了相应的链SDK和API实现了Caliper Blockchain NBIs。
接口&核心层
- 区块链操作接口:包含部署合约、调用合约、查询账本状态等操作;
- 资源监控:对docker容器、本地进程进行监控,包括CPU、内存、网络IO等的状态;
- 性能分析:读取预定义的性能数据(如TPS、延迟、成功率等)并打印报告。这些数据在调用NBI的时候会记录(如创建时间,交易提交时间,交易结果等);
- 生成HTML报告。
应用层
- 应用层来运行区块链测试场景。每一个测试场景由一个配置文件来定义,包含底层区块链网络的配置和测试参数。
- 项目内置一个默认的区块链引擎,当然开发人员也可以基于NBI来定