{"status":"full","files":[{"name":"metadata.json","path":"/contracts/full_match/7120/0x7900826De548425c6BE56caEbD4760AB0155Cd54/metadata.json","content":"{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes[]\",\"name\":\"returnData\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall3.Call3[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowFailure\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall3.Call3Value[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"aggregate3Value\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"blockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBasefee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBlockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockCoinbase\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentBlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"getEthBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"tryBlockAndAggregate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"internalType\":\"struct Multicall3.Result[]\",\"name\":\"returnData\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Matt Solomon (upstream) - vendored verbatim by Sentrix Labs\",\"details\":\"Mirror of github.com/mds1/multicall (canonical address      0xcA11bde05977b3631167028862bE2a173976CA11 across most chains).      Reproduced here verbatim to keep the canonical-contracts repo      self-contained. License preserved (MIT - owner: Matt Solomon).\",\"kind\":\"dev\",\"methods\":{},\"title\":\"Multicall3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"aggregate((address,bytes)[])\":{\"notice\":\"Backwards-compatible aggregate (reverts on any failure).\"},\"aggregate3((address,bool,bytes)[])\":{\"notice\":\"Aggregate calls; per-call failure mode controllable.\"},\"aggregate3Value((address,bool,uint256,bytes)[])\":{\"notice\":\"Aggregate calls with values; per-call failure mode controllable.\"}},\"notice\":\"Aggregate read/write contract calls into a single tx.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Multicall3.sol\":\"Multicall3\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/=lib/openzeppelin-contracts/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"contracts/Multicall3.sol\":{\"keccak256\":\"0x5b1e6762717d8c4f48bcca83a344d6ca2904255b9c165027ad5087b8029d3f8a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://995a0180233f3900f4ac18b40820f923e6c110963c66b75194b28a7045b53cd3\",\"dweb:/ipfs/QmWupN7d78uAJoRyCYuMJZtA8TuSxZSusSntUyp2N6mCgE\"]}},\"version\":1}"},{"name":"Multicall3.sol","path":"/contracts/full_match/7120/0x7900826De548425c6BE56caEbD4760AB0155Cd54/sources/contracts/Multicall3.sol","content":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.24;\n\n/// @title Multicall3\n/// @author Matt Solomon (upstream) - vendored verbatim by Sentrix Labs\n/// @notice Aggregate read/write contract calls into a single tx.\n/// @dev Mirror of github.com/mds1/multicall (canonical address\n///      0xcA11bde05977b3631167028862bE2a173976CA11 across most chains).\n///      Reproduced here verbatim to keep the canonical-contracts repo\n///      self-contained. License preserved (MIT - owner: Matt Solomon).\ncontract Multicall3 {\n    struct Call {\n        address target;\n        bytes callData;\n    }\n\n    struct Call3 {\n        address target;\n        bool allowFailure;\n        bytes callData;\n    }\n\n    struct Call3Value {\n        address target;\n        bool allowFailure;\n        uint256 value;\n        bytes callData;\n    }\n\n    struct Result {\n        bool success;\n        bytes returnData;\n    }\n\n    /// @notice Backwards-compatible aggregate (reverts on any failure).\n    function aggregate(Call[] calldata calls) external payable returns (uint256 blockNumber, bytes[] memory returnData) {\n        blockNumber = block.number;\n        uint256 length = calls.length;\n        returnData = new bytes[](length);\n        Call calldata call;\n        for (uint256 i = 0; i < length; ) {\n            bool success;\n            call = calls[i];\n            (success, returnData[i]) = call.target.call(call.callData);\n            require(success, \"Multicall3: call failed\");\n            unchecked { ++i; }\n        }\n    }\n\n    /// @notice Aggregate calls; per-call failure mode controllable.\n    function aggregate3(Call3[] calldata calls) external payable returns (Result[] memory returnData) {\n        uint256 length = calls.length;\n        returnData = new Result[](length);\n        Call3 calldata calli;\n        for (uint256 i = 0; i < length; ) {\n            Result memory result = returnData[i];\n            calli = calls[i];\n            (result.success, result.returnData) = calli.target.call(calli.callData);\n            assembly {\n                if iszero(or(calldataload(add(calli, 0x20)), mload(result))) {\n                    mstore(0x00, 0x08c379a0)\n                    mstore(0x20, 0x20)\n                    mstore(0x40, 0x17)\n                    mstore(0x60, 0x4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000)\n                    revert(0x1c, 0x64)\n                }\n            }\n            unchecked { ++i; }\n        }\n    }\n\n    /// @notice Aggregate calls with values; per-call failure mode controllable.\n    function aggregate3Value(Call3Value[] calldata calls) external payable returns (Result[] memory returnData) {\n        uint256 valAccumulator;\n        uint256 length = calls.length;\n        returnData = new Result[](length);\n        Call3Value calldata calli;\n        for (uint256 i = 0; i < length; ) {\n            Result memory result = returnData[i];\n            calli = calls[i];\n            uint256 val = calli.value;\n            unchecked { valAccumulator += val; }\n            (result.success, result.returnData) = calli.target.call{value: val}(calli.callData);\n            assembly {\n                if iszero(or(calldataload(add(calli, 0x40)), mload(result))) {\n                    mstore(0x00, 0x08c379a0)\n                    mstore(0x20, 0x20)\n                    mstore(0x40, 0x17)\n                    mstore(0x60, 0x4d756c746963616c6c333a2063616c6c206661696c6564000000000000000000)\n                    revert(0x1c, 0x64)\n                }\n            }\n            unchecked { ++i; }\n        }\n        require(msg.value == valAccumulator, \"Multicall3: value mismatch\");\n    }\n\n    function blockAndAggregate(Call[] calldata calls) external payable returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) {\n        (blockNumber, blockHash, returnData) = tryBlockAndAggregate(calls);\n    }\n\n    function tryBlockAndAggregate(Call[] calldata calls) public payable returns (uint256 blockNumber, bytes32 blockHash, Result[] memory returnData) {\n        blockNumber = block.number;\n        blockHash = blockhash(block.number);\n        uint256 length = calls.length;\n        returnData = new Result[](length);\n        Call calldata call;\n        for (uint256 i = 0; i < length; ) {\n            Result memory result = returnData[i];\n            call = calls[i];\n            (result.success, result.returnData) = call.target.call(call.callData);\n            unchecked { ++i; }\n        }\n    }\n\n    function getBlockNumber() external view returns (uint256) { return block.number; }\n    function getBlockHash(uint256 blockNumber) external view returns (bytes32) { return blockhash(blockNumber); }\n    function getCurrentBlockTimestamp() external view returns (uint256) { return block.timestamp; }\n    function getCurrentBlockGasLimit() external view returns (uint256) { return block.gaslimit; }\n    function getCurrentBlockCoinbase() external view returns (address) { return block.coinbase; }\n    function getEthBalance(address addr) external view returns (uint256) { return addr.balance; }\n    function getLastBlockHash() external view returns (bytes32) { return blockhash(block.number - 1); }\n    function getChainId() external view returns (uint256) { return block.chainid; }\n    function getBasefee() external view returns (uint256) { return block.basefee; }\n}\n"}]}