面试题:fallback函数功能描述。实现一个fallback函数。
首选这个面试题,是看大家了解一下solidity的fallback函数功能。
那就直接来聊一下 solidity 的fallback函数。 solidity的fallback函数这版本5和版本6有很大的改动。
1、fallback函数的功能。
fallabck函数是solidity里面实现的一个无名函数。
功能:
接受一个未知函数调用或者接受直接的转账。
特点:
a、这个函数必须是加external payable两个修饰符
b 、这fallback函数不接受任何参数
c 、当用户调用此合约时找不到对应的payable函数后,就会进入这个函数。
d、用户直接往合约转账积分(Tai积分)的时候就会进入
2、fallback V5版本和V6版本的差异和实现
V5 版本solidity 的fallback函数实现很简单。
function() external payable{
x =1;
y = msg.value;
}
函数定义就是这样子,function() external payable,但是里面实现的内容都可以自己实现。只要用户给的gas够多,就可以执行很多动作。
V6 版本solidity 的fallback 实现。
fallback() external payable {x = 1;k=1; y = msg.value; }
receive() external payable {
x = 2;
y = msg.value;
}
这个V6版本和V5版本就完全不一样了,必须是配对实现,没有function,只有一个fallback,但是添加了一个receive,fallback函数里面的函数体,其实不执行。主要的执行的是receive函数。大家可以通过调试来进行确认。
另外一个知识点:这个回调函数是支持转账为0 的转账的。
如果想提高自己APP的Gas消耗排名,这个就是一个必须要实现的功能。