2022 · Journal article
Elipmoc: Advanced Decompilation of Ethereum Smart Contracts
Elipmoc decompiles Ethereum Virtual Machine bytecode into a structured three-address intermediate representation for security analyses and reverse engineering. Built as an evolution of the Datalog-based Gigahorse decompiler, it adds transactional context sensitivity, path-sensitive inference of function arguments and returns with path merging, and fully context-sensitive reconstruction of private functions. On a uniform random sample of 5,000 unique mainnet contracts first deployed between April and September 2021, the authors report fully resolved operands for 99.5% of contracts versus 62.8% for Gigahorse, 67% more unique external-call signatures than Etherscan’s Panoramix, and over 5x faster decompilation.
Scope and limitations
Targets EVM bytecode only. The metrics are operand resolution, structured control flow, function and jump-target precision, external-call and event coverage, timeouts and speed against the 2022 Gigahorse artifact and Panoramix; they do not measure equivalence to or recovery of original Solidity source, and the output is three-address IR rather than recompilable code. Experiments used one 5,000-contract sample from a five-month 2021 deployment window, a 120-second per-contract cutoff and Souffle 2.0.2. JEB, Trustlook SECaaS and EtherSolve were not compared, and EtherVM, Porosity and Vandal were excluded as inferior or unmaintained. Reported vulnerability discoveries built on Elipmoc are described as end-to-end impact, not a systematic evaluation.
Why it fits this collection
Adds a static EVM bytecode decompiler that DiSCo uses as a baseline, extending the bibliography’s smart-contract decompilation coverage.
Publication and review details
- Venue
- Proceedings of the ACM on Programming Languages (OOPSLA 2022)
- Status
- Journal article
- Publication / posting date
- April 29, 2022
- Date source
- ACM’s Crossref deposit records published/print and online publication on 2022-04-29; the article footer gives April 2022. The OOPSLA conference dates are not substituted for this publication date.
- DOI
- 10.1145/3527321
Crossref and the author-hosted final PDF agree on the four-author order, the DOI, volume 6, issue OOPSLA1 and pages 1–27; the PDF numbers the article 77, and Crossref records a CC BY 4.0 license. Crossref’s title is in sentence case, while the PDF uses title case. No arXiv preprint was found. The code link is the Gigahorse toolchain that implements Elipmoc; its README cites this paper and a later 2025 paper on further changes. At reviewed master commit 1b06cef (2026-09-14), the LICENSE file is BSD 3-Clause with material from the University of Sydney marked in individual files, while the GitHub API reports NOASSERTION. Current setup requires recursive submodules, Souffle 2.3 or 2.4.1, Boost, Z3 and Python 3.13 through uv, unlike the paper’s Souffle 2.0.2 and Python 3.8.2, so the snapshot is not the paper’s experimental configuration. The gigahorse-toolchain repository is not curated here as a tool record. No code or experiments were run.
Sources reviewed
Source review only; experiments were not rerun for this collection. Cite the original authors using the linked paper or BibTeX.
Primary sources
- https://dl.acm.org/doi/10.1145/3527321
- https://api.crossref.org/works/10.1145/3527321
- https://yanniss.github.io/elipmoc-oopsla22.pdf
- README.md GitHub · nevillegrech/gigahorse-toolchain · Revision 1b06cef
- LICENSE GitHub · nevillegrech/gigahorse-toolchain · Revision 1b06cef