Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,202 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit ERC20 | 21692856 | 1 hr ago | IN | 0 ETH | 0.00099225 | ||||
Deposit ERC20 | 21692806 | 1 hr ago | IN | 0 ETH | 0.00097697 | ||||
Deposit ERC20 | 21692756 | 1 hr ago | IN | 0 ETH | 0.00105043 | ||||
Deposit ERC20 | 21692655 | 1 hr ago | IN | 0 ETH | 0.00098238 | ||||
Deposit ERC20 | 21691662 | 5 hrs ago | IN | 0 ETH | 0.00106474 | ||||
Deposit ERC20 | 21691636 | 5 hrs ago | IN | 0 ETH | 0.00103604 | ||||
Deposit ERC20 | 21691611 | 5 hrs ago | IN | 0 ETH | 0.00105637 | ||||
Deposit ERC20 | 21686707 | 21 hrs ago | IN | 0 ETH | 0.00124061 | ||||
Deposit ERC20 | 21686509 | 22 hrs ago | IN | 0 ETH | 0.00106905 | ||||
Deposit ERC20 | 21686233 | 23 hrs ago | IN | 0 ETH | 0.00107193 | ||||
Deposit ERC20 | 21685984 | 24 hrs ago | IN | 0 ETH | 0.00097926 | ||||
Deposit ERC20 | 21685735 | 24 hrs ago | IN | 0 ETH | 0.00102699 | ||||
Deposit ERC20 | 21685140 | 26 hrs ago | IN | 0 ETH | 0.00101884 | ||||
Deposit ERC20 | 21684916 | 27 hrs ago | IN | 0 ETH | 0.00108185 | ||||
Deposit ERC20 | 21684891 | 27 hrs ago | IN | 0 ETH | 0.00112849 | ||||
Deposit ERC20 | 21684867 | 27 hrs ago | IN | 0 ETH | 0.00121442 | ||||
Deposit ERC20 | 21684817 | 27 hrs ago | IN | 0 ETH | 0.00114693 | ||||
Deposit ERC20 | 21683054 | 33 hrs ago | IN | 0 ETH | 0.001207 | ||||
Deposit ERC20 | 21682855 | 34 hrs ago | IN | 0 ETH | 0.00134718 | ||||
Deposit ERC20 | 21682753 | 34 hrs ago | IN | 0 ETH | 0.00133447 | ||||
Deposit ERC20 | 21682703 | 35 hrs ago | IN | 0 ETH | 0.0013101 | ||||
Deposit ERC20 | 21682653 | 35 hrs ago | IN | 0 ETH | 0.00143372 | ||||
Deposit ERC20 | 21682207 | 36 hrs ago | IN | 0 ETH | 0.00146298 | ||||
Deposit ERC20 | 21682158 | 36 hrs ago | IN | 0 ETH | 0.00152122 | ||||
Deposit ERC20 | 21681784 | 38 hrs ago | IN | 0 ETH | 0.00158021 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
L1DAITokenBridge
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-or-later // Copyright (C) 2021 Dai Foundation // @unsupported: ovm // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see <https://www.gnu.org/licenses/>. pragma solidity >=0.7.6; import {iOVM_L1ERC20Bridge} from "@eth-optimism/contracts/iOVM/bridge/tokens/iOVM_L1ERC20Bridge.sol"; import {iOVM_L2ERC20Bridge} from "@eth-optimism/contracts/iOVM/bridge/tokens/iOVM_L2ERC20Bridge.sol"; import {OVM_CrossDomainEnabled} from "@eth-optimism/contracts/libraries/bridge/OVM_CrossDomainEnabled.sol"; import { Address } from "@openzeppelin/contracts/utils/Address.sol"; interface TokenLike { function transferFrom(address _from, address _to, uint256 _value) external returns (bool success); } // Managed locked funds in L1Escrow and send / receive messages to L2DAITokenBridge counterpart // Note: when bridge is closed it will still process in progress messages contract L1DAITokenBridge is iOVM_L1ERC20Bridge, OVM_CrossDomainEnabled { // --- Auth --- mapping (address => uint256) public wards; function rely(address usr) external auth { wards[usr] = 1; emit Rely(usr); } function deny(address usr) external auth { wards[usr] = 0; emit Deny(usr); } modifier auth { require(wards[msg.sender] == 1, "L1DAITokenBridge/not-authorized"); _; } event Rely(address indexed usr); event Deny(address indexed usr); address public immutable l1Token; address public immutable l2DAITokenBridge; address public immutable l2Token; address public immutable escrow; uint256 public isOpen = 1; event Closed(); constructor( address _l1Token, address _l2DAITokenBridge, address _l2Token, address _l1messenger, address _escrow ) OVM_CrossDomainEnabled(_l1messenger) { wards[msg.sender] = 1; emit Rely(msg.sender); l1Token = _l1Token; l2DAITokenBridge = _l2DAITokenBridge; l2Token = _l2Token; escrow = _escrow; } function close() external auth { isOpen = 0; emit Closed(); } function depositERC20( address _l1Token, address _l2Token, uint256 _amount, uint32 _l2Gas, bytes calldata _data ) external virtual override { // Used to stop deposits from contracts (avoid accidentally lost tokens) // Note: This check could be bypassed by a malicious contract via initcode, but it takes care of the user error we want to avoid. require(!Address.isContract(msg.sender), "L1DAITokenBridge/Sender-not-EOA"); require(_l1Token == l1Token && _l2Token == l2Token, "L1DAITokenBridge/token-not-dai"); _initiateERC20Deposit(msg.sender, msg.sender, _amount, _l2Gas, _data); } function depositERC20To( address _l1Token, address _l2Token, address _to, uint256 _amount, uint32 _l2Gas, bytes calldata _data ) external virtual override { require(_l1Token == l1Token && _l2Token == l2Token, "L1DAITokenBridge/token-not-dai"); _initiateERC20Deposit(msg.sender, _to, _amount, _l2Gas, _data); } function _initiateERC20Deposit( address _from, address _to, uint256 _amount, uint32 _l2Gas, bytes calldata _data ) internal { // do not allow initiating new xchain messages if bridge is closed require(isOpen == 1, "L1DAITokenBridge/closed"); TokenLike(l1Token).transferFrom(_from, escrow, _amount); bytes memory message = abi.encodeWithSelector(iOVM_L2ERC20Bridge.finalizeDeposit.selector, l1Token, l2Token, _from, _to, _amount, _data); sendCrossDomainMessage(l2DAITokenBridge, _l2Gas, message); emit ERC20DepositInitiated(l1Token, l2Token, _from, _to, _amount, _data); } function finalizeERC20Withdrawal( address _l1Token, address _l2Token, address _from, address _to, uint256 _amount, bytes calldata _data ) external override onlyFromCrossDomainAccount(l2DAITokenBridge) { require(_l1Token == l1Token && _l2Token == l2Token, "L1DAITokenBridge/token-not-dai"); TokenLike(l1Token).transferFrom(escrow, _to, _amount); emit ERC20WithdrawalFinalized(l1Token, l2Token, _from, _to, _amount, _data); } }
// SPDX-License-Identifier: MIT pragma solidity >0.5.0; pragma experimental ABIEncoderV2; /** * @title iOVM_L1ERC20Bridge */ interface iOVM_L1ERC20Bridge { /********** * Events * **********/ event ERC20DepositInitiated ( address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data ); event ERC20WithdrawalFinalized ( address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data ); /******************** * Public Functions * ********************/ /** * @dev deposit an amount of the ERC20 to the caller's balance on L2. * @param _l1Token Address of the L1 ERC20 we are depositing * @param _l2Token Address of the L1 respective L2 ERC20 * @param _amount Amount of the ERC20 to deposit * @param _l2Gas Gas limit required to complete the deposit on L2. * @param _data Optional data to forward to L2. This data is provided * solely as a convenience for external contracts. Aside from enforcing a maximum * length, these contracts provide no guarantees about its content. */ function depositERC20 ( address _l1Token, address _l2Token, uint _amount, uint32 _l2Gas, bytes calldata _data ) external; /** * @dev deposit an amount of ERC20 to a recipient's balance on L2. * @param _l1Token Address of the L1 ERC20 we are depositing * @param _l2Token Address of the L1 respective L2 ERC20 * @param _to L2 address to credit the withdrawal to. * @param _amount Amount of the ERC20 to deposit. * @param _l2Gas Gas limit required to complete the deposit on L2. * @param _data Optional data to forward to L2. This data is provided * solely as a convenience for external contracts. Aside from enforcing a maximum * length, these contracts provide no guarantees about its content. */ function depositERC20To ( address _l1Token, address _l2Token, address _to, uint _amount, uint32 _l2Gas, bytes calldata _data ) external; /************************* * Cross-chain Functions * *************************/ /** * @dev Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the * L1 ERC20 token. * This call will fail if the initialized withdrawal from L2 has not been finalized. * * @param _l1Token Address of L1 token to finalizeWithdrawal for. * @param _l2Token Address of L2 token where withdrawal was initiated. * @param _from L2 address initiating the transfer. * @param _to L1 address to credit the withdrawal to. * @param _amount Amount of the ERC20 to deposit. * @param _data Data provided by the sender on L2. This data is provided * solely as a convenience for external contracts. Aside from enforcing a maximum * length, these contracts provide no guarantees about its content. */ function finalizeERC20Withdrawal ( address _l1Token, address _l2Token, address _from, address _to, uint _amount, bytes calldata _data ) external; }
// SPDX-License-Identifier: MIT pragma solidity >0.5.0; pragma experimental ABIEncoderV2; /** * @title iOVM_L2ERC20Bridge */ interface iOVM_L2ERC20Bridge { /********** * Events * **********/ event WithdrawalInitiated ( address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data ); event DepositFinalized ( address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data ); event DepositFailed ( address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data ); /******************** * Public Functions * ********************/ /** * @dev initiate a withdraw of some tokens to the caller's account on L1 * @param _l2Token Address of L2 token where withdrawal was initiated. * @param _amount Amount of the token to withdraw. * param _l1Gas Unused, but included for potential forward compatibility considerations. * @param _data Optional data to forward to L1. This data is provided * solely as a convenience for external contracts. Aside from enforcing a maximum * length, these contracts provide no guarantees about its content. */ function withdraw ( address _l2Token, uint _amount, uint32 _l1Gas, bytes calldata _data ) external; /** * @dev initiate a withdraw of some token to a recipient's account on L1. * @param _l2Token Address of L2 token where withdrawal is initiated. * @param _to L1 adress to credit the withdrawal to. * @param _amount Amount of the token to withdraw. * param _l1Gas Unused, but included for potential forward compatibility considerations. * @param _data Optional data to forward to L1. This data is provided * solely as a convenience for external contracts. Aside from enforcing a maximum * length, these contracts provide no guarantees about its content. */ function withdrawTo ( address _l2Token, address _to, uint _amount, uint32 _l1Gas, bytes calldata _data ) external; /************************* * Cross-chain Functions * *************************/ /** * @dev Complete a deposit from L1 to L2, and credits funds to the recipient's balance of this * L2 token. * This call will fail if it did not originate from a corresponding deposit in OVM_l1TokenGateway. * @param _l1Token Address for the l1 token this is called with * @param _l2Token Address for the l2 token this is called with * @param _from Account to pull the deposit from on L2. * @param _to Address to receive the withdrawal at * @param _amount Amount of the token to withdraw * @param _data Data provider by the sender on L1. This data is provided * solely as a convenience for external contracts. Aside from enforcing a maximum * length, these contracts provide no guarantees about its content. */ function finalizeDeposit ( address _l1Token, address _l2Token, address _from, address _to, uint _amount, bytes calldata _data ) external; }
// SPDX-License-Identifier: MIT pragma solidity >0.5.0 <0.8.0; /* Interface Imports */ import { iOVM_CrossDomainMessenger } from "../../iOVM/bridge/messaging/iOVM_CrossDomainMessenger.sol"; /** * @title OVM_CrossDomainEnabled * @dev Helper contract for contracts performing cross-domain communications * * Compiler used: defined by inheriting contract * Runtime target: defined by inheriting contract */ contract OVM_CrossDomainEnabled { /************* * Variables * *************/ // Messenger contract used to send and recieve messages from the other domain. address public messenger; /*************** * Constructor * ***************/ /** * @param _messenger Address of the CrossDomainMessenger on the current layer. */ constructor( address _messenger ) { messenger = _messenger; } /********************** * Function Modifiers * **********************/ /** * Enforces that the modified function is only callable by a specific cross-domain account. * @param _sourceDomainAccount The only account on the originating domain which is * authenticated to call this function. */ modifier onlyFromCrossDomainAccount( address _sourceDomainAccount ) { require( msg.sender == address(getCrossDomainMessenger()), "OVM_XCHAIN: messenger contract unauthenticated" ); require( getCrossDomainMessenger().xDomainMessageSender() == _sourceDomainAccount, "OVM_XCHAIN: wrong sender of cross-domain message" ); _; } /********************** * Internal Functions * **********************/ /** * Gets the messenger, usually from storage. This function is exposed in case a child contract * needs to override. * @return The address of the cross-domain messenger contract which should be used. */ function getCrossDomainMessenger() internal virtual returns ( iOVM_CrossDomainMessenger ) { return iOVM_CrossDomainMessenger(messenger); } /** * Sends a message to an account on another domain * @param _crossDomainTarget The intended recipient on the destination domain * @param _message The data to send to the target (usually calldata to a function with * `onlyFromCrossDomainAccount()`) * @param _gasLimit The gasLimit for the receipt of the message on the target domain. */ function sendCrossDomainMessage( address _crossDomainTarget, uint32 _gasLimit, bytes memory _message ) internal { getCrossDomainMessenger().sendMessage(_crossDomainTarget, _message, _gasLimit); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.2 <0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } }
// SPDX-License-Identifier: MIT pragma solidity >0.5.0 <0.8.0; pragma experimental ABIEncoderV2; /** * @title iOVM_CrossDomainMessenger */ interface iOVM_CrossDomainMessenger { /********** * Events * **********/ event SentMessage(bytes message); event RelayedMessage(bytes32 msgHash); event FailedRelayedMessage(bytes32 msgHash); /************* * Variables * *************/ function xDomainMessageSender() external view returns (address); /******************** * Public Functions * ********************/ /** * Sends a cross domain message to the target messenger. * @param _target Target contract address. * @param _message Message to send to the target. * @param _gasLimit Gas limit for the provided message. */ function sendMessage( address _target, bytes calldata _message, uint32 _gasLimit ) external; }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2DAITokenBridge","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_l1messenger","type":"address"},{"internalType":"address","name":"_escrow","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"Closed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_l1Token","type":"address"},{"indexed":true,"internalType":"address","name":"_l2Token","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_data","type":"bytes"}],"name":"ERC20DepositInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_l1Token","type":"address"},{"indexed":true,"internalType":"address","name":"_l2Token","type":"address"},{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_data","type":"bytes"}],"name":"ERC20WithdrawalFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"inputs":[],"name":"close","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_l2Gas","type":"uint32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"depositERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_l2Gas","type":"uint32"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"depositERC20To","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"escrow","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"address","name":"_l2Token","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"finalizeERC20Withdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l1Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2DAITokenBridge","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"l2Token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"messenger","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
610100604052600160025534801561001657600080fd5b50604051611a67380380611a67833981810160405260a081101561003957600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505081806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a28473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050505050505060805160601c60a05160601c60c05160601c60e05160601c6117b06102b760003980610f68528061118b52806112775250806106e352806107d95280610a455280610e6a528061104e528061137052806114ed5250806105ab5280610c5d52806114ae52508061078352806109ef5280610e145280610f2c52806110855280611167528061123a528061134f528061152452506117b06000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806365fae35e1161008c578063a9f9e67511610066578063a9f9e675146103e6578063bf353dbb146104e9578063c01e1bd614610541578063e2fdcc1714610575576100cf565b806365fae35e1461026b578063838b2520146102af5780639c52a7f1146103a2576100cf565b80632e67f7c8146100d45780633cb747bf1461010857806343d726d61461013c57806347535d7b1461014657806356eff2671461016457806358a997f614610198575b600080fd5b6100dc6105a9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101106105cd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101446105f1565b005b61014e6106db565b6040518082815260200191505060405180910390f35b61016c6106e1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610269600480360360a08110156101ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803563ffffffff1690602001909291908035906020019064010000000081111561022557600080fd5b82018360208201111561023757600080fd5b8035906020019184600183028401116401000000008311171561025957600080fd5b9091929391929390505050610705565b005b6102ad6004803603602081101561028157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108af565b005b6103a0600480360360c08110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803563ffffffff1690602001909291908035906020019064010000000081111561035c57600080fd5b82018360208201111561036e57600080fd5b8035906020019184600183028401116401000000008311171561039057600080fd5b90919293919293905050506109ed565b005b6103e4600480360360208110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b1c565b005b6104e7600480360360c08110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111640100000000831117156104d757600080fd5b9091929391929390505050610c5b565b005b61052b600480360360208110156104ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061114d565b6040518082815260200191505060405180910390f35b610549611165565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61057d611189565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c31444149546f6b656e4272696467652f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60006002819055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b60025481565b7f000000000000000000000000000000000000000000000000000000000000000081565b61070e336111ad565b15610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c31444149546f6b656e4272696467652f53656e6465722d6e6f742d454f410081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614801561082757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b610899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4c31444149546f6b656e4272696467652f746f6b656e2d6e6f742d646169000081525060200191505060405180910390fd5b6108a73333868686866111c0565b505050505050565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c31444149546f6b656e4272696467652f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015610a9357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b610b05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4c31444149546f6b656e4272696467652f746f6b656e2d6e6f742d646169000081525060200191505060405180910390fd5b610b133386868686866111c0565b50505050505050565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c31444149546f6b656e4272696467652f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b7f0000000000000000000000000000000000000000000000000000000000000000610c846115eb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061171d602e913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d266115eb565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610d6b57600080fd5b505afa158015610d7f573d6000803e3d6000fd5b505050506040513d6020811015610d9557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061174b6030913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16148015610eb857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b610f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4c31444149546f6b656e4272696467652f746f6b656e2d6e6f742d646169000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd7f000000000000000000000000000000000000000000000000000000000000000087876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610ff957600080fd5b505af115801561100d573d6000803e3d6000fd5b505050506040513d602081101561102357600080fd5b8101908080519060200190929190505050508573ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a45050505050505050565b60016020528060005260406000206000915090505481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080823b905060008111915050919050565b600160025414611238576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4c31444149546f6b656e4272696467652f636c6f73656400000000000000000081525060200191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd877f0000000000000000000000000000000000000000000000000000000000000000876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561130757600080fd5b505af115801561131b573d6000803e3d6000fd5b505050506040513d602081101561133157600080fd5b810190808051906020019092919050505050600063662a633a60e01b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000008989898888604051602401808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506114d47f00000000000000000000000000000000000000000000000000000000000000008583611614565b8673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039689898888604051808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a450505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61161c6115eb565b73ffffffffffffffffffffffffffffffffffffffff16633dbb202b8483856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff168152602001806020018363ffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156116b1578082015181840152602081019050611696565b50505050905090810190601f1680156116de5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156116ff57600080fd5b505af1158015611713573d6000803e3d6000fd5b5050505050505056fe4f564d5f58434841494e3a206d657373656e67657220636f6e747261637420756e61757468656e746963617465644f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f6d61696e206d657373616765a26469706673582212209a26f15b4d60ae8cfb86d5d6224d7bf452f4d72ad62e2890eef0009e87dd871d64736f6c634300070600330000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c65000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da100000000000000000000000025ace71c97b33cc4729cf772ae268934f7ab5fa1000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c65
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806365fae35e1161008c578063a9f9e67511610066578063a9f9e675146103e6578063bf353dbb146104e9578063c01e1bd614610541578063e2fdcc1714610575576100cf565b806365fae35e1461026b578063838b2520146102af5780639c52a7f1146103a2576100cf565b80632e67f7c8146100d45780633cb747bf1461010857806343d726d61461013c57806347535d7b1461014657806356eff2671461016457806358a997f614610198575b600080fd5b6100dc6105a9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101106105cd565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101446105f1565b005b61014e6106db565b6040518082815260200191505060405180910390f35b61016c6106e1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610269600480360360a08110156101ae57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803563ffffffff1690602001909291908035906020019064010000000081111561022557600080fd5b82018360208201111561023757600080fd5b8035906020019184600183028401116401000000008311171561025957600080fd5b9091929391929390505050610705565b005b6102ad6004803603602081101561028157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108af565b005b6103a0600480360360c08110156102c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803563ffffffff1690602001909291908035906020019064010000000081111561035c57600080fd5b82018360208201111561036e57600080fd5b8035906020019184600183028401116401000000008311171561039057600080fd5b90919293919293905050506109ed565b005b6103e4600480360360208110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b1c565b005b6104e7600480360360c08110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104a357600080fd5b8201836020820111156104b557600080fd5b803590602001918460018302840111640100000000831117156104d757600080fd5b9091929391929390505050610c5b565b005b61052b600480360360208110156104ff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061114d565b6040518082815260200191505060405180910390f35b610549611165565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61057d611189565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b7f000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c6581565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c31444149546f6b656e4272696467652f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60006002819055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b60025481565b7f000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da181565b61070e336111ad565b15610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c31444149546f6b656e4272696467652f53656e6465722d6e6f742d454f410081525060200191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614801561082757507f000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b610899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4c31444149546f6b656e4272696467652f746f6b656e2d6e6f742d646169000081525060200191505060405180910390fd5b6108a73333868686866111c0565b505050505050565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c31444149546f6b656e4272696467652f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6060405160405180910390a250565b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015610a9357507f000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b610b05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4c31444149546f6b656e4272696467652f746f6b656e2d6e6f742d646169000081525060200191505060405180910390fd5b610b133386868686866111c0565b50505050505050565b60018060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f4c31444149546f6b656e4272696467652f6e6f742d617574686f72697a65640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff167f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b60405160405180910390a250565b7f000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c65610c846115eb565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061171d602e913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d266115eb565b73ffffffffffffffffffffffffffffffffffffffff16636e296e456040518163ffffffff1660e01b815260040160206040518083038186803b158015610d6b57600080fd5b505afa158015610d7f573d6000803e3d6000fd5b505050506040513d6020811015610d9557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614610e12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061174b6030913960400191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16148015610eb857507f000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b610f2a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4c31444149546f6b656e4272696467652f746f6b656e2d6e6f742d646169000081525060200191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166323b872dd7f000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c6587876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610ff957600080fd5b505af115801561100d573d6000803e3d6000fd5b505050506040513d602081101561102357600080fd5b8101908080519060200190929190505050508573ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff167f3ceee06c1e37648fcbb6ed52e17b3e1f275a1f8c7b22a84b2b84732431e046b388888888604051808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a45050505050505050565b60016020528060005260406000206000915090505481565b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81565b7f000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c6581565b600080823b905060008111915050919050565b600160025414611238576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4c31444149546f6b656e4272696467652f636c6f73656400000000000000000081525060200191505060405180910390fd5b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff166323b872dd877f000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c65876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561130757600080fd5b505af115801561131b573d6000803e3d6000fd5b505050506040513d602081101561133157600080fd5b810190808051906020019092919050505050600063662a633a60e01b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f7f000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da18989898888604051602401808873ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090506114d47f000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c658583611614565b8673ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da173ffffffffffffffffffffffffffffffffffffffff167f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff167f718594027abd4eaed59f95162563e0cc6d0e8d5b86b1c7be8b1b0ac3343d039689898888604051808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a450505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61161c6115eb565b73ffffffffffffffffffffffffffffffffffffffff16633dbb202b8483856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff168152602001806020018363ffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156116b1578082015181840152602081019050611696565b50505050905090810190601f1680156116de5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156116ff57600080fd5b505af1158015611713573d6000803e3d6000fd5b5050505050505056fe4f564d5f58434841494e3a206d657373656e67657220636f6e747261637420756e61757468656e746963617465644f564d5f58434841494e3a2077726f6e672073656e646572206f662063726f73732d646f6d61696e206d657373616765a26469706673582212209a26f15b4d60ae8cfb86d5d6224d7bf452f4d72ad62e2890eef0009e87dd871d64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c65000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da100000000000000000000000025ace71c97b33cc4729cf772ae268934f7ab5fa1000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c65
-----Decoded View---------------
Arg [0] : _l1Token (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [1] : _l2DAITokenBridge (address): 0x467194771dAe2967Aef3ECbEDD3Bf9a310C76C65
Arg [2] : _l2Token (address): 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1
Arg [3] : _l1messenger (address): 0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1
Arg [4] : _escrow (address): 0x467194771dAe2967Aef3ECbEDD3Bf9a310C76C65
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [1] : 000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c65
Arg [2] : 000000000000000000000000da10009cbd5d07dd0cecc66161fc93d7c9000da1
Arg [3] : 00000000000000000000000025ace71c97b33cc4729cf772ae268934f7ab5fa1
Arg [4] : 000000000000000000000000467194771dae2967aef3ecbedd3bf9a310c76c65
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.