原文标题:Ethereum Smart Contract Analysis Tools:A Systematic Review

原文作者:SATPAL SINGH KUSHWAHA1, SANDEEP JOSHI1 et al.

原文链接:DOI 10.1109/ACCESS.2022.3169902

原文来源:IEEE Access

0X01 论文摘要

这篇论文主要讲智能合约存在的漏洞,并做了分类,对目前存在的智能合约分析工具(主要是以太坊solidity)做了总结,分为静态和动态。分别都有基于源码分析,基于EVM字节码分析以及基于两者分析的分析工具。目的是为了优化solidity代码的编写。

0x02 智能合约流程

这里值得注意的点就是
1.从solidity到字节码;
2.发布合约得到智能合约地址;
3.每个节点都有账本副本,所以很难伪造

流程细节:

以Alice和Bob之间的转账合同为例,如图5所示。
Alice和Bob达成了协议。

协议就是采用合同语言编写的(例如,以太坊中的solidity)。智能合约代码接下来通过编译器(例如,solc)编译,它生成机器码(或字节码)运行在智能合约客户端上的虚拟机(例如,EVM、JVM)或Docker容器之上。

智能合约客户端本质上是通过一个点对点的网络连接起来的。在区块链网络部署智能合约后,向客户端返回一个唯一的合同地址,以支持未来的交互。

此后,用户可以通过在智能合约中的交易与区块链网络互动(例如,从Alice的数字钱包中扣除指定数量的钱,增加对应鲍勃钱包里的钱)。

值得一提的是,每个交易都需要通过如图5所示的共识算法跨区块链网络进行验证。
验证交易,然后将操作附加到交易列表中。由于每个节点都有一个更新后的区块链的副本,因此很难伪造区块链数据

0x03 漏洞分析

这里大概讲的都是历史上出现过的合约漏洞,还有就是累赘代码的使用。

总结

通读下来,想得到的解答就是有没有可能实现智能合约代码审计并且输出修改意见,答案是有的;
还有就是Gas花费的优化也是可行的,目前看来就是删掉一些冗余代码;
至于这个方向有什么好做的,感觉还是得往深了看,我们还是站在外面浅尝则止吧!

欢迎关注我的个人公众号