注:学习笔记,仅供参考,如有错误,烦请指正
如何发送ETH币?
您可以通过以下方式将以太币发送到其它合约
- transfer(2300 gas,抛出错误)
- send(2300 gas,返回布尔bool值)
- call(转发所有gas或设置gas,返回布尔值)
您应该使用哪种方法?
call 2019年12月后推荐与重入防护相结合使用的方法。
通过以下方式防止重新进入
- 在调用其它合约之前进行所有状态更改
- 使用重入保护修饰符
call 是 address 类型的低级成员函数,它用来与其他合约交互。它的返回值为 (bool, data),分别对应 call 是否成功以及目标函数的返回值。
call 是 solidity 官方推荐的通过触发 fallback 或 receive 函数发送 ETH 的方法。不推荐用 call 来调用另一个合约,因为当你调用不安全合约的函数时,你就把主动权交给了它。推荐的方法仍是声明合约变量后调用函数,当我们不知道对方合约的源代码或 ABI,就没法生成合约变量;这时,我们仍可以通过 call 调用对方合约的函数。
call的使用规则
call的使用规则如下:
目标合约地址.call(二进制编码)&#