Despite the success in various scenarios, blockchain systems, especially EVM-compatible ones that serially execute transactions, still face the significant challenge of limited throughput. Concurrent transaction execution is a promising technique to accelerate transaction processing and increase the overall throughput. Existing concurrency control algorithms, however, fail to obtain enough speedups in real-world blockchains due to the high-contention workloads. In this paper, we propose a novel operation-level concurrency control algorithm designed for blockchains. The core idea behind our algorithm is that only operations depending on conflicts should be executed serially, while all other conflict-free operations can be executed concurrently. Therefore, in contrast to the traditional approaches, which block or abort the entire transaction when encountering conflicts, our algorithm introduces a redo phase to resolve conflicts at the operation level by re-executing conflicting operations only. We also develop a set of data dependency tracking mechanisms to achieve precise identification and speedy re-execution for conflicting operations. We implement an open-source prototype based on Go Ethereum and evaluate it using real-world Ethereum blocks. The evaluation results show that our algorithm achieves an average speedup of 4.28$\times$. If combined with state prefetching techniques, our approach can further accelerate the transaction execution by 7.11$\times$.
翻译:尽管在各种情景中取得了成功,但链条系统,特别是连续执行交易的与EVM兼容的系统,仍然面临着有限输送量的重大挑战。同时执行交易是加快交易处理和增加总体输送量的有希望的方法。尽管如此,由于高度注意的工作量,现有的conconconconcondal 算法在现实世界的链条上未能取得足够的加速。我们在本文件中提出了一套针对障碍操作的新颖的操作级通货控制算法。我们算法的核心思想是,只有取决于冲突的行动才能连续执行,而所有其他无冲突的行动则可以同时执行。因此,与传统的在发生冲突时阻碍或中止整个交易的方法不同,我们的算法引入了一个在操作一级通过重新实施冲突操作来解决冲突的重新实施阶段。我们还开发了一套数据依赖性跟踪机制,以便准确识别和迅速重新检查相互冲突的操作。我们根据Go Eexium实施了一个开放源原型,并使用现实世界的Eieum块来评估它。因此,与传统的方法不同,即在发生冲突时阻碍或中止整个交易过程中,我们的算法可以实现平均速度4.28的进度。