Contract 0x4200000000000000000000000000000000000006 14

 

Contract Overview

Boba Network: L2 Boba
Balance:
0 Ether

EtherValue:
$0.00
My Name Tag:
Not Available, login to update

ContractCreator:
GENESIS at txn GENESIS_4200000000000000000000000000000000000006

TokenTracker:
Txn Hash Method
Block
From
To
Value
0xbe2c85f624eeaa20b6624603ea69331067ac51d2a36ec379ab68129cd2ffe643Approve7788452022-08-18 23:45:29167 days 21 hrs ago0x65798e5c90a332bbfa37c793f8847c441df42d44 IN Boba Network: L2 Boba0 Ether0.00011849751.1
0x6e290c8bde08466a758636a91119517dab0abe328d88863ea953a6110e881686Approve7788422022-08-18 23:44:57167 days 21 hrs ago0x65798e5c90a332bbfa37c793f8847c441df42d44 IN Boba Network: L2 Boba0 Ether0.00018313251.7
0x03864c7299c878eaaeba482bfb04386606f1ab20d22df2dd5ebacaea2806fd5dApprove7788412022-08-18 23:44:23167 days 21 hrs ago0x65798e5c90a332bbfa37c793f8847c441df42d44 IN Boba Network: L2 Boba0 Ether0.0001551241.44
0xe43ae58a43d1e31128727df40936be90a6e29a90126f0b0ce7d6ab8c84514fd9Approve7788402022-08-18 23:44:04167 days 21 hrs ago0x65798e5c90a332bbfa37c793f8847c441df42d44 IN Boba Network: L2 Boba0 Ether0.0001551241.44
0x28995598b9abca210f2517249f4da164bae49163f56a6ed3058228b068b76ce7Approve7690402022-08-11 13:00:49175 days 8 hrs ago0x65798e5c90a332bbfa37c793f8847c441df42d44 IN Boba Network: L2 Boba0 Ether0.000122886721.44
0xb8b124749a7abd0f325bfc2bd10443b8921e4df825f7183920dda07192c5ae31Approve7690342022-08-11 13:00:20175 days 8 hrs ago0x65798e5c90a332bbfa37c793f8847c441df42d44 IN Boba Network: L2 Boba0 Ether0.000207946081.44
0xd8fa493d2048884bf4fb85a866bcbfc7ab1cf18d1671b7695f92b15de2f6a129Approve7690332022-08-11 12:59:59175 days 8 hrs ago0x65798e5c90a332bbfa37c793f8847c441df42d44 IN Boba Network: L2 Boba0 Ether0.000207946081.44
0x4cd41d55f8fde320acf7069053dd910bd1dec898385f4cf699053a74a9e0e20eTransfer7634812022-08-08 5:10:38178 days 16 hrs ago0x8947d877b80787f988920d45b438b86358a0a29f IN Boba Network: L2 Boba0 Ether0.0000692331
0x3ee35741d644b4637a7d7ab440bd1a899037f5788111c0b89a1800acb99832b1Transfer7634792022-08-08 5:09:48178 days 16 hrs ago0x8947d877b80787f988920d45b438b86358a0a29f IN Boba Network: L2 Boba0 Ether0.0000692331
0xec9416a8cdb219d801948a827875f173d3a10051d7c54dd61fa23d40d38d49f5Transfer7634762022-08-08 5:08:55178 days 16 hrs ago0x8947d877b80787f988920d45b438b86358a0a29f IN Boba Network: L2 Boba0 Ether0.0000692331
0x685c2232c080e1d1fc2e34d885bdb9f4b3d60df9fcdfde48165ecb7bbc1e8020Transfer3732292022-03-02 4:59:04337 days 16 hrs ago0x35b383efa16dbf569998ce2e4889b1dc6923c0b6 IN Boba Network: L2 Boba0 Ether0.000291970921
0x9dc29f78050589b1bf86ada2ce31b66badffed116041d377de1d145eae8a9329Transfer3624912022-02-26 5:43:07341 days 15 hrs ago0xbd039f0494cf848a60b2203147d8be51d4bde206 IN Boba Network: L2 Boba0 Ether0.0002998640061
0xfc1ff3978ddbe6b33f33ae1234ebe6993e1b966975319188e2d8a834f9ae5450Transfer2375762021-12-13 23:01:20415 days 22 hrs ago0x39414ff89b85a72029b9999d5189155a28cd9691 IN Boba Network: L2 Boba0 Ether0.0002209710
0xd4d0860e1d8757108c52216df6b12d5c896e1d5892961b2dcc20aacb715559ccTransfer2235182021-12-06 20:21:39423 days 53 mins ago0xd51c8b63a84d1088e5d0b8d99483a41430a66ea8 IN Boba Network: L2 Boba0 Ether0.0002209710
0xd7b38e1dfee2ffcde3a639c6a7cfa3c871db4a46e711d55a03ab266a26958057Transfer476182021-11-17 23:55:30441 days 21 hrs ago0x0af91fa049a7e1894f480bfe5bba20142c6c29a9 IN Boba Network: L2 Boba0 Ether0.0002210910
0xbdd3f3d34d4e142e3af3c1472506eef41773dec2ab9ff1dfc727c5d1e1aa7402Approve280122021-11-15 13:28:45444 days 7 hrs ago0x708c7690ca52642722023056921edafc78c7caef IN Boba Network: L2 Boba0 Ether0.0002245610
0x5bf0599604b90e0a7025f0706310f105499d0fa1ab6eabeff779b71bc0b424e6Approve280022021-11-15 13:28:21444 days 7 hrs ago0x708c7690ca52642722023056921edafc78c7caef IN Boba Network: L2 Boba0 Ether0.0002245610
0x596cb54f1f986b6c598d7ec765f744668575d9870d3fd3b5d3d3b59758132611Transfer249782021-11-15 9:28:35444 days 11 hrs ago0xbb02b1b914590f69e9f1942d205f77276b4b3ca9 IN Boba Network: L2 Boba0 Ether0.0002212110
0xf92ae1b6d284512f2bf25b6f175fc959200517f2edd693ae394a975104ce4cf5Transfer248962021-11-15 9:19:41444 days 11 hrs ago0xbb02b1b914590f69e9f1942d205f77276b4b3ca9 IN Boba Network: L2 Boba0 Ether0.0002212110
0x32f3a9753e46de7727ecefcf1f898064f95a27f723030ec24dc0853fab031f05Transfer772021-10-28 21:28:29461 days 23 hrs ago0x2f0a38ce0f670a4646efa95ea1e389aeac06fece IN Boba Network: L2 Boba0 Ether0.0002212110
GENESIS_42000000000000000000000000000000000000060x6080604002021-10-28 3:57:19462 days 17 hrs agoGENESIS IN  Create: OVM_ETH0 Ether00
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xd8c4406b01894fec43c740c58c05cd54e3d373e27a8633b32257a98dcb6ea9869555882023-02-02 11:47:299 hrs 27 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0xd8c4406b01894fec43c740c58c05cd54e3d373e27a8633b32257a98dcb6ea9869555882023-02-02 11:47:299 hrs 27 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0xd8c4406b01894fec43c740c58c05cd54e3d373e27a8633b32257a98dcb6ea9869555882023-02-02 11:47:299 hrs 27 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0xd8c4406b01894fec43c740c58c05cd54e3d373e27a8633b32257a98dcb6ea9869555882023-02-02 11:47:299 hrs 27 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0xd8c4406b01894fec43c740c58c05cd54e3d373e27a8633b32257a98dcb6ea9869555882023-02-02 11:47:299 hrs 27 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0xbf096492f0be162fb062d7a22352f9bdbb38214e7418b1e675dd1b622b2893759555032023-02-02 6:42:1214 hrs 33 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0xbf096492f0be162fb062d7a22352f9bdbb38214e7418b1e675dd1b622b2893759555032023-02-02 6:42:1214 hrs 33 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x96bfe865877aa0fa8a23be3a885121dd1563a02b754173268e97e173651b31999554402023-02-02 3:42:1917 hrs 33 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x96bfe865877aa0fa8a23be3a885121dd1563a02b754173268e97e173651b31999554402023-02-02 3:42:1917 hrs 33 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x71356f2e3ed27ed4bf9459db45d090e906151d465a2109b7b067a341f13a9e9b9552762023-02-01 22:16:2822 hrs 58 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x71356f2e3ed27ed4bf9459db45d090e906151d465a2109b7b067a341f13a9e9b9552762023-02-01 22:16:2822 hrs 58 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x71356f2e3ed27ed4bf9459db45d090e906151d465a2109b7b067a341f13a9e9b9552762023-02-01 22:16:2822 hrs 58 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x71356f2e3ed27ed4bf9459db45d090e906151d465a2109b7b067a341f13a9e9b9552762023-02-01 22:16:2822 hrs 58 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x71356f2e3ed27ed4bf9459db45d090e906151d465a2109b7b067a341f13a9e9b9552762023-02-01 22:16:2822 hrs 58 mins ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x55a4b3c85a04ba21c2461ead0a0ddf405773b2ee5ecb829696fd9b6b5db568df9549912023-02-01 12:24:031 day 8 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x55a4b3c85a04ba21c2461ead0a0ddf405773b2ee5ecb829696fd9b6b5db568df9549912023-02-01 12:24:031 day 8 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x55a4b3c85a04ba21c2461ead0a0ddf405773b2ee5ecb829696fd9b6b5db568df9549912023-02-01 12:24:031 day 8 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x55a4b3c85a04ba21c2461ead0a0ddf405773b2ee5ecb829696fd9b6b5db568df9549912023-02-01 12:24:031 day 8 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x55a4b3c85a04ba21c2461ead0a0ddf405773b2ee5ecb829696fd9b6b5db568df9549912023-02-01 12:24:031 day 8 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x035302eaefbbfa95607cbce4edf0c727df25e9dced3ca275cfe66a26089c52459549212023-02-01 9:42:201 day 11 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x035302eaefbbfa95607cbce4edf0c727df25e9dced3ca275cfe66a26089c52459549212023-02-01 9:42:201 day 11 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x1fc3b9753ff28ae093c0737f349fb10e4c8ba39bc20eab5f32b81a8f3b2d75509547832023-02-01 3:42:241 day 17 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0x1fc3b9753ff28ae093c0737f349fb10e4c8ba39bc20eab5f32b81a8f3b2d75509547832023-02-01 3:42:241 day 17 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0xa0ce80826e9eb42b2a1f8e3be151e32b1ec9af9f8718c70c7248666ea52b22289546292023-01-31 21:43:071 day 23 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
0xa0ce80826e9eb42b2a1f8e3be151e32b1ec9af9f8718c70c7248666ea52b22289546292023-01-31 21:43:071 day 23 hrs ago Boba Network: L2 Standard BridgeBoba Network: L2 Boba0 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Genesis Bytecode Match Only)

Contract Name:
OVM_ETH

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at bobascan.com on 2022-12-08
*/

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.2/contracts/utils/introspection/IERC165.sol



pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.3.2/contracts/token/ERC20/IERC20.sol



pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: packages/contracts/contracts/standards/IL2StandardERC20.sol


pragma solidity ^0.8.9;



interface IL2StandardERC20 is IERC20, IERC165 {
    function l1Token() external returns (address);

    function mint(address _to, uint256 _amount) external;

    function burn(address _from, uint256 _amount) external;

    event Mint(address indexed _account, uint256 _amount);
    event Burn(address indexed _account, uint256 _amount);
}

// File: packages/contracts/contracts/libraries/bridge/ICrossDomainMessenger.sol


pragma solidity >0.5.0 <0.9.0;

/**
 * @title ICrossDomainMessenger
 */
interface ICrossDomainMessenger {
    /**********
     * Events *
     **********/

    event SentMessage(
        address indexed target,
        address sender,
        bytes message,
        uint256 messageNonce,
        uint256 gasLimit
    );
    event RelayedMessage(bytes32 indexed msgHash);
    event FailedRelayedMessage(bytes32 indexed 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;
}

// File: packages/contracts/contracts/libraries/bridge/CrossDomainEnabled.sol


pragma solidity >0.5.0 <0.9.0;

/* Interface Imports */


/**
 * @title CrossDomainEnabled
 * @dev Helper contract for contracts performing cross-domain communications
 *
 * Compiler used: defined by inheriting contract
 * Runtime target: defined by inheriting contract
 */
contract 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 (ICrossDomainMessenger) {
        return ICrossDomainMessenger(messenger);
    }

    /**q
     * 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);
    }
}

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol


// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: @openzeppelin/contracts/utils/introspection/ERC165Checker.sol


// OpenZeppelin Contracts (last updated v4.8.0) (utils/introspection/ERC165Checker.sol)

pragma solidity ^0.8.0;


/**
 * @dev Library used to query support of an interface declared via {IERC165}.
 *
 * Note that these functions return the actual result of the query: they do not
 * `revert` if an interface is not supported. It is up to the caller to decide
 * what to do in these cases.
 */
library ERC165Checker {
    // As per the EIP-165 spec, no interface should ever match 0xffffffff
    bytes4 private constant _INTERFACE_ID_INVALID = 0xffffffff;

    /**
     * @dev Returns true if `account` supports the {IERC165} interface.
     */
    function supportsERC165(address account) internal view returns (bool) {
        // Any contract that implements ERC165 must explicitly indicate support of
        // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid
        return
            supportsERC165InterfaceUnchecked(account, type(IERC165).interfaceId) &&
            !supportsERC165InterfaceUnchecked(account, _INTERFACE_ID_INVALID);
    }

    /**
     * @dev Returns true if `account` supports the interface defined by
     * `interfaceId`. Support for {IERC165} itself is queried automatically.
     *
     * See {IERC165-supportsInterface}.
     */
    function supportsInterface(address account, bytes4 interfaceId) internal view returns (bool) {
        // query support of both ERC165 as per the spec and support of _interfaceId
        return supportsERC165(account) && supportsERC165InterfaceUnchecked(account, interfaceId);
    }

    /**
     * @dev Returns a boolean array where each value corresponds to the
     * interfaces passed in and whether they're supported or not. This allows
     * you to batch check interfaces for a contract where your expectation
     * is that some interfaces may not be supported.
     *
     * See {IERC165-supportsInterface}.
     *
     * _Available since v3.4._
     */
    function getSupportedInterfaces(address account, bytes4[] memory interfaceIds)
        internal
        view
        returns (bool[] memory)
    {
        // an array of booleans corresponding to interfaceIds and whether they're supported or not
        bool[] memory interfaceIdsSupported = new bool[](interfaceIds.length);

        // query support of ERC165 itself
        if (supportsERC165(account)) {
            // query support of each interface in interfaceIds
            for (uint256 i = 0; i < interfaceIds.length; i++) {
                interfaceIdsSupported[i] = supportsERC165InterfaceUnchecked(account, interfaceIds[i]);
            }
        }

        return interfaceIdsSupported;
    }

    /**
     * @dev Returns true if `account` supports all the interfaces defined in
     * `interfaceIds`. Support for {IERC165} itself is queried automatically.
     *
     * Batch-querying can lead to gas savings by skipping repeated checks for
     * {IERC165} support.
     *
     * See {IERC165-supportsInterface}.
     */
    function supportsAllInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool) {
        // query support of ERC165 itself
        if (!supportsERC165(account)) {
            return false;
        }

        // query support of each interface in interfaceIds
        for (uint256 i = 0; i < interfaceIds.length; i++) {
            if (!supportsERC165InterfaceUnchecked(account, interfaceIds[i])) {
                return false;
            }
        }

        // all interfaces supported
        return true;
    }

    /**
     * @notice Query if a contract implements an interface, does not check ERC165 support
     * @param account The address of the contract to query for support of an interface
     * @param interfaceId The interface identifier, as specified in ERC-165
     * @return true if the contract at account indicates support of the interface with
     * identifier interfaceId, false otherwise
     * @dev Assumes that account contains a contract that supports ERC165, otherwise
     * the behavior of this method is undefined. This precondition can be checked
     * with {supportsERC165}.
     * Interface identification is specified in ERC-165.
     */
    function supportsERC165InterfaceUnchecked(address account, bytes4 interfaceId) internal view returns (bool) {
        // prepare call
        bytes memory encodedParams = abi.encodeWithSelector(IERC165.supportsInterface.selector, interfaceId);

        // perform static call
        bool success;
        uint256 returnSize;
        uint256 returnValue;
        assembly {
            success := staticcall(30000, account, add(encodedParams, 0x20), mload(encodedParams), 0x00, 0x20)
            returnSize := returndatasize()
            returnValue := mload(0x00)
        }

        return success && returnSize >= 0x20 && returnValue > 0;
    }
}

// File: packages/contracts/contracts/L2/messaging/IL2ERC20Bridge.sol


pragma solidity ^0.8.9;

/**
 * @title IL2ERC20Bridge
 */
interface IL2ERC20Bridge {
    /**********
     * 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 get the address of the corresponding L1 bridge contract.
     * @return Address of the corresponding L1 bridge contract.
     */
    function l1TokenBridge() external returns (address);

    /**
     * @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,
        uint256 _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,
        uint256 _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
     * L1StandardTokenBridge.
     * @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,
        uint256 _amount,
        bytes calldata _data
    ) external;
}

// File: packages/contracts/contracts/L1/messaging/IL1ERC20Bridge.sol


pragma solidity >0.5.0 <0.9.0;

/**
 * @title IL1ERC20Bridge
 */
interface IL1ERC20Bridge {
    /**********
     * 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 get the address of the corresponding L2 bridge contract.
     * @return Address of the corresponding L2 bridge contract.
     */
    function l2TokenBridge() external returns (address);

    /**
     * @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,
        uint256 _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,
        uint256 _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,
        uint256 _amount,
        bytes calldata _data
    ) external;
}

// File: packages/contracts/contracts/L1/messaging/IL1StandardBridge.sol


pragma solidity >0.5.0 <0.9.0;


/**
 * @title IL1StandardBridge
 */
interface IL1StandardBridge is IL1ERC20Bridge {
    /**********
     * Events *
     **********/
    event ETHDepositInitiated(
        address indexed _from,
        address indexed _to,
        uint256 _amount,
        bytes _data
    );

    event ETHWithdrawalFinalized(
        address indexed _from,
        address indexed _to,
        uint256 _amount,
        bytes _data
    );

    /********************
     * Public Functions *
     ********************/

    /**
     * @dev Deposit an amount of the ETH to the caller's balance on L2.
     * @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 depositETH(uint32 _l2Gas, bytes calldata _data) external payable;

    /**
     * @dev Deposit an amount of ETH to a recipient's balance on L2.
     * @param _to L2 address to credit the withdrawal to.
     * @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 depositETHTo(
        address _to,
        uint32 _l2Gas,
        bytes calldata _data
    ) external payable;

    /*************************
     * Cross-chain Functions *
     *************************/

    /**
     * @dev Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the
     * L1 ETH token. Since only the xDomainMessenger can call this function, it will never be called
     * before the withdrawal is finalized.
     * @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 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 finalizeETHWithdrawal(
        address _from,
        address _to,
        uint256 _amount,
        bytes calldata _data
    ) external;
}

// File: packages/contracts/contracts/libraries/constants/Lib_PredeployAddresses.sol


pragma solidity ^0.8.9;

/**
 * @title Lib_PredeployAddresses
 */
library Lib_PredeployAddresses {
    // solhint-disable max-line-length
    address internal constant L2_TO_L1_MESSAGE_PASSER = 0x4200000000000000000000000000000000000000;
    address internal constant L1_MESSAGE_SENDER = 0x4200000000000000000000000000000000000001;
    address internal constant DEPLOYER_WHITELIST = 0x4200000000000000000000000000000000000002;
    address payable internal constant OVM_ETH = payable(0x4200000000000000000000000000000000000006);
    // solhint-disable-next-line max-line-length
    address internal constant L2_CROSS_DOMAIN_MESSENGER =
        0x4200000000000000000000000000000000000007;
    address internal constant LIB_ADDRESS_MANAGER = 0x4200000000000000000000000000000000000008;
    address internal constant PROXY_EOA = 0x4200000000000000000000000000000000000009;
    address internal constant L2_STANDARD_BRIDGE = 0x4200000000000000000000000000000000000010;
    address internal constant SEQUENCER_FEE_WALLET = 0x4200000000000000000000000000000000000011;
    address internal constant L2_STANDARD_TOKEN_FACTORY =
        0x4200000000000000000000000000000000000012;
    address internal constant L1_BLOCK_NUMBER = 0x4200000000000000000000000000000000000013;
    address internal constant OVM_GAS_PRICE_ORACLE = 0x420000000000000000000000000000000000000F;
    address internal constant PROXY__BOBA_TURING_PREPAY =
        0x4200000000000000000000000000000000000020;
    address internal constant BOBA_TURING_PREPAY = 0x4200000000000000000000000000000000000021;
    address internal constant BOBA_TURING_HELPER = 0x4200000000000000000000000000000000000022;
}

// File: packages/contracts/contracts/L2/messaging/L2StandardBridge.sol


pragma solidity ^0.8.9;

/* Interface Imports */




/* Library Imports */




/* Contract Imports */


/**
 * @title L2StandardBridge
 * @dev The L2 Standard bridge is a contract which works together with the L1 Standard bridge to
 * enable ETH and ERC20 transitions between L1 and L2.
 * This contract acts as a minter for new tokens when it hears about deposits into the L1 Standard
 * bridge.
 * This contract also acts as a burner of the tokens intended for withdrawal, informing the L1
 * bridge to release L1 funds.
 */
contract L2StandardBridge is IL2ERC20Bridge, CrossDomainEnabled {
    /********************************
     * External Contract References *
     ********************************/

    address public l1TokenBridge;

    /***************
     * Constructor *
     ***************/

    /**
     * @param _l2CrossDomainMessenger Cross-domain messenger used by this contract.
     * @param _l1TokenBridge Address of the L1 bridge deployed to the main chain.
     */
    constructor(address _l2CrossDomainMessenger, address _l1TokenBridge)
        CrossDomainEnabled(_l2CrossDomainMessenger)
    {
        l1TokenBridge = _l1TokenBridge;
    }

    /***************
     * Withdrawing *
     ***************/

    /**
     * @inheritdoc IL2ERC20Bridge
     */
    function withdraw(
        address _l2Token,
        uint256 _amount,
        uint32 _l1Gas,
        bytes calldata _data
    ) external virtual {
        _initiateWithdrawal(_l2Token, msg.sender, msg.sender, _amount, _l1Gas, _data);
    }

    /**
     * @inheritdoc IL2ERC20Bridge
     */
    function withdrawTo(
        address _l2Token,
        address _to,
        uint256 _amount,
        uint32 _l1Gas,
        bytes calldata _data
    ) external virtual {
        _initiateWithdrawal(_l2Token, msg.sender, _to, _amount, _l1Gas, _data);
    }

    /**
     * @dev Performs the logic for deposits by storing the token and informing the L2 token Gateway
     * of the deposit.
     * @param _l2Token Address of L2 token where withdrawal was initiated.
     * @param _from Account to pull the deposit from on L2.
     * @param _to Account to give the withdrawal to on L1.
     * @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 _initiateWithdrawal(
        address _l2Token,
        address _from,
        address _to,
        uint256 _amount,
        uint32 _l1Gas,
        bytes calldata _data
    ) internal {
        // When a withdrawal is initiated, we burn the withdrawer's funds to prevent subsequent L2
        // usage
        IL2StandardERC20(_l2Token).burn(msg.sender, _amount);

        // Construct calldata for l1TokenBridge.finalizeERC20Withdrawal(_to, _amount)
        address l1Token = IL2StandardERC20(_l2Token).l1Token();
        bytes memory message;

        if (_l2Token == Lib_PredeployAddresses.OVM_ETH) {
            message = abi.encodeWithSelector(
                IL1StandardBridge.finalizeETHWithdrawal.selector,
                _from,
                _to,
                _amount,
                _data
            );
        } else {
            message = abi.encodeWithSelector(
                IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
                l1Token,
                _l2Token,
                _from,
                _to,
                _amount,
                _data
            );
        }

        // Send message up to L1 bridge
        sendCrossDomainMessage(l1TokenBridge, _l1Gas, message);

        emit WithdrawalInitiated(l1Token, _l2Token, msg.sender, _to, _amount, _data);
    }

    /************************************
     * Cross-chain Function: Depositing *
     ************************************/

    /**
     * @inheritdoc IL2ERC20Bridge
     */
    function finalizeDeposit(
        address _l1Token,
        address _l2Token,
        address _from,
        address _to,
        uint256 _amount,
        bytes calldata _data
    ) external virtual onlyFromCrossDomainAccount(l1TokenBridge) {
        // Check the target token is compliant and
        // verify the deposited token on L1 matches the L2 deposited token representation here
        if (
            ERC165Checker.supportsInterface(_l2Token, 0x1d1d8b63) &&
            _l1Token == IL2StandardERC20(_l2Token).l1Token()
        ) {
            // When a deposit is finalized, we credit the account on L2 with the same amount of
            // tokens.
            IL2StandardERC20(_l2Token).mint(_to, _amount);
            emit DepositFinalized(_l1Token, _l2Token, _from, _to, _amount, _data);
        } else {
            // Either the L2 token which is being deposited-into disagrees about the correct address
            // of its L1 token, or does not support the correct interface.
            // This should only happen if there is a  malicious L2 token, or if a user somehow
            // specified the wrong L2 token address to deposit into.
            // In either case, we stop the process here and construct a withdrawal
            // message so that users can get their funds out in some cases.
            // There is no way to prevent malicious token contracts altogether, but this does limit
            // user error and mitigate some forms of malicious contract behavior.
            bytes memory message = abi.encodeWithSelector(
                IL1ERC20Bridge.finalizeERC20Withdrawal.selector,
                _l1Token,
                _l2Token,
                _to, // switched the _to and _from here to bounce back the deposit to the sender
                _from,
                _amount,
                _data
            );

            // Send message up to L1 bridge
            sendCrossDomainMessage(l1TokenBridge, 0, message);
            emit DepositFailed(_l1Token, _l2Token, _from, _to, _amount, _data);
        }
    }
}

// File: packages/contracts/contracts/L2/predeploys/OVM_SequencerFeeVault.sol


pragma solidity ^0.8.9;

/* Library Imports */


/* Contract Imports */


/**
 * @title OVM_SequencerFeeVault
 * @dev Simple holding contract for fees paid to the Sequencer. Likely to be replaced in the future
 * but "good enough for now".
 */
contract OVM_SequencerFeeVault {
    /*************
     * Constants *
     *************/

    // Minimum ETH balance that can be withdrawn in a single withdrawal.
    uint256 public constant MIN_WITHDRAWAL_AMOUNT = 15 ether;

    /*************
     * Variables *
     *************/

    // Address on L1 that will hold the fees once withdrawn. Dynamically initialized within l2geth.
    address public l1FeeWallet;

    /***************
     * Constructor *
     ***************/

    /**
     * @param _l1FeeWallet Initial address for the L1 wallet that will hold fees once withdrawn.
     * Currently HAS NO EFFECT in production because l2geth will mutate this storage slot during
     * the genesis block. This is ONLY for testing purposes.
     */
    constructor(address _l1FeeWallet) {
        l1FeeWallet = _l1FeeWallet;
    }

    /************
     * Fallback *
     ************/

    receive() external payable {}

    /********************
     * Public Functions *
     ********************/

    function withdraw() public {
        require(
            address(this).balance >= MIN_WITHDRAWAL_AMOUNT,
            // solhint-disable-next-line max-line-length
            "OVM_SequencerFeeVault: withdrawal amount must be greater than minimum withdrawal amount"
        );

        L2StandardBridge(Lib_PredeployAddresses.L2_STANDARD_BRIDGE).withdrawTo(
            Lib_PredeployAddresses.OVM_ETH,
            l1FeeWallet,
            address(this).balance,
            0,
            bytes("")
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs": [],"stateMutability": "nonpayable","type": "constructor"},{"anonymous": false,"inputs": [{"indexed": true,"internalType": "address","name": "owner","type": "address"},{"indexed": true,"internalType": "address","name": "spender","type": "address"},{"indexed": false,"internalType": "uint256","name": "value","type": "uint256"}],"name": "Approval","type": "event"},{"anonymous": false,"inputs": [{"indexed": true,"internalType": "address","name": "_account","type": "address"},{"indexed": false,"internalType": "uint256","name": "_amount","type": "uint256"}],"name": "Burn","type": "event"},{"anonymous": false,"inputs": [{"indexed": true,"internalType": "address","name": "_account","type": "address"},{"indexed": false,"internalType": "uint256","name": "_amount","type": "uint256"}],"name": "Mint","type": "event"},{"anonymous": false,"inputs": [{"indexed": true,"internalType": "address","name": "from","type": "address"},{"indexed": true,"internalType": "address","name": "to","type": "address"},{"indexed": false,"internalType": "uint256","name": "value","type": "uint256"}],"name": "Transfer","type": "event"},{"inputs": [{"internalType": "address","name": "owner","type": "address"},{"internalType": "address","name": "spender","type": "address"}],"name": "allowance","outputs": [{"internalType": "uint256","name": "","type": "uint256"}],"stateMutability": "view","type": "function"},{"inputs": [{"internalType": "address","name": "spender","type": "address"},{"internalType": "uint256","name": "amount","type": "uint256"}],"name": "approve","outputs": [{"internalType": "bool","name": "","type": "bool"}],"stateMutability": "nonpayable","type": "function"},{"inputs": [{"internalType": "address","name": "account","type": "address"}],"name": "balanceOf","outputs": [{"internalType": "uint256","name": "","type": "uint256"}],"stateMutability": "view","type": "function"},{"inputs": [{"internalType": "address","name": "_from","type": "address"},{"internalType": "uint256","name": "_amount","type": "uint256"}],"name": "burn","outputs": [],"stateMutability": "nonpayable","type": "function"},{"inputs": [],"name": "decimals","outputs": [{"internalType": "uint8","name": "","type": "uint8"}],"stateMutability": "view","type": "function"},{"inputs": [{"internalType": "address","name": "spender","type": "address"},{"internalType": "uint256","name": "subtractedValue","type": "uint256"}],"name": "decreaseAllowance","outputs": [{"internalType": "bool","name": "","type": "bool"}],"stateMutability": "nonpayable","type": "function"},{"inputs": [{"internalType": "address","name": "spender","type": "address"},{"internalType": "uint256","name": "addedValue","type": "uint256"}],"name": "increaseAllowance","outputs": [{"internalType": "bool","name": "","type": "bool"}],"stateMutability": "nonpayable","type": "function"},{"inputs": [],"name": "l1Token","outputs": [{"internalType": "address","name": "","type": "address"}],"stateMutability": "view","type": "function"},{"inputs": [],"name": "l2Bridge","outputs": [{"internalType": "address","name": "","type": "address"}],"stateMutability": "view","type": "function"},{"inputs": [{"internalType": "address","name": "_to","type": "address"},{"internalType": "uint256","name": "_amount","type": "uint256"}],"name": "mint","outputs": [],"stateMutability": "nonpayable","type": "function"},{"inputs": [],"name": "name","outputs": [{"internalType": "string","name": "","type": "string"}],"stateMutability": "view","type": "function"},{"inputs": [{"internalType": "bytes4","name": "_interfaceId","type": "bytes4"}],"name": "supportsInterface","outputs": [{"internalType": "bool","name": "","type": "bool"}],"stateMutability": "pure","type": "function"},{"inputs": [],"name": "symbol","outputs": [{"internalType": "string","name": "","type": "string"}],"stateMutability": "view","type": "function"},{"inputs": [],"name": "totalSupply","outputs": [{"internalType": "uint256","name": "","type": "uint256"}],"stateMutability": "view","type": "function"},{"inputs": [{"internalType": "address","name": "recipient","type": "address"},{"internalType": "uint256","name": "amount","type": "uint256"}],"name": "transfer","outputs": [{"internalType": "bool","name": "","type": "bool"}],"stateMutability": "nonpayable","type": "function"},{"inputs": [{"internalType": "address","name": "sender","type": "address"},{"internalType": "address","name": "recipient","type": "address"},{"internalType": "uint256","name": "amount","type": "uint256"}],"name": "transferFrom","outputs": [{"internalType": "bool","name": "","type": "bool"}],"stateMutability": "nonpayable","type": "function"}]

608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610237578063ae1f6aaf1461024a578063c01e1bd61461028f578063dd62ed3e146102af57600080fd5b806370a08231146101d357806395d89b41146102095780639dc29fac14610211578063a457c2d71461022457600080fd5b806323b872dd116100d357806323b872dd14610167578063313ce5671461017a57806339509351146101ab57806340c10f19146101be57600080fd5b806301ffc9a71461010557806306fdde031461012d578063095ea7b31461014257806318160ddd14610155575b600080fd5b610118610113366004610c8f565b6102f5565b60405190151581526020015b60405180910390f35b6101356103b5565b6040516101249190610cd8565b610118610150366004610d74565b610447565b6002545b604051908152602001610124565b610118610175366004610d9e565b6104fd565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000012168152602001610124565b6101186101b9366004610d74565b6105ae565b6101d16101cc366004610d74565b61065f565b005b6101596101e1366004610dda565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61013561073e565b6101d161021f366004610d74565b61074d565b610118610232366004610d74565b610820565b610118610245366004610d74565b6108d1565b60065461026a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b60055461026a9073ffffffffffffffffffffffffffffffffffffffff1681565b6101596102bd366004610df5565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60007f01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e27f1d1d8b63000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000084167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103ad57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b6060600380546103c490610e28565b80601f01602080910402602001604051908101604052809291908181526020018280546103f090610e28565b801561043d5780601f106104125761010080835404028352916020019161043d565b820191906000526020600020905b81548152906001019060200180831161042057829003601f168201915b5050505050905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f4f564d5f4554483a20617070726f76652069732064697361626c65642070656e60448201527f64696e67206675727468657220636f6d6d756e6974792064697363757373696f60648201527f6e2e000000000000000000000000000000000000000000000000000000000000608482015260009060a4015b60405180910390fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f4f564d5f4554483a207472616e7366657246726f6d2069732064697361626c6560448201527f642070656e64696e67206675727468657220636f6d6d756e697479206469736360648201527f757373696f6e2e00000000000000000000000000000000000000000000000000608482015260009060a4016104f4565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f4f564d5f4554483a20696e637265617365416c6c6f77616e636520697320646960448201527f7361626c65642070656e64696e67206675727468657220636f6d6d756e69747960648201527f2064697363757373696f6e2e0000000000000000000000000000000000000000608482015260009060a4016104f4565b60065473ffffffffffffffffffffffffffffffffffffffff1633146106e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e60448201526064016104f4565b6106ea8282610982565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161073291815260200190565b60405180910390a25050565b6060600480546103c490610e28565b60065473ffffffffffffffffffffffffffffffffffffffff1633146107ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e60448201526064016104f4565b6107d88282610aa2565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161073291815260200190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604c60248201527f4f564d5f4554483a206465637265617365416c6c6f77616e636520697320646960448201527f7361626c65642070656e64696e67206675727468657220636f6d6d756e69747960648201527f2064697363757373696f6e2e0000000000000000000000000000000000000000608482015260009060a4016104f4565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f4f564d5f4554483a207472616e736665722069732064697361626c656420706560448201527f6e64696e67206675727468657220636f6d6d756e69747920646973637573736960648201527f6f6e2e0000000000000000000000000000000000000000000000000000000000608482015260009060a4016104f4565b73ffffffffffffffffffffffffffffffffffffffff82166109ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104f4565b8060026000828254610a119190610eab565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610a4b908490610eab565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610b45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104f4565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104f4565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c37908490610ec3565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600060208284031215610ca157600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610cd157600080fd5b9392505050565b600060208083528351808285015260005b81811015610d0557858101830151858201604001528201610ce9565b81811115610d17576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d6f57600080fd5b919050565b60008060408385031215610d8757600080fd5b610d9083610d4b565b946020939093013593505050565b600080600060608486031215610db357600080fd5b610dbc84610d4b565b9250610dca60208501610d4b565b9150604084013590509250925092565b600060208284031215610dec57600080fd5b610cd182610d4b565b60008060408385031215610e0857600080fd5b610e1183610d4b565b9150610e1f60208401610d4b565b90509250929050565b600181811c90821680610e3c57607f821691505b60208210811415610e76577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610ebe57610ebe610e7c565b500190565b600082821015610ed557610ed5610e7c565b50039056fea164736f6c6343000809000a

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.