  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$.
