论文标题
通过驯服应用程序earks的冲突来利用分散区块链的智能合约中的并行性
Utilizing Parallelism in Smart Contracts on Decentralized Blockchains by Taming Application-Inherent Conflicts
论文作者
论文摘要
传统的公共区块链系统通常由于共识协议本身而具有非常有限的交易吞吐量。随着共识技术的最新进展,绩效限制已大大提高,通常每秒达到数千笔交易。这样,交易执行已成为一种新的绩效瓶颈。在交易执行中利用并行性是解决此问题并进一步增加交易吞吐量的一种清晰而直接的方法。尽管一些最近的文献引入了并发控制机制以并行执行智能合约交易,但他们可以实现的速度远非理想的。主要原因是所提出的并行执行机制无法有效处理许多区块链应用中固有的冲突。 在这项工作中,我们彻底研究以太坊中的历史交易执行痕迹。我们观察到,应用伴随冲突是限制执行过程中可剥削并行性的主要因素。我们建议使用分区计数器和特殊的交换说明来打破应用冲突链,以最大程度地提高潜在的速度。当我们评估可实现的最大并行加速时,与连续执行相比,这些技术将此限制翻了一番,达到18倍的总速度,从而接近最佳。我们还建议OCC-DA,这是一种带有确定性中断的乐观并发控制调度程序,这使得可以在公共区块链设置中使用OCC计划。
Traditional public blockchain systems typically had very limited transaction throughput because of the bottleneck of the consensus protocol itself. With recent advances in consensus technology, the performance limit has been greatly lifted, typically to thousands of transactions per second. With this, transaction execution has become a new performance bottleneck. Exploiting parallelism in transaction execution is a clear and direct way to address this and to further increase transaction throughput. Although some recent literature introduced concurrency control mechanisms to execute smart contract transactions in parallel, the reported speedup that they can achieve is far from ideal. The main reason is that the proposed parallel execution mechanisms cannot effectively deal with the conflicts inherent in many blockchain applications. In this work, we thoroughly study the historical transaction execution traces in Ethereum. We observe that application-inherent conflicts are the major factors that limit the exploitable parallelism during execution. We propose to use partitioned counters and special commutative instructions to break up the application conflict chains in order to maximize the potential speedup. When we evaluated the maximum parallel speedup achievable, these techniques doubled this limit to an 18x overall speedup compared to serial execution, thus approaching the optimum. We also propose OCC-DA, an optimistic concurrency control scheduler with deterministic aborts, which makes it possible to use OCC scheduling in public blockchain settings.