solidity基础-recieve和send

recieve 接收token函数

pragma solidity >=0.7.0 <0.9.0;

contract ReceiveTest {

    receive() external payable{
    }

    fallback() external payable{       
    }

    function getBalance() public view returns(uint256){
        return address(this).balance;
    }
    
}

  

send 发送token函数

pragma solidity >=0.7.0 <0.9.0;
contract SendTest{

    function transfer(address payable _to) public payable{
        _to.transfer(msg.value);
    }

    function send(address payable _to) public payable{
       bool sent = _to.send(msg.value);
       require(sent, "Failed to send eth.");
    }

    function call(address payable _to) public payable{
        (bool sent, bytes memory data) = _to.call{value: msg.value}("test");
        require(sent, "Failed to send eth.");
    }
}

 

部署合约

先填写 token 数量

 

调用 “发送合约”, 复制粘贴地址

    

调用“接收合约”, 点击 getBalance, 可以看到获取到 3 个 token。 

    

 

但是, 一般使用 call, 其他两个 send 和 transfer 有安全问题。

 

posted @ 2022-06-06 15:21  apeNote  阅读(292)  评论(0编辑  收藏  举报