Anruffunktion
- Verwendung der Anruffunktion
1.call(calldata)
2. call ist die Methode der Adresse
3. call return value (bool success, bytes data)
4. Das heißt (bool suc,bytes memory res)=address.call(calldata);
- über Anrufdaten
1. Der Parameter des Anrufs ist calldata
2. Die ersten vier Bytes der Anrufdaten sind Selektor, und der Rest ist die
Parametercodierung –
verstehen
die abi-Funktion: Bibliotheksfunktion
- Das Erscheinen der Aufruffunktion wandelt die Funktion von einem statischen Aufruf in einen dynamischen Aufruf um
Statische Anrufinstanz:
contract Callee{
uint x;
function setX(uint px) public {
x = px;
}
}
import “callee.sol”;//依赖源码
contract Caller{
Callee callee;
function SetCaleeX(){
callee.setX(12);//编译时检查
}
}
Dynamische Aufrufinstanz:
contract Callee{
uint x;
function setX(uint px, uint y) public returns(string memory){
x = px;
}
}
//“callee.sol”;1.不必依赖被调用合约源码
contract Caller{
// Callee callee;
address callee;
function SetCaleeX(){
bytes memory calldata = abi.encodeWithSignature(“setY(uint)”, 12,13);
(bool suc, _) = callee.call(calldata);
if(!suc)//2. 不要忘记检查函数调用是否成功!
revert(“erro!”)
}
}
Fallback-Funktion
- Sonderfunktionen, „ Ersatzrad “-Funktionen
- Rufen Sie den Aufruf dynamisch auf, um die Typüberprüfung zu umgehen, oder definieren Sie selbst eine Schnittstellenfunktion, aber diese Funktion existiert nicht, sodass Fallback funktionieren kann
- Im Proxy-Modus gibt es wichtige Anwendungen: Delegiertenruf: Support-Vertrags-Upgrade
- Spielt eine wichtige Rolle in der Übertragungsfunktion
andere
- Delegiertenruf
- statischer Aufruf
- Rufcode