“Verifereum logo”

Formal semantics of the Ethereum Virtual Machine in HOL4

Verifereum is an executable formal semantics of the Ethereum Execution Layer’s EVM, mechanised in the HOL4 theorem prover. The semantics runs inside the logic, which is how it is checked against Ethereum’s conformance tests, and it is the foundation for machine-checked proofs about EVM bytecode: theorems about the semantics itself, a program logic for contracts, and compiler verification targeting the EVM. Audits find bugs; proofs rule out whole classes of them, and Ethereum’s small, deterministic programs are a good fit for that.

Status

The semantics targets the live fork, Osaka, and is tested against the 17550 Osaka blockchain tests in the Ethereum Execution Spec Tests (EEST) v21.0.1, in two ways. The checked runner evaluates each test inside the logic, so every result is a theorem; a full run takes about five hours on 16 cores, and the last one passed 17487 of them, 99.6% (checked results). The unchecked runner compiles the same definitions to native code and runs them without proof, which takes about half an hour on CI; it passed 17530, 99.9% (unchecked results). The 43 tests that only the unchecked runner passes time out in the checked one. The 20 tests both fail all involve the EIP-7002 and EIP-7251 request contracts, which the semantics models instead of executing their code, so it can’t follow the tests that modify, break or deploy them (issue #177).

What’s in the repository

The repository is GPLv3. It contains:

News

Talks

Get involved