目前,出现了多种智能合约审计工具,笔者整理了最常见的检测内容,可分为五大项、二十七小项。下面按分类对已有结果进行说明。
1、代码规范检测
此大项主要针对合约编写时的一些代码规范进行检测,共有十一小项。
1.1 ERC规范
包含了ETH常见的ERC20、ERC721、ERC1400、ERC1404、ERC223、ERC777等常见的合约标准检测,确保了开发人员能正确实现这些标准。
1.2 Transfer To Zero Address
在transfer、transferFrom、transferOwnership等敏感函数中,用户操作不可逆,所以建议开发者在这些函数实现中增加目标地址非零检查,避免用户误操作导致用户权限丢失和财产损失
1.3 TX Origin Authentication
tx.origin是Solidity的一个状态变量,它遍历整个调用栈并返回最初发送调用(或事务)的帐户的地址。在智能合约中使用此变量进行身份验证会使合约容易受到类似网络钓鱼的攻击。
1.4 Constructor Mistyping
构造函数仅在合约部署的时候被调用,合约owner的设置一般放在构造函数中,合约的构造函数还会执行初始化的操作。在使用function的方式定义构造函数时,如果函数名与合约名失配,就变成了一个普通函数。那么,合约将存在重大安全风险。
1.5 Complex Code In Fallback Function
合约的fallback函数通常用以接收一笔eth转账,但如果在fallback里实现过于复杂的逻辑,可能会将gas耗尽,导致转账不成功。
1.6 Unary Operation
当定义的操作的意图是将数字与变量+=相加但却意外地以错误的方式定义=+时&#x