{
  "_format": "hh-sol-artifact-1",
  "contractName": "Multicall2",
  "sourceName": "contracts/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": "0x608060405234801561001057600080fd5b50610aa5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806372425d9d11610081578063bce38bd71161005b578063bce38bd714610181578063c3077fa9146101a1578063ee82ac5e146101b457600080fd5b806372425d9d1461016757806386d516e81461016d578063a8b0574e1461017357600080fd5b8063399542e9116100b2578063399542e91461011757806342cbb15c146101395780634d2301cc1461013f57600080fd5b80630f28c97d146100d9578063252dba42146100ee57806327e86d6e1461010f575b600080fd5b425b6040519081526020015b60405180910390f35b6101016100fc36600461078e565b6101c6565b6040516100e592919061081b565b6100db610375565b61012a6101253660046108a3565b610388565b6040516100e593929190610960565b436100db565b6100db61014d366004610988565b73ffffffffffffffffffffffffffffffffffffffff163190565b446100db565b456100db565b6040514181526020016100e5565b61019461018f3660046108a3565b6103a0565b6040516100e591906109aa565b61012a6101af36600461078e565b61059d565b6100db6101c23660046109bd565b4090565b8051439060609067ffffffffffffffff8111156101e5576101e56105ba565b60405190808252806020026020018201604052801561021857816020015b60608152602001906001900390816102035790505b50905060005b835181101561036f5760008085838151811061023c5761023c6109d6565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16868481518110610270576102706109d6565b60200260200101516020015160405161028991906109ec565b6000604051808303816000865af19150503d80600081146102c6576040519150601f19603f3d011682016040523d82523d6000602084013e6102cb565b606091505b50915091508161033c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c656460448201526064015b60405180910390fd5b8084848151811061034f5761034f6109d6565b60200260200101819052505050808061036790610a1e565b91505061021e565b50915091565b6000610382600143610a56565b40905090565b438040606061039785856103a0565b90509250925092565b6060815167ffffffffffffffff8111156103bc576103bc6105ba565b60405190808252806020026020018201604052801561040257816020015b6040805180820190915260008152606060208201528152602001906001900390816103da5790505b50905060005b825181101561059657600080848381518110610426576104266109d6565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1685848151811061045a5761045a6109d6565b60200260200101516020015160405161047391906109ec565b6000604051808303816000865af19150503d80600081146104b0576040519150601f19603f3d011682016040523d82523d6000602084013e6104b5565b606091505b5091509150851561054d578161054d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610333565b6040518060400160405280831515815260200182815250848481518110610576576105766109d6565b60200260200101819052505050808061058e90610a1e565b915050610408565b5092915050565b60008060606105ad600185610388565b9196909550909350915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156105f3576105f36105ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610622576106226105ba565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461064e57600080fd5b919050565b6000601f838184011261066557600080fd5b8235602067ffffffffffffffff80831115610682576106826105ba565b8260051b6106918382016105f9565b93845286810183019383810190898611156106ab57600080fd5b84890192505b85831015610781578235848111156106c95760008081fd5b89016040601f19828d0381018213156106e25760008081fd5b6106ea6105d0565b6106f589850161062a565b815282840135888111156107095760008081fd5b8085019450508d603f85011261071f5760008081fd5b8884013588811115610733576107336105ba565b6107428a848e840116016105f9565b92508083528e848287010111156107595760008081fd5b808486018b85013760009083018a0152808901919091528452505091840191908401906106b1565b9998505050505050505050565b6000602082840312156107a057600080fd5b813567ffffffffffffffff8111156107b757600080fd5b6107c384828501610653565b949350505050565b60005b838110156107e65781810151838201526020016107ce565b50506000910152565b600081518084526108078160208601602086016107cb565b601f01601f19169290920160200192915050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610895577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184526108838683516107ef565b95509284019290840190600101610849565b509398975050505050505050565b600080604083850312156108b657600080fd5b823580151581146108c657600080fd5b9150602083013567ffffffffffffffff8111156108e257600080fd5b6108ee85828601610653565b9150509250929050565b6000815180845260208085019450848260051b860182860160005b858110156109535783830389528151805115158452850151604086850181905261093f818601836107ef565b9a87019a9450505090840190600101610913565b5090979650505050505050565b83815282602082015260606040820152600061097f60608301846108f8565b95945050505050565b60006020828403121561099a57600080fd5b6109a38261062a565b9392505050565b6020815260006109a360208301846108f8565b6000602082840312156109cf57600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b600082516109fe8184602087016107cb565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a4f57610a4f610a08565b5060010190565b81810381811115610a6957610a69610a08565b9291505056fea2646970667358221220cca0c98f9e0223809c2f68e0dd03e65205c63caedb0523cf4237b80e1a09d1cc64736f6c63430008130033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c806372425d9d11610081578063bce38bd71161005b578063bce38bd714610181578063c3077fa9146101a1578063ee82ac5e146101b457600080fd5b806372425d9d1461016757806386d516e81461016d578063a8b0574e1461017357600080fd5b8063399542e9116100b2578063399542e91461011757806342cbb15c146101395780634d2301cc1461013f57600080fd5b80630f28c97d146100d9578063252dba42146100ee57806327e86d6e1461010f575b600080fd5b425b6040519081526020015b60405180910390f35b6101016100fc36600461078e565b6101c6565b6040516100e592919061081b565b6100db610375565b61012a6101253660046108a3565b610388565b6040516100e593929190610960565b436100db565b6100db61014d366004610988565b73ffffffffffffffffffffffffffffffffffffffff163190565b446100db565b456100db565b6040514181526020016100e5565b61019461018f3660046108a3565b6103a0565b6040516100e591906109aa565b61012a6101af36600461078e565b61059d565b6100db6101c23660046109bd565b4090565b8051439060609067ffffffffffffffff8111156101e5576101e56105ba565b60405190808252806020026020018201604052801561021857816020015b60608152602001906001900390816102035790505b50905060005b835181101561036f5760008085838151811061023c5761023c6109d6565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16868481518110610270576102706109d6565b60200260200101516020015160405161028991906109ec565b6000604051808303816000865af19150503d80600081146102c6576040519150601f19603f3d011682016040523d82523d6000602084013e6102cb565b606091505b50915091508161033c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4d756c746963616c6c206167677265676174653a2063616c6c206661696c656460448201526064015b60405180910390fd5b8084848151811061034f5761034f6109d6565b60200260200101819052505050808061036790610a1e565b91505061021e565b50915091565b6000610382600143610a56565b40905090565b438040606061039785856103a0565b90509250925092565b6060815167ffffffffffffffff8111156103bc576103bc6105ba565b60405190808252806020026020018201604052801561040257816020015b6040805180820190915260008152606060208201528152602001906001900390816103da5790505b50905060005b825181101561059657600080848381518110610426576104266109d6565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1685848151811061045a5761045a6109d6565b60200260200101516020015160405161047391906109ec565b6000604051808303816000865af19150503d80600081146104b0576040519150601f19603f3d011682016040523d82523d6000602084013e6104b5565b606091505b5091509150851561054d578161054d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4d756c746963616c6c32206167677265676174653a2063616c6c206661696c6560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610333565b6040518060400160405280831515815260200182815250848481518110610576576105766109d6565b60200260200101819052505050808061058e90610a1e565b915050610408565b5092915050565b60008060606105ad600185610388565b9196909550909350915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156105f3576105f36105ba565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610622576106226105ba565b604052919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461064e57600080fd5b919050565b6000601f838184011261066557600080fd5b8235602067ffffffffffffffff80831115610682576106826105ba565b8260051b6106918382016105f9565b93845286810183019383810190898611156106ab57600080fd5b84890192505b85831015610781578235848111156106c95760008081fd5b89016040601f19828d0381018213156106e25760008081fd5b6106ea6105d0565b6106f589850161062a565b815282840135888111156107095760008081fd5b8085019450508d603f85011261071f5760008081fd5b8884013588811115610733576107336105ba565b6107428a848e840116016105f9565b92508083528e848287010111156107595760008081fd5b808486018b85013760009083018a0152808901919091528452505091840191908401906106b1565b9998505050505050505050565b6000602082840312156107a057600080fd5b813567ffffffffffffffff8111156107b757600080fd5b6107c384828501610653565b949350505050565b60005b838110156107e65781810151838201526020016107ce565b50506000910152565b600081518084526108078160208601602086016107cb565b601f01601f19169290920160200192915050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610895577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08887030184526108838683516107ef565b95509284019290840190600101610849565b509398975050505050505050565b600080604083850312156108b657600080fd5b823580151581146108c657600080fd5b9150602083013567ffffffffffffffff8111156108e257600080fd5b6108ee85828601610653565b9150509250929050565b6000815180845260208085019450848260051b860182860160005b858110156109535783830389528151805115158452850151604086850181905261093f818601836107ef565b9a87019a9450505090840190600101610913565b5090979650505050505050565b83815282602082015260606040820152600061097f60608301846108f8565b95945050505050565b60006020828403121561099a57600080fd5b6109a38261062a565b9392505050565b6020815260006109a360208301846108f8565b6000602082840312156109cf57600080fd5b5035919050565b634e487b7160e01b600052603260045260246000fd5b600082516109fe8184602087016107cb565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a4f57610a4f610a08565b5060010190565b81810381811115610a6957610a69610a08565b9291505056fea2646970667358221220cca0c98f9e0223809c2f68e0dd03e65205c63caedb0523cf4237b80e1a09d1cc64736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
