泰嶽區塊鏈--面試 solidity fallback函數

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章