Solidität - Fallback-Funktion
Die Fallback-Funktion ist eine spezielle Funktion, die einem Vertrag zur Verfügung steht. Es hat folgende Funktionen -
Es wird aufgerufen, wenn eine nicht vorhandene Funktion im Vertrag aufgerufen wird.
Es muss als extern gekennzeichnet werden.
Es hat keinen Namen.
Es hat keine Argumente
Es kann nichts zurückgeben.
Es kann eine pro Vertrag definiert werden.
Wenn nicht als zahlbar markiert, wird eine Ausnahme ausgelöst, wenn der Vertrag einfachen Äther ohne Daten erhält.
Das folgende Beispiel zeigt das Konzept einer Fallback-Funktion pro Vertrag.
Beispiel
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));
}
}