Page 232 - 《软件学报》2025年第7期
P. 232

张孝 等: 区块链测试基准综述                                                                 3153


                 定了基准测试的运行方式, 以确保正确地获取测试指标, 包括实施测试所需的软硬件系统配置、攻击配置以及测
                 试流程等. 部分测试基准还提供了生成测试数据集和负载, 并执行测试用例的可执行程序或源码, 这通常被称为测
                 试工具.
                    目前, 数据库测试基准种类繁多, 其中由事务性能管理委员会                    (TPC) 发布的系列基准得到业界广泛认可, 包
                 括  TPC-C [34] 、TPC-B [35] 、TPC-E [36] 、TPC-H [37] 和  TPC-DS [38] . 具体内容将在第  2  节中介绍. 数据库测试基准为不同
                 数据库系统提供了一个公平的性能评价标准, 确保了比较的可比性和评估的可重复性. 同时, 它也推动了数据库技
                 术的创新和市场的良性竞争, 帮助用户做出更明智的数据库选择.
                    随着区块链技术的不断发展和应用领域的扩大, 越来越需要对不同区块链系统进行评测以匹配各种应用场景
                 和性能要求. 学术界和工业界对此都展开了积极的研究和探索. 新加坡国立大学的                          Dinh  等人  [39] 提出了首个用于
                 分析许可链的测试基准        BlockBench. BlockBench  使用真实和合成的工作负载, 从吞吐率、延迟、可扩展性和容错
                 性这  4  个维度来评测许可链系统. BlockBench       还设计并实现了一个开源的工具 (https://github.com/ooibc88/
                 BlockBench), 并利用该工具测试了以太坊、Hyperledger Fabric 以及      Parity  的性能. 然而, BlockBench  没有针对许
                 可链的应用场景设计应用模型和数据模型, 其测试指标也相对简单. Hyperledger 社区提出了一个专门针对
                 Hyperledger Fabric 的测试基准  Hyperledger Caliper [40] , 它通过运行用户自定义的工作负载来分析智能合约的吞吐
                 量、延迟和资源消耗. 但       Caliper 并未定义应用模型、数据模型和负载, 其指标也未考虑到系统的安全性. 中国信
                 息通信研究院研发的区块链性能评测平台               Trusted Bench [41] 也沿用了  Caliper 架构.
                    除此之外, 其他具有一定影响力的区块链测试基准包括                   Diablo [42] 、Gromit [43] 、BCadvisor [44] 、BCTMark [45] 、
                 DAGBENCH  [46] 、xBCBench [47] 、BlockMeter [48] 、AlphaBlock [49] 等.
                    基于这些区块链测试基准, 用户可以在相同的测试环境下分析和比较不同区块链系统的性能, 这在一定程度
                 上解决了区块链系统评测的问题. 然而, 对比测试基准的几个关键要素, 我们发现上述区块链测试基准仍需要完善.
                    ● 应用模型: 目前, 大多数区块链测试基准并未定义基于区块链真实业务场景的应用模型. Diablo                         中定义了交
                 易所、视频分享、游戏等         5 个去中心化的应用程序. BBSF       中使用了去中心化代币交易所、NFT            市场、NFT   铸造、
                 体育博彩网站这      4  个工作场景. 然而, 这些研究并未深入分析这些场景是否适合区块链应用. 而其他大多数的研究
                 则没有明确定义应用模型.
                    ● 数据模型: 大多数区块链测试基准并未讨论数据集的生成方式                    [27,40,43,45] . 在  BlockBench  中, 研究者使用了  3
                 个流行的以太坊智能合约          EtherId、Doubler 和  WavesPresale, 并借鉴了数据库基准的数据模型, 如         YCSD  和
                 SmallBank. Klenik  等人  [50] 将  TPC-C  转换为智能合约的模型. 部分测试基准利用智能合约预加载了不同数量的交
                 易作为数据集     [39,46] . 然而, 目前尚未看到有专门针对许可链应用的数据集和数据集产生工具.
                    ● 负载: 当前的测试基准中, 负载主要采用数据库负载或简单的合成负载, 这并不能真实反映区块链应用的特
                 性. 例如, BlockBench  中使用的  YCSD  和  SmallBank  负载是数据库的基准负载, 而在     Hyperledger Caliper 中并未提
                 供预定义的负载, 用户需要自行配置.
                    ● 指标: 目前测试基准缺少了对测试指标的统一定义. 例如, 在定义交易吞吐量和延迟的公式时, 一些文献考
                 虑了  N  个节点的平均值    [51] , 但大多数文献并未考虑这一点. 在计算资源利用率时, 部分文献考虑了                  RPC  请求消耗
                 的资源  [44] , 但大多数文献并未考虑. 此外, 大多数测试基准中也缺乏对安全性和容错性指标的定义.
                    ● 执行规则: 目前的测试基准中, 往往缺乏对测试环境预设的详细描述, 例如区块的大小、区块生成的时间间
                 隔、链上存量区块的数量         (即区块的高度)、数据存储的格式、并发度等. 这使得评估结果难以复现, 从而无法验
                 证其准确性.
                    作为一种特殊的分布式数据库, 区块链的测试基准可以充分借鉴数据库测试基准的内容. 但值得注意的是, 由
                 于区块链系统自身特点, 其测试基准与数据库测试基准也应该存在一定差异. 首先, 从数据集角度来看, 传统数据
                 库测试基准通常包含数据集, 其中数据规模和数据分布是影响性能的关键参数. 在区块链系统中, 主要瓶颈在于数
                 据上链的速度, 在此过程中已有数据的规模或分布对系统性能影响相对较小. 很多区块链测试基准也就不关心数
                 据的规模. 然而, 随着区块链应用的发展, 已经出现了一些查询类应用场景, 这些场景下性能受到数据集影响较大.
   227   228   229   230   231   232   233   234   235   236   237