Skip to main navigation Skip to search Skip to main content

Formal specification and verification of solidity contracts with events

  • Budapest University of Technology and Economics
  • SRI International

Research output: Chapter in Book/Report/Conference proceedingConference contributionpeer-review

4 Scopus citations

Abstract

Events in the Solidity language provide a means of communication between the on-chain services of decentralized applications and the users of those services. Events are commonly used as an abstraction of contract execution that is relevant from the users’ perspective. Users must, therefore, be able to understand the meaning and trust the validity of the emitted events. This paper presents a source-level approach for the formal specification and verification of Solidity contracts with the primary focus on events. Our approach allows the specification of events in terms of the on-chain data that they track, and the predicates that define the correspondence between the blockchain state and the abstract view provided by the events. The approach is implemented in solc-verify, a modular verifier for Solidity, and we demonstrate its applicability with various examples.

Original languageEnglish
Title of host publication2nd Workshop on Formal Methods for Blockchains, FMBC 2020
EditorsBruno Bernardo, Diego Marmsoler
ISBN (Electronic)9783959771696
DOIs
StatePublished - Dec 2020
Event2nd Workshop on Formal Methods for Blockchains, FMBC 2020 - Virtual, Los Angeles, United States
Duration: 20 Jul 202021 Jul 2020

Publication series

NameOpenAccess Series in Informatics
Volume84
ISSN (Print)2190-6807

Conference

Conference2nd Workshop on Formal Methods for Blockchains, FMBC 2020
Country/TerritoryUnited States
CityVirtual, Los Angeles
Period20/07/2021/07/20

Keywords

  • Events
  • Smart contracts
  • Solidity
  • Specification
  • Verification

Fingerprint

Dive into the research topics of 'Formal specification and verification of solidity contracts with events'. Together they form a unique fingerprint.

Cite this