跳转至主要内容

通证集成检查清单

solidity智能合约安全性代币
中级
Trailofbits
构建安全的合约(opens in a new tab)
2020年8月13日
7 分钟阅读 minute read

与任意通证交互时遵循此检查清单。 确保你了解与每一项相关的风险,并证明这些规则的任何例外都是合理的。

为方便起见,所有Slither实用程序(opens in a new tab)都可以直接在通证地址上运行,例如:

使用Slither教程

slither-check-erc 0xdac17f958d2ee523a2206206994597c13d831ec7 TetherToken

要遵循此检查清单,你需要从Slither获得通证的以下输出:

- slither-check-erc [target] [contractName] [optional: --erc ERC_NUMBER]
- slither [target] --print human-summary
- slither [target] --print contract-summary
- slither-prop . --contract ContractName # requires configuration, and use of Echidna and Manticore

一般考虑因素

符合ERC标准

Slither包含一个实用程序slither-check-erc(opens in a new tab),用于检查通证是否符合许多相关的ERC标准。 使用slither-check-erc来检查:

Slither包括一个实用程序slither-prop(opens in a new tab),它可以生成单元测试和安全属性,可以发现许多常见的ERC缺陷。 使用slither-prop来检查:

最后,有一些特征是难以自动识别的。 手动检查这些条件:

  • Transfer和transferFrom不收取费用。通缩通证可能会导致意想不到的行为。
  • 从通证中获得的潜在利息也被考虑在内。 一些通证将利息分配给通证持有者。 如果不加以考虑,这种利息可能会被困于合约中。

合约构成

用户特权

通证稀缺性

对通证稀缺问题的审查需要人工审查。 检查这些情况:

  • 没有用户拥有大部分的供应。如果少数用户拥有大部分的通证,他们可以根据通证的再分配影响操作。
  • 总供应量充足。总供应量低的通证很容易被操纵。
  • 通证位于多个交易所。如果所有的通证都在一个交易所,那么交易所的危害就会影响到依赖通证的合约。
  • 用户了解大额资金或闪电贷款的相关风险。依靠通证余额的合约必须仔细考虑到拥有大额资金的攻击者或通过闪电贷款的攻击。
  • 通证不允许闪电铸币。 闪电铸币会导致余额和总供应量的大幅波动,这就需要在通证的运作中进行严格和全面的溢出检查。

上次修改时间: @nhsz(opens in a new tab), 2023年8月15日

本教程对你有帮助吗?