{
  "_format": "hh-sol-artifact-1",
  "contractName": "L2CrossDomainMessenger",
  "sourceName": "contracts/L2/messaging/L2CrossDomainMessenger.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_l1CrossDomainMessenger",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "msgHash",
          "type": "bytes32"
        }
      ],
      "name": "FailedRelayedMessage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "msgHash",
          "type": "bytes32"
        }
      ],
      "name": "RelayedMessage",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "message",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "messageNonce",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "SentMessage",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "l1CrossDomainMessenger",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "messageNonce",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_sender",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_messageNonce",
          "type": "uint256"
        }
      ],
      "name": "relayMessage",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "relayedMessages",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "uint32",
          "name": "_gasLimit",
          "type": "uint32"
        }
      ],
      "name": "sendMessage",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_chainId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_target",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_message",
          "type": "bytes"
        },
        {
          "internalType": "uint32",
          "name": "_gasLimit",
          "type": "uint32"
        }
      ],
      "name": "sendMessageViaChainId",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "sentMessages",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "successfulMessages",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "xDomainMessageSender",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052600480546001600160a01b03191661dead17905534801561002457600080fd5b50604051610f24380380610f2483398101604081905261004391610068565b600580546001600160a01b0319166001600160a01b0392909216919091179055610098565b60006020828403121561007a57600080fd5b81516001600160a01b038116811461009157600080fd5b9392505050565b610e7d806100a76000396000f3fe6080604052600436106100965760003560e01c806382e3702d11610069578063b1b1b2091161004e578063b1b1b209146101a1578063cbd4ece9146101d1578063ecc70428146101f157600080fd5b806382e3702d14610144578063a71198691461017457600080fd5b806321d800ec1461009b5780633dbb202b146100e057806344dd5ed6146100f55780636e296e451461010a575b600080fd5b3480156100a757600080fd5b506100cb6100b63660046109f6565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f36100ee366004610b08565b610215565b005b6100f3610103366004610b66565b5050505050565b34801561011657600080fd5b5061011f610526565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d7565b34801561015057600080fd5b506100cb61015f3660046109f6565b60026020526000908152604090205460ff1681565b34801561018057600080fd5b5060055461011f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101ad57600080fd5b506100cb6101bc3660046109f6565b60016020526000908152604090205460ff1681565b3480156101dd57600080fd5b506100f36101ec366004610c04565b6105e7565b3480156101fd57600080fd5b5061020760035481565b6040519081526020016100d7565b6040517fe426541d0000000000000000000000000000000000000000000000000000000081523360048201527342000000000000000000000000000000000000029063e426541d90602401602060405180830381865afa15801561027d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a19190610c6a565b610332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c3220746f204c31206d6573736167657320617265207265737472696374656460448201527f20746f2077686974656c69737465642073656e646572732e000000000000000060648201526084015b60405180910390fd5b600061034284338560035461097b565b8051602080830191909120600090815260029091526040808220805460ff1916600117905551919250907342000000000000000000000000000000000000119034908381818185875af1925050503d80600081146103bc576040519150601f19603f3d011682016040523d82523d6000602084013e6103c1565b606091505b505090508061042c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4661696c656420746f2073656e642062726964676520666565000000000000006044820152606401610329565b6040517fcafa81dc0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000009063cafa81dc9061047c908590600401610ceb565b600060405180830381600087803b15801561049657600080fd5b505af11580156104aa573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f678d1db16886696652bddc90d68217be474de2ce959bf7383cb63eaa8c6f1afa33866003548760016040516104ff959493929190610cfe565b60405180910390a260016003600082825461051a9190610d50565b90915550505050505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2153016105ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f78446f6d61696e4d65737361676553656e646572206973206e6f7420736574006044820152606401610329565b5060045473ffffffffffffffffffffffffffffffffffffffff1690565b60055473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffffffeeef330173ffffffffffffffffffffffffffffffffffffffff16146106c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f50726f7669646564206d65737361676520636f756c64206e6f7420626520766560448201527f7269666965642e000000000000000000000000000000000000000000000000006064820152608401610329565b60006106d48585858561097b565b8051602080830191909120600081815260019092526040909120549192509060ff1615610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f50726f7669646564206d6573736167652068617320616c72656164792062656560448201527f6e2072656365697665642e0000000000000000000000000000000000000000006064820152608401610329565b7fffffffffffffffffffffffffbe0000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8716016107e2576000908152600160208190526040909120805460ff1916909117905550610975565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8781169190911790915560405160009188169061083b908790610d8f565b6000604051808303816000865af19150503d8060008114610878576040519150601f19603f3d011682016040523d82523d6000602084013e61087d565b606091505b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905590508015156001036108ff576000828152600160208190526040808320805460ff19169092179091555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a261092b565b60405182907f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f90600090a25b600083334360405160200161094293929190610dab565b60408051601f1981840301815291815281516020928301206000908152918290529020805460ff19166001179055505050505b50505050565b6060848484846040516024016109949493929190610dfd565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b600060208284031215610a0857600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a3357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610a7857600080fd5b813567ffffffffffffffff80821115610a9357610a93610a38565b604051601f8301601f19908116603f01168101908282118183101715610abb57610abb610a38565b81604052838152866020858801011115610ad457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803563ffffffff81168114610a3357600080fd5b600080600060608486031215610b1d57600080fd5b610b2684610a0f565b9250602084013567ffffffffffffffff811115610b4257600080fd5b610b4e86828701610a67565b925050610b5d60408501610af4565b90509250925092565b600080600080600060808688031215610b7e57600080fd5b85359450610b8e60208701610a0f565b9350604086013567ffffffffffffffff80821115610bab57600080fd5b818801915088601f830112610bbf57600080fd5b813581811115610bce57600080fd5b896020828501011115610be057600080fd5b602083019550809450505050610bf860608701610af4565b90509295509295909350565b60008060008060808587031215610c1a57600080fd5b610c2385610a0f565b9350610c3160208601610a0f565b9250604085013567ffffffffffffffff811115610c4d57600080fd5b610c5987828801610a67565b949793965093946060013593505050565b600060208284031215610c7c57600080fd5b81518015158114610c8c57600080fd5b9392505050565b60005b83811015610cae578181015183820152602001610c96565b838111156109755750506000910152565b60008151808452610cd7816020860160208601610c93565b601f01601f19169290920160200192915050565b602081526000610c8c6020830184610cbf565b73ffffffffffffffffffffffffffffffffffffffff8616815260a060208201526000610d2d60a0830187610cbf565b60408301959095525063ffffffff92909216606083015260809091015292915050565b60008219821115610d8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60008251610da1818460208701610c93565b9190910192915050565b60008451610dbd818460208901610c93565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610e366080830185610cbf565b90508260608301529594505050505056fea264697066735822122069dfd9244dc1ec5b8aada87efc5131fc6ce498de8026008603c1f8c7271074bb64736f6c634300080f0033",
  "deployedBytecode": "0x6080604052600436106100965760003560e01c806382e3702d11610069578063b1b1b2091161004e578063b1b1b209146101a1578063cbd4ece9146101d1578063ecc70428146101f157600080fd5b806382e3702d14610144578063a71198691461017457600080fd5b806321d800ec1461009b5780633dbb202b146100e057806344dd5ed6146100f55780636e296e451461010a575b600080fd5b3480156100a757600080fd5b506100cb6100b63660046109f6565b60006020819052908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f36100ee366004610b08565b610215565b005b6100f3610103366004610b66565b5050505050565b34801561011657600080fd5b5061011f610526565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d7565b34801561015057600080fd5b506100cb61015f3660046109f6565b60026020526000908152604090205460ff1681565b34801561018057600080fd5b5060055461011f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101ad57600080fd5b506100cb6101bc3660046109f6565b60016020526000908152604090205460ff1681565b3480156101dd57600080fd5b506100f36101ec366004610c04565b6105e7565b3480156101fd57600080fd5b5061020760035481565b6040519081526020016100d7565b6040517fe426541d0000000000000000000000000000000000000000000000000000000081523360048201527342000000000000000000000000000000000000029063e426541d90602401602060405180830381865afa15801561027d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a19190610c6a565b610332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4c3220746f204c31206d6573736167657320617265207265737472696374656460448201527f20746f2077686974656c69737465642073656e646572732e000000000000000060648201526084015b60405180910390fd5b600061034284338560035461097b565b8051602080830191909120600090815260029091526040808220805460ff1916600117905551919250907342000000000000000000000000000000000000119034908381818185875af1925050503d80600081146103bc576040519150601f19603f3d011682016040523d82523d6000602084013e6103c1565b606091505b505090508061042c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4661696c656420746f2073656e642062726964676520666565000000000000006044820152606401610329565b6040517fcafa81dc0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000009063cafa81dc9061047c908590600401610ceb565b600060405180830381600087803b15801561049657600080fd5b505af11580156104aa573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff167f678d1db16886696652bddc90d68217be474de2ce959bf7383cb63eaa8c6f1afa33866003548760016040516104ff959493929190610cfe565b60405180910390a260016003600082825461051a9190610d50565b90915550505050505050565b60045460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2153016105ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f78446f6d61696e4d65737361676553656e646572206973206e6f7420736574006044820152606401610329565b5060045473ffffffffffffffffffffffffffffffffffffffff1690565b60055473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffffffeeef330173ffffffffffffffffffffffffffffffffffffffff16146106c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f50726f7669646564206d65737361676520636f756c64206e6f7420626520766560448201527f7269666965642e000000000000000000000000000000000000000000000000006064820152608401610329565b60006106d48585858561097b565b8051602080830191909120600081815260019092526040909120549192509060ff1615610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f50726f7669646564206d6573736167652068617320616c72656164792062656560448201527f6e2072656365697665642e0000000000000000000000000000000000000000006064820152608401610329565b7fffffffffffffffffffffffffbe0000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8716016107e2576000908152600160208190526040909120805460ff1916909117905550610975565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8781169190911790915560405160009188169061083b908790610d8f565b6000604051808303816000865af19150503d8060008114610878576040519150601f19603f3d011682016040523d82523d6000602084013e61087d565b606091505b5050600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead17905590508015156001036108ff576000828152600160208190526040808320805460ff19169092179091555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a261092b565b60405182907f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f90600090a25b600083334360405160200161094293929190610dab565b60408051601f1981840301815291815281516020928301206000908152918290529020805460ff19166001179055505050505b50505050565b6060848484846040516024016109949493929190610dfd565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b600060208284031215610a0857600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a3357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f830112610a7857600080fd5b813567ffffffffffffffff80821115610a9357610a93610a38565b604051601f8301601f19908116603f01168101908282118183101715610abb57610abb610a38565b81604052838152866020858801011115610ad457600080fd5b836020870160208301376000602085830101528094505050505092915050565b803563ffffffff81168114610a3357600080fd5b600080600060608486031215610b1d57600080fd5b610b2684610a0f565b9250602084013567ffffffffffffffff811115610b4257600080fd5b610b4e86828701610a67565b925050610b5d60408501610af4565b90509250925092565b600080600080600060808688031215610b7e57600080fd5b85359450610b8e60208701610a0f565b9350604086013567ffffffffffffffff80821115610bab57600080fd5b818801915088601f830112610bbf57600080fd5b813581811115610bce57600080fd5b896020828501011115610be057600080fd5b602083019550809450505050610bf860608701610af4565b90509295509295909350565b60008060008060808587031215610c1a57600080fd5b610c2385610a0f565b9350610c3160208601610a0f565b9250604085013567ffffffffffffffff811115610c4d57600080fd5b610c5987828801610a67565b949793965093946060013593505050565b600060208284031215610c7c57600080fd5b81518015158114610c8c57600080fd5b9392505050565b60005b83811015610cae578181015183820152602001610c96565b838111156109755750506000910152565b60008151808452610cd7816020860160208601610c93565b601f01601f19169290920160200192915050565b602081526000610c8c6020830184610cbf565b73ffffffffffffffffffffffffffffffffffffffff8616815260a060208201526000610d2d60a0830187610cbf565b60408301959095525063ffffffff92909216606083015260809091015292915050565b60008219821115610d8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60008251610da1818460208701610c93565b9190910192915050565b60008451610dbd818460208901610c93565b60609490941b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001691909301908152601481019190915260340192915050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152610e366080830185610cbf565b90508260608301529594505050505056fea264697066735822122069dfd9244dc1ec5b8aada87efc5131fc6ce498de8026008603c1f8c7271074bb64736f6c634300080f0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
