# Adding Concurrency to Smart Contracts

**Authors:** Thomas Dickerson, Paul Gazzillo, Maurice Herlihy, Eric Koskinen

arXiv: 1702.04467 · 2017-02-16

## TL;DR

This paper introduces a method to enable parallel execution of smart contracts in blockchain systems, significantly improving throughput by leveraging software transactional memory techniques for concurrent execution and deterministic re-execution.

## Contribution

It proposes a novel approach allowing miners and validators to execute smart contracts in parallel while maintaining correctness, using a deterministic fork-join schedule derived from speculative execution.

## Key findings

- Achieved up to 1.69x speedup with three threads on JVM benchmarks.
- Enabled parallel execution of smart contracts without compromising correctness.
- Demonstrated practical benefits of concurrency in blockchain smart contract execution.

## Abstract

Modern cryptocurrency systems, such as Ethereum, permit complex financial transactions through scripts called smart contracts. These smart contracts are executed many, many times, always without real concurrency. First, all smart contracts are serially executed by miners before appending them to the blockchain. Later, those contracts are serially re-executed by validators to verify that the smart contracts were executed correctly by miners.   Serial execution limits system throughput and fails to exploit today's concurrent multicore and cluster architectures. Nevertheless, serial execution appears to be required: contracts share state, and contract programming languages have a serial semantics.   This paper presents a novel way to permit miners and validators to execute smart contracts in parallel, based on techniques adapted from software transactional memory. Miners execute smart contracts speculatively in parallel, allowing non-conflicting contracts to proceed concurrently, and "discovering" a serializable concurrent schedule for a block's transactions, This schedule is captured and encoded as a deterministic fork-join program used by validators to re-execute the miner's parallel schedule deterministically but concurrently.   Smart contract benchmarks run on a JVM with ScalaSTM show that a speedup of of 1.33x can be obtained for miners and 1.69x for validators with just three concurrent threads.

## Full text

_Full body text omitted from this summary view._ Fetch the complete paper as Markdown: https://tomesphere.com/paper/1702.04467/full.md

## Figures

2 figures with captions in the complete paper: https://tomesphere.com/paper/1702.04467/full.md

## References

22 references — full list in the complete paper: https://tomesphere.com/paper/1702.04467/full.md

---
Source: https://tomesphere.com/paper/1702.04467