Blockchain programs manage valuable assets like crypto-currencies and tokens, and implement protocols for decentralized finance (DeFi), logistics and logging, where security is important. To find potential issues, numerous tools support developers and analysts. Being a recent technology, blockchain technology and programs still evolve fast, making it challenging for tools and developers to keep up with the changes. In this work, we study the evolution of tools and patterns detected. We focus on Ethereum, the crypto ecosystem with most developers and most contracts, by far. We investigate the changes in the tools' behavior in terms of detected weaknesses, quality and behavior, and agreements between the tools. We are the first to fully cover the entire body of deployed bytecode on the Ethereum mainchain. We achieve full coverage by considering bytecodes as equivalent if they share the same skeleton. The skeleton of a bytecode is obtained by omitting functionally irrelevant parts. This reduces the 48 million contracts deployed on Ethereum to 248,328 contracts with distinct skeletons. For bulk execution, we utilize the open-source framework SmartBugs that facilitates the analysis of Solidity smart contracts, and enhance it to also accept bytecode as the only input. Moreover, we integrate six further tools that accept bytecode. The execution of the 13 included tools took 31 years in total. While the tools are reporting a total of 1,307,486 potential weaknesses, over time we observe a decreasing number of reported vulnerabilities and tools degrading to varying degrees.
翻译:区块链程序管理着价值宝贵的资产,如加密货币和代币,并实现去中心化金融(DeFi)、物流和日志等协议,安全性至关重要。为了发现潜在问题,许多工具支持开发人员和分析人员。作为一项较新的技术,区块链技术和程序仍然快速发展,使得工具和开发人员跟上变化变得具有挑战性。在这项工作中,我们研究了工具和检测到的模式的演变。我们侧重于以太坊(迄今为止拥有最多开发人员和最多合约的加密生态系统)。我们研究了工具在检测弱点、质量和行为以及工具之间的协议方面的行为变化。我们是第一个完全覆盖以太坊主链上部署字节码的人。通过将字节码视为具有相同骨架的等效字节码,我们实现了完全覆盖。字节码的骨架是通过省略功能无关部分获得的。这将以太坊上部署的4800万合约减少到具有248,328个不同骨架的合约。为了进行批量执行,我们使用了开源框架SmartBugs,该框架方便对Solidity智能合约进行分析,并增强了它以接受字节码作为唯一输入。此外,我们还集成了六个接受字节码的工具。执行包括13个工具的过程总共需要31年。虽然工具报告了1307486个潜在的弱点,但随着时间的推移,我们观察到报告的漏洞数量正在减少,而工具正在以不同的程度退化。