Treffer: An Operational Semantics for Yul ; Lecture Notes in Computer Science ; Software Engineering and Formal Methods. SEFM 2024

Title:
An Operational Semantics for Yul ; Lecture Notes in Computer Science ; Software Engineering and Formal Methods. SEFM 2024
Contributors:
Madeira, Alexandre and Knapp, Alexander, Other, Science Foundation Ireland (SFI for RF), FY23-1127, 13/RC/2094_2
Publisher Information:
Springer Nature Switzerland
Publication Year:
2025
Collection:
The University of Dublin, Trinity College: TARA (Trinity's Access to Research Archive)
Document Type:
Konferenz conference object
File Description:
application/pdf
Language:
English
DOI:
10.1007/978-3-031-77382-2_19
Rights:
Y ; restrictedAccess
Accession Number:
edsbas.E7BA04E5
Database:
BASE

Weitere Informationen

We present a big-step and small-step operational semantics for Yul — the intermediate language used by the Solidity compiler to produce EVM bytecode — in a mathematical notation that is congruous with the literature of programming languages, lends itself to language proofs, and can serve as a precise, widely accessible specification for the language. Our two semantics stay faithful to the original, informal specification of the language but also clarify under-specified cases such as void function calls. Our presentation allows us to prove the equivalence between the two semantics. We also implement the small-step semantics in an interpreter for Yul which avails of optimisations that are provably correct. We have tested the interpreter using tests from the Solidity compiler and our own. We envisage that this work will enable the development of verification and symbolic execution technology directly in Yul, contributing to the Ethereum security ecosystem, as well as aid the development of a provably sound future type system.