Smart contracts are programs that are deployed and executed on the blockchain. Typically, smart contracts govern assets; popular smart contracts can govern assets worth millions. Just like traditional programs, smart contracts are subject to programming mistakes. However, a major difference is that smart contracts cannot be patched once deployed. Several approaches have been studied to improve smart contract security, by detecting bugs prior to deployment, allowing contracts to be updated, or modifying clients to prevent attacking transactions. The most elegant solution would be to automatically eliminate bugs prior to deployment. Merely identifying bugs is not enough. This became evident when the Parity wallet was hacked a second time after being manually patched following a security audit. Automatic pre-deployment patching offers a powerful promise to strengthen smart contract defenses. Current approaches are limited in the types of vulnerabilities that can be patched, in the flexibility of the patching process, and in scalability. In this paper we propose Elysium, a scalable approach towards automatic smart contract repair, that combines template-based patching with semantic patching by inferring context information from the bytecode. Elysium can currently automatically patch 7 known vulnerabilities in smart contracts using external bug-finding tools, and it can easily be extended with new templates and new bug-finding tools. We evaluate effectiveness and correctness of Elysium using 3 different datasets by replaying more than 500K transactions against patched contracts. We find that Elysium outperforms existing tools by patching at least 30% more contracts. Finally, we compare the overhead in terms of deployment and transaction cost increase. In comparison to other tools, Elysium minimizes transaction cost (up to a factor of 1.9), for only a marginally higher deployment cost.
翻译:智能合同通常是在链链上部署和执行的程序。 通常, 智能合同是用来管理资产的。 普通情况下, 智能合同是用来管理资产; 大众智能合同可以管理价值数百万的资产。 就像传统程序一样, 智能合同也会受到编程错误的影响。 但是, 重大区别在于智能合同一旦部署后无法补补补。 已经研究了几种方法来改善智能合同安全, 在部署前发现错误, 允许更新合同, 或者修改客户以防止交易。 最优的解决方案是自动消除在部署之前的错误。 仅仅识别错误是不够的。 当Paity 钱包在安全审计后手工补足后第二次被黑入时, 这一点就变得很明显了。 自动部署前补补补提供了加强智能合同防御的有力承诺。 目前的方法在易补补, 在部署过程的灵活度上, 或缩放性 。 在本文中,我们提出“ 精密性合同”, 一种通缩性方法将基于模板的补补补码方法, 将基于模板的补补码工具与从前编码中推断的背景信息合并起来。 。 Elyiredial deal devalal ladeal ladeal la ladeal ladeal lades 30 lade lade lade lade la la lax lax lax lax lax lax