सॉलिडिटी - फॉलबैक फंक्शन

फ़ॉलबैक फ़ंक्शन एक अनुबंध के लिए उपलब्ध एक विशेष फ़ंक्शन है। इसकी निम्नलिखित विशेषताएं हैं -

  • यह तब कहा जाता है जब अनुबंध पर एक गैर-मौजूद फ़ंक्शन कहा जाता है।

  • इसे बाहरी चिह्नित करना आवश्यक है।

  • इसका कोई नाम नहीं है।

  • इसका कोई तर्क नहीं है

  • यह किसी भी चीज को वापस नहीं कर सकता है।

  • इसे प्रति अनुबंध एक परिभाषित किया जा सकता है।

  • यदि भुगतान योग्य चिह्नित नहीं है, तो यह अपवाद को फेंक देगा यदि अनुबंध डेटा के बिना सादा ईथर प्राप्त करता है।

निम्नलिखित उदाहरण प्रति अनुबंध में एक फॉलबैक फ़ंक्शन की अवधारणा को दर्शाता है।

उदाहरण

pragma solidity ^0.5.0;

contract Test {
   uint public x ;
   function() external { x = 1; }    
}
contract Sink {
   function() external payable { }
}
contract Caller {
   function callTest(Test test) public returns (bool) {
      (bool success,) = address(test).call(abi.encodeWithSignature("nonExistingFunction()"));
      require(success);
      // test.x is now 1

      address payable testPayable = address(uint160(address(test)));

      // Sending ether to Test contract,
      // the transfer will fail, i.e. this returns false here.
      return (testPayable.send(2 ether));
   }
   function callSink(Sink sink) public returns (bool) {
      address payable sinkPayable = address(sink);
      return (sinkPayable.send(2 ether));
   }
}