  Groundhog is a novel design for a smart contract execution engine based
around concurrent execution of blocks of transactions. Unlike prior work,
transactions within a block in Groundhog are not ordered relative to one
another. Instead, our key design insights are first, to design a set of
commutative semantics that lets the Groundhog runtime deterministically resolve
concurrent accesses to shared data. Second, some storage accesses (such as
withdrawing money from an account) conflict irresolvably; Groundhog therefore
enforces validity constraints on persistent storage accesses via a
reserve-commit process. These two ideas give Groundhog a set of semantics that,
while not as powerful as traditional sequential semantics, are flexible enough
to implement a wide variety of important applications, and are strictly more
powerful than the semantics used in some production blockchains today. Unlike
prior smart contract systems, transactions throughput never suffers from
contention between transactions. Using 96 CPU cores, Groundhog can process more
than half a million payment transactions per second, whether between 10M
accounts or just 2.
