← All papers
First page of Tridirectional Discriminating-Power Formal Verification of Smart Contract Reentrancy Defense Against Production-Deployed Solidity Source

Tridirectional Discriminating-Power Formal Verification of Smart Contract Reentrancy Defense Against Production-Deployed Solidity Source

Ray Iskander

cs.CR Jun 1, 2026 · v1
Machine-checks OpenZeppelin reentrancy-guard correctness against a Lean 4 state-machine model of production Solidity.
We present the first machine-checked correctness proof of the OpenZeppelin reentrancy-guard pattern against a Lean 4 state-machine model of production-deployed Solidity source. All thirteen theorems are machine-checked with zero sorry, zero user-introduced axioms, and an axiom footprint bounded by [propext] (a standard mathlib4 axiom), gated under continuous integration. Smart contract reentrancy has caused over US$500M in documented losses since 2016, with the DAO 2016 attack draining ~3.6M ETH and forcing the hard fork that split Ethereum. The OpenZeppelin ReentrancyGuard pattern is the de facto defense across production DeFi, yet no prior work has established its discriminating power: that the guard blocks attacks on vulnerable instances, preserves correct execution for non-attacking transactions, and distinguishes adjacent safe and vulnerable variants. Prior efforts formalized either guard correctness on toy contracts or attack feasibility on isolated instances - not both directions plus boundary cases against production source. We verify three production instantiations - DAO 2016, Compound v2, and Aave V3 flashLoan - plus a minimal-diff mutant of Aave V3's flashLoan (flashLoanVulnerable) isolating one security-critical difference, via mutation testing. The tridirectional structure pairs (a) attack reproduction of the DAO 2016 pattern, (b) a correctness proof for Compound v2, and (c) a boundary-case proof distinguishing Aave V3's CEI-correct flashLoan from the mutant. A capstone meta-theorem composes the three under a no-retrofit discipline, demonstrated at the first cross-protocol stress test (Compound v2 to Aave V3); broader-family portability is future work. Full Lean 4 source, CI config and reproduction commands are at https://github.com/rayiskander2406/qanary-contracts, reproducible at v1.6-phase7-closure (substrate: v1.3-layer6-closure).

Smart contract reentrancy has caused over US$500M in losses since 2016, yet the widely-adopted OpenZeppelin ReentrancyGuard pattern lacked a machine-checked correctness proof against production-deployed Solidity source. Prior work formalized either guard correctness on toy contracts or attack feasibility on isolated instances, but never both directions plus boundary cases.

The authors build a Lean 4 state-machine model of production Solidity source and verify the OpenZeppelin reentrancy guard in three directions: negative (attack reproduction for DAO 2016), positive (correctness for Compound v2 cToken), and boundary (distinguishing Aave V3 flashLoan from a minimal-diff vulnerable mutant). Thirteen theorems are machine-checked with zero sorry and zero user-introduced axioms, with an axiom footprint bounded by propext. A capstone meta-theorem composes the three directions under a no-retrofit discipline demonstrated at a cross-protocol stress test from Compound v2 to Aave V3. CI gates per-theorem axiom-record verification on every push.

All thirteen theorems pass Lean 4 kernel checking with zero sorry and only propext as axiom footprint. The tridirectional structure covers three production protocols (DAO 2016, Compound v2, Aave V3) plus a mutation-testing variant, with tagged-commit reproducibility at v1.6-phase7-closure.

LayerTheoremsInformal statementAxiom record
6-A1 + 5DAO 2016 attack trace derivable from contract source semantics[propext]-only
6-B1 + 2Compound v2 cToken correctly implements OZ guard pattern[propext]-only
6-C2 + 1Aave V3 flashLoan correct; flashLoanVulnerable fails; CEI lemma[propext]-only
Layer structure of the 13 theorems