编写合约时,默认情况下,是无法向这个合约转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
来源:oschina
链接:https://my.oschina.net/u/4564900/blog/4781167