Solidity 发送Eth

Solidity 在智能合约中有三种方式发送 Eth。

transfer:使用 transfer 发送 Eth,会带有 2300 个gas,如果失败,就会 revert。

send:使用 send 发送 Eth,会带有 2300 个gas,并且返回一个 bool 值表示是否成功。

call:使用 call 发送 Eth,会发送所有剩余的 gas,并且返回表示是否成功 bool 值和 data 数据。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SendEther {
    constructor() payable{}

    // 允许接收 Eth
    receive() external payable {}

    function transferEth(address payable _to) external payable {
        _to.transfer(100);
    }
        
    function sendEth(address payable _to) external payable {
        bool success = _to.send(100);
        require(success, "send failed");
    }

    function callEth(address payable _to) external payable {
        (bool success, ) = _to.call{value:100}("");
        require(success, "call failed");
    }
}

contract ReceiveEther {
    event log(uint amount, uint gas);

    // 允许接收 Eth
    receive() external payable {
        emit log(msg.value, gasleft());
    }
}

下一章:Solidity 自毁合约 selfdestruct

Solidity 自毁函数 selfdestruct 由以太坊智能合约提供,用于销毁区块链上的合约系统。当合约执行自毁操作时,合约账户上剩余的以太币会强制发送给指定的目标,然后其存储和代 ...