github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/test/contracts/auto/ChainCallLevel2.sol (about) 1 // SPDX-License-Identifier: GPL-3.0 2 pragma solidity >=0.7.0 <0.9.0; 3 4 contract ChainCallLevel2 { 5 function exec(address level3Addr, address level4Addr) public payable { 6 bool ok; 7 (ok, ) = level3Addr.call(abi.encodeWithSignature("exec(address)", level4Addr)); 8 require(ok, "failed to perform call to level 3"); 9 10 (ok, ) = level3Addr.delegatecall(abi.encodeWithSignature("exec(address)", level4Addr)); 11 require(ok, "failed to perform delegate call to level 3"); 12 } 13 14 function get(address level3Addr, address level4Addr) public view returns (string memory t) { 15 bool ok; 16 bytes memory result; 17 (ok, result) = level3Addr.staticcall(abi.encodeWithSignature("get(address)", level4Addr)); 18 require(ok, "failed to perform static call to level 3"); 19 20 t = abi.decode(result, (string)); 21 22 (ok, result) = level4Addr.staticcall(abi.encodeWithSignature("get()")); 23 require(ok, "failed to perform static call to level 4 from level 2"); 24 25 t = abi.decode(result, (string)); 26 } 27 }