A Concurrent Perspective on Smart Contracts

@inproceedings{Sergey2017ACP,
  title={A Concurrent Perspective on Smart Contracts},
  author={Ilya Sergey and Aquinas Hobor},
  booktitle={Financial Cryptography Workshops},
  year={2017}
}
In this paper, we explore remarkable similarities between multi-transactional behaviors of smart contracts in cryptocurrencies such as Ethereum and classical problems of shared-memory concurrency. We examine two real-world examples from the Ethereum blockchain and analyzing how they are vulnerable to bugs that are closely reminiscent to those that often occur in traditional concurrent programs. We then elaborate on the relation between observable contract behaviors and well-studied concurrency… 
Finding Concurrency Exploits on Smart Contracts
  • Yue Li
  • Computer Science
    2019 IEEE/ACM 41st International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)
  • 2019
TLDR
This work highlighted a general miner-side type of exploit, called concurrency exploit, which attacks smart contracts via generating malicious transaction sequences, and designed a systematic algorithm to automatically detect such exploits.
Temporal Properties of Smart Contracts
TLDR
Preliminary results of mechanically verifying some of such properties of smart contracts by embedding a smart contract language into the Coq proof assistant are reported on.
Towards Automatic Inference of Gas Bounds for Smart Contracts on the Ethereum Blockchain
TLDR
An application of SACO—a resource Static Analyzer for Concurrent Objects—to infer gas bounds on Ethereum smart contracts written in Solidity, and how the translation of smart contracts from Solidity into concurrent objects allows one to automatically derive parametric gas bounds.
Exploiting the laws of order in smart contracts
TLDR
EthRacer, an automatic analysis tool that runs directly on Ethereum bytecode and requires no hints from users, is built, providing compact event traces (witnesses) that human analysts can examine in only a few minutes per contract.
Towards a Formally Verified EVM in Production Environment
TLDR
The behavior of EVM is defined in Why3, a platform for deductive program verification, which facilitates the verification of different properties and serves as a powerful analysis basis for EVM and smart contracts.
Formal Verification of Smart Contracts from the Perspective of Concurrency
TLDR
The results show the potential advantage of using CSP and FDR tool to check the vulnerability in smart contracts especially from the perspective of concurrency, and adopt the CSP theory to formally model concurrent programs.
Concurrency Protocol Aiming at High Performance of Execution and Replay for Smart Contracts
TLDR
A novel efficient concurrency control scheme which is the first one to do optimization in both phases and outperforms state-of-art solutions significantly.
Verifying Smart Contracts with Cubicle
TLDR
The approach is a two-layer framework where the first part consists of a blockchain transactional model, while the second layer is a model of the smart contract itself, and lays the foundations for a complete and automatized framework for the design and certification of smart contracts.
OV: Validity-based Optimistic Smart Contracts
TLDR
A novel programming language, so-called OV, and a Solidity API are introduced to ease programing of optimistic smart contracts and help reasoning about a crucial property of optimistically executed smart contracts -- the validity of object states in trustless systems.
SoK: Development of Secure Smart Contracts - Lessons from a Graduate Course
TLDR
This work focuses on smart contracts, which are programs on top of blockchains and cryptocurrencies that allow parties to exchange valuable assets without mutual trust, with smart contracts controlling the interaction between the parties.
...
1
2
3
4
5
...

References

SHOWING 1-10 OF 45 REFERENCES
Making Smart Contracts Smarter
TLDR
This paper investigates the security of running smart contracts based on Ethereum in an open distributed network like those of cryptocurrencies, and proposes ways to enhance the operational semantics of Ethereum to make contracts less vulnerable.
Safer smart contracts through type-driven development
TLDR
It is shown how dependent and polymorphic types can make smart contract development safer by using the functional language Idris to describe smart contracts on the Ethereum platform and extended the Idris compiler with a backend for the Ethereum Virtual Machine.
Formal Verification of Smart Contracts: Short Paper
TLDR
This paper outlines a framework to analyze and verify both the runtime safety and the functional correctness of Ethereum contracts by translation to F*, a functional programming language aimed at program verification.
ETHEREUM: A SECURE DECENTRALISED GENERALISED TRANSACTION LEDGER
TLDR
The blockchain paradigm when coupled with cryptographically-secured transactions has demonstrated its utility through a number of projects, with Bitcoin being one of the most notable ones, and Ethereum implements this paradigm in a generalised manner.
Permission accounting in separation logic
TLDR
A lightweight logical approach to race-free sharing of heap storage between concurrent threads is described, based on the notion of permission to access, which mirrors the programming technique called permission counting.
Modular Reasoning about Separation of Concurrent Data Structures
TLDR
A new logic and a new style of specification for thread-safe concurrent data structures that allow clients to refine usage protocols and associate ownership of additional resources with instances of these data structures.
Mechanized verification of fine-grained concurrent programs
TLDR
This paper presents the first completely formalized framework for mechanized verification of full functional correctness of fine-grained concurrent programs, based on the recently proposed program logic FCSL.
A program logic for concurrent objects under fair scheduling
TLDR
The rely-guarantee style logic unifies thread-modular reasoning about both starvation-freedom and deadlock-freedom in one framework and establishes progress-aware abstraction for concurrent objects, which can be applied when verifying safety and liveness of client code.
Unifying refinement and hoare-style reasoning in a logic for higher-order concurrency
TLDR
CaReSL is presented, the first logic to support the use of granularity abstraction for modular verification of higher-order concurrent programs, and its effectiveness is demonstrated by using it to tackle a significant case study: the first formal proof of (partial) correctness for Hendler et al.'s "flat combining" algorithm.
Linearizability: a correctness condition for concurrent objects
TLDR
This paper defines linearizability, compares it to other correctness conditions, presents and demonstrates a method for proving the correctness of implementations, and shows how to reason about concurrent objects, given they are linearizable.
...
1
2
3
4
5
...