Formal Specification and Verification of Solidity Contracts with Events
\'Akos Hajdu, Dejan Jovanovi\'c, Gabriela Ciocarlie

TL;DR
This paper introduces a formal method for specifying and verifying Solidity smart contracts focusing on events, ensuring their correctness and trustworthiness in blockchain applications.
Contribution
It presents a source-level approach for formal specification and verification of Solidity events, implemented in the solc-verify tool.
Findings
Effective specification of events in Solidity contracts.
Successful verification demonstrated with multiple examples.
Enhanced trust in event correctness for blockchain applications.
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 specification of events in terms of the on-chain data that they track, and 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.
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.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
