[Smart Contract] Funktion Dynamischer Aufruf - Call-Funktion und Fallback-Funktion

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)”, 1213);
 
 (bool suc, _) = callee.call(calldata);
 if(!suc)//2. 不要忘记检查函数调用是否成功!
 revert(“erro!)
 }
}

Fallback-Funktion

  1. Sonderfunktionen, „ Ersatzrad “-Funktionen
  2. 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
  3. Im Proxy-Modus gibt es wichtige Anwendungen: Delegiertenruf: Support-Vertrags-Upgrade
  4. Spielt eine wichtige Rolle in der Übertragungsfunktion

andere

  1. Delegiertenruf
  2. statischer Aufruf
  3. Rufcode

Supongo que te gusta

Origin blog.csdn.net/weixin_42918559/article/details/127778179
Recomendado
Clasificación