Popular blockchains such as Ethereum and several others execute complex transactions in the block through user-defined scripts known as smart contracts. Serial execution of smart contract transactions/atomic units (AUs) fails to harness the multiprocessing power offered by the prevalence of multi-core processors. By adding concurrency to the execution of AUs, we can achieve better efficiency and higher throughput. In this paper, we develop a concurrent miner that proposes a block by executing AUs concurrently using optimistic Software Transactional Memory systems (STMs). It efficiently captures independent AUs in the concurrent bin and dependent AUs in the block graph (BG). Later, we propose a concurrent validator that re-executes the same AUs concurrently and deterministically using the concurrent bin followed by the BG given by the miner to verify the block. We rigorously prove the correctness of concurrent execution of AUs. The performance benchmark shows that the average speedup for the optimized concurrent miner is $$5.21 \times$$ , while the maximum is $$14.96 \times$$ over the serial miner. The optimized validator obtains an average speedup of $$8.61 \times$$ to a maximum of $$14.65 \times$$ over the serial validator. The proposed miner outperforms $$1.02 \times$$ to $$1.18\times$$ , while the proposed validator outperforms $$1 \times$$ to $$4.46 \times$$ over state-of-the-art concurrent miners and validators, respectively. Moreover, the proposed efficient BG saves an average of $$2.29 \times$$ more block space when compared with the state-of-the-art.
Read full abstract