Model to mitigate: Using DCR graphs to prevent vulnerabilities in smart contracts
Journal article, 2026

We propose a ‘Model to Mitigate’ methodology: designing a platform-agnostic model of smart contract business logic and analyzing it before implementation. Using Dynamic Condition Response (DCR) graphs, originally developed for modeling business processes, we formally specify smart contracts and introduce a trace-conformance notion that links DCR-level guarantees to Solidity execution traces. Our method captures high-level properties such as event ordering, role-based access control, and time constraints, enabling the identification of design-rooted vulnerabilities through the discipline of explicit modeling. The DCR formalism requires developers to make concrete decisions about access control, preconditions, initial states, and event ordering-decisions that, when left implicit until implementation, are a documented source of vulnerabilities. Our analysis of real-world exploited and audited smart contracts yields six key insights, demonstrating how DCR-based modeling can enhance smart contract security by surfacing design flaws before they reach deployment. While we validate the approach on existing smart contracts with known flaws (i. e., post-implementation scenarios), the proposed methodology is applicable during design time (pre-development).

Author

Mojtaba Eshghie

Royal Institute of Technology (KTH)

Wolfgang Ahrendt

Chalmers, Computer Science and Engineering (Chalmers), Formal methods

University of Gothenburg

Cyrille Artho

Royal Institute of Technology (KTH)

Thomas Troels Hildebrandt

University of Copenhagen

Gerardo Schneider

Chalmers, Computer Science and Engineering (Chalmers), Data Science and AI

University of Gothenburg

Journal of Logical and Algebraic Methods in Programming

2352-2208 (ISSN) 2352-2216 (eISSN)

Vol. 151 101131

Subject Categories (SSIF 2025)

Computer Sciences

Information Systems

Computer Systems

DOI

10.1016/j.jlamp.2026.101131

More information

Latest update

6/10/2026