Gigahorse: Thorough, Declarative Decompilation of Smart Contracts
The rise of smart contracts - autonomous applications running on blockchains - has led to a growing number of threats, necessitating sophisticated analysis. However, smart contracts, which transact valuable tokens and cryptocurrencies, are compiled to very low-level bytecode. It is estimated that high-level source code is publicly available for under 1% of contracts on Ethereum (the most popular smart-contract blockchain).
In this paper, we present the Gigahorse toolchain. At its core is a reverse compiler (i.e., a decompiler). The decompiler transforms smart contracts from Ethereum bytecode into a high-level 3-address code representation, which can be analyzed further in a uniform way. Decompilation obviates the need for a contract’s source, allowing the analysis of both new and deployed contracts. Gigahorse advances the state of the art on several fronts. It gives the highest analysis precision and completeness among decompilers for Ethereum smart contracts - e.g., Gigahorse can decompile over 99.98% of deployed contracts, compared to 88% for the recently-published Vandal decompiler and under 50% for the state-of-the-practice Porosity decompiler. Importantly, Gigahorse offers a full-featured toolchain for further analyses (and a “batteries included” approach, with multiple clients already implemented), together with the highest performance and scalability. Key to these improvements is Gigahorse’s use of a declarative, logic-based specification, which allows high-level insights to inform low-level decompilation.
Fri 31 MayDisplayed time zone: Eastern Time (US & Canada) change
16:00 - 17:20
|Recovering Variable Names for Minified Code with Usage ContextsTechnical Track|
|Gigahorse: Thorough, Declarative Decompilation of Smart ContractsTechnical Track|
|Probabilistic DisassemblyTechnical Track|