【问题标题】:Why OpenZeppelin's address.sol says that plain call is unsafe in solidity为什么 OpenZeppelin 的 address.sol 说普通调用是不安全的
【发布时间】:2022-01-01 06:50:11
【问题描述】:

我正在研究 OpenZeppelin 的 ERC20.sol。在导入 Address.sol 时,我查看了它,大多数默认函数都被包装(?)或重新声明。

另外,我看到了这样的评论,即普通的 call 是函数调用的不安全替代品。那么我们应该避免使用call函数并在我们的代码中导入Address.sol并使用functionCall

所以我的问题是

  1. 为什么 OpenZeppelin 封装了默认函数。
  2. 应该避免使用普通的call 函数吗?为什么?
  3. call 函数中,我们应该使用来自Address.sol 的functionCall 吗?

【问题讨论】:

    标签: security blockchain ethereum solidity web3


    【解决方案1】:

    低级原生 call() 是一种安全且稍微便宜一些的气体 - 如果您知道自己在做什么的话。

    OpenZeppelin functionCall() 包装了原生 call() 并在此基础上提供验证。例如,如果您调用非合约地址或发送的value 比您的合约拥有的更多,它会使用自定义消息恢复。简单地说,它对开发者更友好。

    【讨论】:

      猜你喜欢
      • 2012-04-05
      • 1970-01-01
      • 2018-12-18
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 2018-08-23
      相关资源
      最近更新 更多