A minimal core calculus for Solidity contracts

08/06/2019
by   Massimo Bartoletti, et al.
0

The Ethereum platform supports the decentralized execution of smart contracts, i.e. computer programs that transfer digital assets between users. The most common language used to develop these contracts is Solidity, a Javascript-like language which compiles into EVM bytecode, the language actually executed by Ethereum nodes. While much research has addressed the formalisation of the semantics of EVM bytecode, relatively little attention has been devoted to that of Solidity. In this paper we propose a minimal calculus for Solidity contracts, which extends an imperative core with a single primitive to transfer currency and invoke contract procedures. We build upon this formalisation to give semantics to the Ethereum blockchain. We show our calculus expressive enough to reason about some typical quirks of Solidity, like e.g. re-entrancy.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/04/2018

Executable Operational Semantics of Solidity

Bitcoin has attracted everyone's attention and interest recently. Ethere...
research
11/24/2019

ContractGuard: Defend Ethereum Smart Contracts with Embedded Intrusion Detection

Ethereum smart contracts are programs that can be collectively executed ...
research
06/01/2022

Not so immutable: Upgradeability of Smart Contracts on Ethereum

A smart contract that is deployed to a blockchain system like Ethereum i...
research
04/13/2019

Flint for Safer Smart Contracts

The Ethereum blockchain platform supports the execution of decentralised...
research
05/12/2020

Blockchain Superoptimizer

In the blockchain-based, distributed computing platform Ethereum, progra...
research
01/14/2021

DeFi-ning DeFi: Challenges Pathway

The decentralized and trustless nature of cryptocurrencies and blockchai...
research
11/08/2017

Simplicity: A New Language for Blockchains

Simplicity is a typed, combinator-based, functional language without loo...

Please sign up or login with your details

Forgot password? Click here to reset