以上三种转账方式都属于地址的成员属性(members of address)。
参见地址成员类型
Transfer
如果当前合约的余额不够大或者 Ether转账被接收账户拒绝,转账功能将失败。接收方智能合约应定义回退函数,否则转账调用将引发错误。transfer函数在失败时恢复。另外它被硬编码以防止重入攻击(这句话不是很能理解)。
示例1:
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract AddressFunction {
function transfer(address payable _to) public payable {
_to.transfer(msg.value);
}
}
测试
Send
Send是和Transfer具有同等功能的低级api。如果执行失败,当前合约不会因为异常而停止,但会返回false。
示例2:
functi