Skip to main content
QUICK REVIEW

[论文解读] Why Do My Blockchain Transactions Fail? A Study of Hyperledger Fabric (Extended version)*

Jeeta Ann Chacko, Ruben Mayer|arXiv (Cornell University)|Mar 8, 2021
Blockchain Technology Applications and Security参考文献 28被引用 8
一句话总结

本文为Hyperledger Fabric中的事务失败提供了正式的分类体系,引入了包含四个真实链码的HyperLedgerLab基准测试框架,并通过详尽的实验分析了区块大小、背书策略和优化技术(Fabric++、Streamchain、FabricSharp)等参数对失败率的影响。研究发现,最优区块大小可将事务失败率降低高达60%,为实践者提供了可操作的配置指南,并揭示了权限链性能调优中的关键权衡。

ABSTRACT

Permissioned blockchain systems promise to provide both decentralized trust and privacy. Hyperledger Fabric is currently one of the most wide-spread permissioned blockchain systems and is heavily promoted both in industry and academia. Due to its optimistic concurrency model, the transaction failure rates in Fabric can become a bottleneck. While there is active research to reduce failures, there is a lack of understanding on their root cause and, consequently, a lack of guidelines on how to configure Fabric optimally for different scenarios. To close this gap, in this paper, we first introduce a formal definition of the different types of transaction failures in Fabric. Then, we develop a comprehensive testbed and benchmarking system, HyperLedgerLab, along with four different chaincodes that represent realistic use cases and a chaincode/workload generator. Using HyperLedgerLab, we conduct exhaustive experiments to analyze the impact of different parameters of Fabric such as block size, endorsement policies, and others, on transaction failures. We further analyze three recently proposed optimizations from the literature, Fabric++, Streamchain and FabricSharp, and evaluate under which conditions they reduce the failure rates. Finally, based on our results, we provide recommendations for Fabric practitioners on how to configure the system and also propose new research directions.

研究动机与目标

  • 正式定义并分类Hyperledger Fabric中与并发相关的事务失败类型,以填补文献中的关键空白。
  • 开发一个全面的、开源的基准测试系统(HyperLedgerLab),包含真实链码和工作负载生成器,以实现可复现的评估。
  • 分析Fabric配置参数(如区块大小、背书策略和事务到达率)对事务失败率的影响。
  • 在受控的、真实的情境下,评估并比较三种近期的Fabric优化技术(Fabric++、Streamchain、FabricSharp)。
  • 为实践者提供可操作的配置建议,并识别权限链性能调优中的新研究方向。

提出的方法

  • 作者基于乐观并发控制模型,定义了Fabric中四种正式的事务失败类型:背书失败、MVCC读冲突、写冲突和幻读。
  • 设计并实现了HyperLedgerLab,作为Caliper基准测试框架的扩展版本,集成链码和工作负载生成器,以模拟多样化的现实用例。
  • 该基准测试包含四个领域特定的链码,用于模拟电子健康记录和资产转移等真实场景,以确保实验的相关性。
  • 实验系统性地改变关键的Fabric参数:区块大小、事务到达率、背书策略和链码逻辑,同时测量失败率和性能指标。
  • 作者部署并评估了三种近期优化技术——Fabric++(事务重排序)、Streamchain(虚拟区块边界)和FabricSharp(冲突图序列化)——以评估其在降低失败率方面的有效性。
  • 在多种配置下进行定量分析,并通过统计验证识别出显著趋势和权衡。

实验结果

研究问题

  • RQ1在乐观并发控制模型下,Hyperledger Fabric中事务失败的正式可区分类型有哪些,它们是如何产生的?
  • RQ2关键系统参数(尤其是区块大小、背书策略和事务到达率)如何影响真实工作负载中的事务失败率?
  • RQ3近期的Fabric优化技术(Fabric++、Streamchain、FabricSharp)在多大程度上减少了事务失败?在何种条件下它们最为有效?
  • RQ4区块大小与失败率之间存在何种关系?该关系是否因不同的事务工作负载和优化技术而异?
  • RQ5可以为生产环境中最小化事务失败提供哪些配置建议?

主要发现

  • 区块大小对事务失败率有显著的非线性影响,最优大小可将失败率降低高达60%,适用于不同事务到达率。
  • 区块大小对失败率的影响在Fabric 1.4和Fabric++之间呈相反趋势:在Fabric 1.4中增大区块大小可减少失败,但在Fabric++中则会增加失败,揭示了一个关键权衡。
  • Fabric++能有效减少MVCC读冲突,但可能增加其他类型的失败,凸显了整体性能调优的必要性。
  • Streamchain能减少数据陈旧性并提升数据新鲜度,但其对失败率的影响不如对延迟和吞吐量的影响显著。
  • FabricSharp的冲突图序列化在减少写冲突方面显示出潜力,但其性能对工作负载特征和区块大小较为敏感。
  • 数据库后端的选择(LevelDB与CouchDB)对性能有显著影响,LevelDB由于在范围查询中延迟更低,表现优于CouchDB。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。