Solidity:发送ETH (transfer,send,call)

本文介绍了在Solidity中如何发送ETH,包括transfer、send和call三种方法的使用,并讨论了防止重入攻击的策略。官方推荐使用call触发fallback或receive函数来发送ETH,同时提醒避免直接通过call调用不安全合约的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注:学习笔记,仅供参考,如有错误,烦请指正

如何发送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(二进制编码)&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值