TL;DR
This paper introduces a novel specification methodology and reasoning technique for Ethereum smart contracts that handle unverified code, re-entrancy, and resource transfers, enabling more accurate and modular verification.
Contribution
The paper presents the first specification and verification approach tailored for smart contracts that addresses unverified code, re-entrancy, and resource-based specifications.
Findings
Successfully verified real-world smart contracts using the new approach.
Enabled modular reasoning about multiple interacting contracts.
Provided concise, resource-based specifications that prevent common errors.
Abstract
Smart contracts are programs that execute inside blockchains such as Ethereum to manipulate digital assets. Since bugs in smart contracts may lead to substantial financial losses, there is considerable interest in formally proving their correctness. However, the specification and verification of smart contracts faces challenges that do not arise in other application domains. Smart contracts frequently interact with unverified, potentially adversarial outside code, which substantially weakens the assumptions that formal analyses can (soundly) make. Moreover, the core functionality of smart contracts is to manipulate and transfer resources; describing this functionality concisely requires dedicated specification support. Current reasoning techniques do not fully address these challenges, being restricted in their scope or expressiveness (in particular, in the presence of re-entrant…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
