向合约地址转账

前提是你 提交于 2020-12-08 16:58:30

编写合约时,默认情况下,是无法向这个合约转ETH的,如果你发起一笔转账交易,目的地址是合约地址,而这个合约地址的代码没有进行特殊处理的话,那么,这笔交易会失败。

那么,如何让合约能够接收转账呢?

solidity 0.6之前版本

当合约接收以太时,合约会使用特殊的fallback函数来接收,如果合约没有定义fallback函数,那么交易就会失败。

解决方案就是定义如下的fallabck函数接口:

    function() external payable{
    // some code
    }

solidity 0.6之后版本

如果使用solidity 0.6之后的版本,上面的代码会报错如下:

Expected a state variable declaration. If you intended this as a fallback function or a function to handle plain ether transactions,
use the "fallback" keyword or the "receive" keyword instead.

需要改为:

    function () external payable {
        // 其他逻辑
    }

参考:https://medium.com/better-programming/solidity-0-6-you-might-be-sending-ether-all-wrong-1e119e1ffc27

关于fallback,有很多更深入的知识。 https://blog.csdn.net/xiaoyue2019/article/details/107648343

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!