Solidity transfer 实现转账

使用 Solidity 智能合约转账可以使用 transfer 函数。智能合约里面需要有一定的以太,不然合约将无法给调用者发送以太,可以在创建合约时给合约发送一定的以太来测试。

具有转账功能的智能合约的 constructor 必须显式的指定为 payable。

// SPDX-License-Identifier: SimPL-3.0
pragma solidity ^0.7.0;
contract  cs{
    constructor() payable{
    }
    
    function getETH() public{
        require(address(this).balance>=1 ether,"no money");
        address payable _owner = msg.sender;
        _owner.transfer(1 ether);
    }
    
    fallback() external{
    }
    
    receive() payable external{
    }
}

transfer、send、call都可以在合约之间相互转账,但是用法有很大的不同!1. transfer如果异常会转账失败,抛出异常(等价于require(send()) ...