面試題: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消耗排名,這個就是一個必須要實現的功能。