Precise Static Identification of Ethereum Storage Variables
By: Sifis Lagouvardos , Yannis Bollanos , Michael Debono and more
Potential Business Impact:
Finds hidden data in blockchain code.
Smart contracts are small programs that run autonomously on the blockchain, using it as their persistent memory. The predominant platform for smart contracts is the Ethereum VM (EVM). In EVM smart contracts, a problem with significant applications is to identify data structures (in blockchain state, a.k.a. "storage"), given only the deployed smart contract code. The problem has been highly challenging and has often been considered nearly impossible to address satisfactorily. (For reference, the latest state-of-the-art research tool fails to recover nearly all complex data structures and scales to under 50% of contracts.) Much of the complication is that the main on-chain data structures (mappings and arrays) have their locations derived dynamically through code execution. We propose sophisticated static analysis techniques to solve the identification of on-chain data structures with extremely high fidelity and completeness. Our analysis scales nearly universally and recovers deep data structures. Our techniques are able to identify the exact types of data structures with 98.6% precision and at least 92.6% recall, compared to a state-of-the-art tool managing 80.8% and 68.2% respectively. Strikingly, the analysis is often more complete than the storage description that the compiler itself produces, with full access to the source code.
Similar Papers
EthCluster: An Unsupervised Static Analysis Method for Ethereum Smart Contract
Cryptography and Security
Finds hidden bugs in online money code.
A Comprehensive Study of Exploitable Patterns in Smart Contracts: From Vulnerability to Defense
Cryptography and Security
Finds and fixes dangerous code in digital money systems.
Towards Source Mapping for Zero-Knowledge Smart Contracts: Design and Preliminary Evaluation
Software Engineering
Helps fix and check smart contracts better.