{
  "_format": "hh-sol-artifact-1",
  "contractName": "Multicall2",
  "sourceName": "contracts/core/Multicall2.sol",
  "abi": [
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "aggregate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "internalType": "bytes[]",
          "name": "returnData",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.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 Multicall2.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getBlockHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBlockNumber",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockCoinbase",
      "outputs": [
        {
          "internalType": "address",
          "name": "coinbase",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockDifficulty",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "difficulty",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockGasLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "gaslimit",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getCurrentBlockTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "getEthBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getLastBlockHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "blockHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "requireSuccess",
          "type": "bool"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Call[]",
          "name": "calls",
          "type": "tuple[]"
        }
      ],
      "name": "tryAggregate",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "success",
              "type": "bool"
            },
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "requireSuccess",
          "type": "bool"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "callData",
              "type": "bytes"
            }
          ],
          "internalType": "struct Multicall2.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 Multicall2.Result[]",
          "name": "returnData",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610ab5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806372425d9d1161007157806372425d9d1461013c57806386d516e814610142578063a8b0574e14610148578063bce38bd714610156578063c3077fa914610176578063ee82ac5e14610189576100b4565b80630f28c97d146100b9578063252dba42146100ce57806327e86d6e146100ef578063399542e9146100f757806342cbb15c146101195780634d2301cc14610121575b600080fd5b425b6040519081526020015b60405180910390f35b6100e16100dc3660046107af565b61019b565b6040516100c5929190610930565b6100bb610364565b61010a6101053660046107ea565b610380565b6040516100c593929190610998565b6100bb6103a6565b6100bb61012f36600461078e565b6001600160a01b03163190565b446100bb565b456100bb565b6040514181526020016100c5565b6101696101643660046107ea565b6103b5565b6040516100c5919061091d565b61010a6101843660046107af565b6105a7565b6100bb61019736600461083c565b4090565b600060606101a76105c4565b9150825167ffffffffffffffff8111156101d157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561020457816020015b60608152602001906001900390816101ef5790505b50905060005b835181101561035e5760008085838151811061023657634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b031686848151811061026b57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516040516102849190610901565b6000604051808303816000865af19150503d80600081146102c1576040519150601f19603f3d011682016040523d82523d6000602084013e6102c6565b606091505b50915091508161031d5760405162461bcd60e51b815260206004820181905260248201527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c656460448201526064015b60405180910390fd5b8084848151811061033e57634e487b7160e01b600052603260045260246000fd5b60200260200101819052505050808061035690610a38565b91505061020a565b50915091565b600060016103706105c4565b61037a91906109f1565b40905090565b600080606061038d6105c4565b92508240915061039d85856103b5565b90509250925092565b60006103b06105c4565b905090565b6060815167ffffffffffffffff8111156103df57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561042557816020015b6040805180820190915260008152606060208201528152602001906001900390816103fd5790505b50905060005b82518110156105a05760008084838151811061045757634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b031685848151811061048c57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516040516104a59190610901565b6000604051808303816000865af19150503d80600081146104e2576040519150601f19603f3d011682016040523d82523d6000602084013e6104e7565b606091505b5091509150851561054957816105495760405162461bcd60e51b815260206004820152602160248201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656044820152601960fa1b6064820152608401610314565b604051806040016040528083151581526020018281525084848151811061058057634e487b7160e01b600052603260045260246000fd5b60200260200101819052505050808061059890610a38565b91505061042b565b5092915050565b60008060606105b7600185610380565b9196909550909350915050565b60004662066eeb8114806105d957508061a4b1145b156106585760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561061857600080fd5b505afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106509190610854565b91505061065d565b439150505b90565b80356001600160a01b038116811461067757600080fd5b919050565b600082601f83011261068c578081fd5b8135602067ffffffffffffffff808311156106a9576106a9610a69565b6106b682838502016109c0565b83815282810190868401865b8681101561078057813589016040601f198181848f030112156106e3578a8bfd5b6106ec826109c0565b6106f78a8501610660565b81528284013589811115610709578c8dfd5b8085019450508d603f85011261071d578b8cfd5b898401358981111561073157610731610a69565b6107418b84601f840116016109c0565b92508083528e84828701011115610756578c8dfd5b808486018c85013782018a018c9052808a01919091528652505092850192908501906001016106c2565b509098975050505050505050565b60006020828403121561079f578081fd5b6107a882610660565b9392505050565b6000602082840312156107c0578081fd5b813567ffffffffffffffff8111156107d6578182fd5b6107e28482850161067c565b949350505050565b600080604083850312156107fc578081fd5b8235801515811461080b578182fd5b9150602083013567ffffffffffffffff811115610826578182fd5b6108328582860161067c565b9150509250929050565b60006020828403121561084d578081fd5b5035919050565b600060208284031215610865578081fd5b5051919050565b6000815180845260208085018081965082840281019150828601855b858110156108c8578284038952815180511515855285015160408686018190526108b4818701836108d5565b9a87019a9550505090840190600101610888565b5091979650505050505050565b600081518084526108ed816020860160208601610a08565b601f01601f19169290920160200192915050565b60008251610913818460208701610a08565b9190910192915050565b6000602082526107a8602083018461086c565b600060408201848352602060408185015281855180845260608601915060608382028701019350828701855b8281101561098a57605f198887030184526109788683516108d5565b9550928401929084019060010161095c565b509398975050505050505050565b6000848252836020830152606060408301526109b7606083018461086c565b95945050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156109e9576109e9610a69565b604052919050565b600082821015610a0357610a03610a53565b500390565b60005b83811015610a23578181015183820152602001610a0b565b83811115610a32576000848401525b50505050565b6000600019821415610a4c57610a4c610a53565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220f2649a962f3169ac2258f06ec98f05b480722ef3bc084c734629907fd7ff7a5b64736f6c63430008020033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c806372425d9d1161007157806372425d9d1461013c57806386d516e814610142578063a8b0574e14610148578063bce38bd714610156578063c3077fa914610176578063ee82ac5e14610189576100b4565b80630f28c97d146100b9578063252dba42146100ce57806327e86d6e146100ef578063399542e9146100f757806342cbb15c146101195780634d2301cc14610121575b600080fd5b425b6040519081526020015b60405180910390f35b6100e16100dc3660046107af565b61019b565b6040516100c5929190610930565b6100bb610364565b61010a6101053660046107ea565b610380565b6040516100c593929190610998565b6100bb6103a6565b6100bb61012f36600461078e565b6001600160a01b03163190565b446100bb565b456100bb565b6040514181526020016100c5565b6101696101643660046107ea565b6103b5565b6040516100c5919061091d565b61010a6101843660046107af565b6105a7565b6100bb61019736600461083c565b4090565b600060606101a76105c4565b9150825167ffffffffffffffff8111156101d157634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561020457816020015b60608152602001906001900390816101ef5790505b50905060005b835181101561035e5760008085838151811061023657634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b031686848151811061026b57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516040516102849190610901565b6000604051808303816000865af19150503d80600081146102c1576040519150601f19603f3d011682016040523d82523d6000602084013e6102c6565b606091505b50915091508161031d5760405162461bcd60e51b815260206004820181905260248201527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c656460448201526064015b60405180910390fd5b8084848151811061033e57634e487b7160e01b600052603260045260246000fd5b60200260200101819052505050808061035690610a38565b91505061020a565b50915091565b600060016103706105c4565b61037a91906109f1565b40905090565b600080606061038d6105c4565b92508240915061039d85856103b5565b90509250925092565b60006103b06105c4565b905090565b6060815167ffffffffffffffff8111156103df57634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561042557816020015b6040805180820190915260008152606060208201528152602001906001900390816103fd5790505b50905060005b82518110156105a05760008084838151811061045757634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b031685848151811061048c57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516040516104a59190610901565b6000604051808303816000865af19150503d80600081146104e2576040519150601f19603f3d011682016040523d82523d6000602084013e6104e7565b606091505b5091509150851561054957816105495760405162461bcd60e51b815260206004820152602160248201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c656044820152601960fa1b6064820152608401610314565b604051806040016040528083151581526020018281525084848151811061058057634e487b7160e01b600052603260045260246000fd5b60200260200101819052505050808061059890610a38565b91505061042b565b5092915050565b60008060606105b7600185610380565b9196909550909350915050565b60004662066eeb8114806105d957508061a4b1145b156106585760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561061857600080fd5b505afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106509190610854565b91505061065d565b439150505b90565b80356001600160a01b038116811461067757600080fd5b919050565b600082601f83011261068c578081fd5b8135602067ffffffffffffffff808311156106a9576106a9610a69565b6106b682838502016109c0565b83815282810190868401865b8681101561078057813589016040601f198181848f030112156106e3578a8bfd5b6106ec826109c0565b6106f78a8501610660565b81528284013589811115610709578c8dfd5b8085019450508d603f85011261071d578b8cfd5b898401358981111561073157610731610a69565b6107418b84601f840116016109c0565b92508083528e84828701011115610756578c8dfd5b808486018c85013782018a018c9052808a01919091528652505092850192908501906001016106c2565b509098975050505050505050565b60006020828403121561079f578081fd5b6107a882610660565b9392505050565b6000602082840312156107c0578081fd5b813567ffffffffffffffff8111156107d6578182fd5b6107e28482850161067c565b949350505050565b600080604083850312156107fc578081fd5b8235801515811461080b578182fd5b9150602083013567ffffffffffffffff811115610826578182fd5b6108328582860161067c565b9150509250929050565b60006020828403121561084d578081fd5b5035919050565b600060208284031215610865578081fd5b5051919050565b6000815180845260208085018081965082840281019150828601855b858110156108c8578284038952815180511515855285015160408686018190526108b4818701836108d5565b9a87019a9550505090840190600101610888565b5091979650505050505050565b600081518084526108ed816020860160208601610a08565b601f01601f19169290920160200192915050565b60008251610913818460208701610a08565b9190910192915050565b6000602082526107a8602083018461086c565b600060408201848352602060408185015281855180845260608601915060608382028701019350828701855b8281101561098a57605f198887030184526109788683516108d5565b9550928401929084019060010161095c565b509398975050505050505050565b6000848252836020830152606060408301526109b7606083018461086c565b95945050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156109e9576109e9610a69565b604052919050565b600082821015610a0357610a03610a53565b500390565b60005b83811015610a23578181015183820152602001610a0b565b83811115610a32576000848401525b50505050565b6000600019821415610a4c57610a4c610a53565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220f2649a962f3169ac2258f06ec98f05b480722ef3bc084c734629907fd7ff7a5b64736f6c63430008020033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
