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 }