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.
翻译:由于共识协议本身的瓶颈,传统的公共连锁系统通常只有非常有限的交易吞吐量,因为共识协议本身本身的瓶颈。由于最近协商一致技术的进步,绩效限制已大大解除,通常每秒数千次交易。有了这一限制,交易执行已成为一个新的绩效瓶颈。利用交易执行中的平行做法是解决这个问题和进一步增加交易吞吐量的一个明确和直接的方法。虽然最近一些文献引入了货币控制机制,以平行执行智能合同交易,但所报告的速度远不理想。主要理由是,拟议的平行执行机制无法有效处理许多连锁应用程序中固有的冲突。在这项工作中,我们彻底研究Ethereum公司的历史交易执行痕迹。我们发现,应用中的女权冲突是限制执行过程中可利用的平行做法的一个主要因素。我们提议使用分隔式反制计和特别通融指示来打破应用冲突链,以便最大限度地实现潜在的速度。当我们评估最大平行速度时,这些技术将这一限制加倍到18x总体速度,而与序列执行相比,与序列执行相近。我们彻底研究Etheum Etheumer Trading of the constal laimal slaction (OCC) 也提议一个最有可能地使用OCC-chal-laction-laction-laction-laction-laction-laction-laction-laction-laction)。