github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/contracts/auto/ChainCallLevel1.sol (about)

     1  // SPDX-License-Identifier: GPL-3.0
     2  pragma solidity >=0.7.0 <0.9.0;
     3  
     4  contract ChainCallLevel1 {
     5      function exec(address level2Addr, address level3Addr, address level4Addr) public payable {
     6          bool ok;
     7          (ok, ) = level2Addr.call(
     8              abi.encodeWithSignature("exec(address,address)", level3Addr, level4Addr)
     9          );
    10          require(ok, "failed to perform call to level 2");
    11  
    12          (ok, ) = level2Addr.delegatecall(
    13              abi.encodeWithSignature("exec(address,address)", level3Addr, level4Addr)
    14          );
    15          require(ok, "failed to perform delegate call to level 2");
    16  
    17          bytes memory result;
    18          (ok, result) = level2Addr.staticcall(
    19              abi.encodeWithSignature("get(address,address)", level3Addr, level4Addr)
    20          );
    21          require(ok, "failed to perform static call to level 2");
    22  
    23          string memory t;
    24          (t) = abi.decode(result, (string));
    25      }
    26  }