Contract 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e

 
Txn Hash Method
Block
From
To
Value
0x6cb2e4ea44c400d0b0452bef4cf929e9c3f5cf498d25cab453f1198d6cbab5b4Approve461471502022-12-06 20:33:252 days 9 hrs ago0xa17a18df92d5bd8317ff9f388df29f884ebfeef0 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000528682930.001
0xceb5ea87622045f435b9b25ed9f9eb3af5588e1ba6d9b4fb6c3363c5d53b604eApprove459425902022-12-06 7:53:572 days 21 hrs ago0x786504696489e2b4755791d7585dbd620b2459f8 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000480279510.001
0x73eec063ce691a229b032b8e2ebb72bbc8df12042ddbd3ff9d4f517204e10666Approve450601882022-12-03 18:56:165 days 10 hrs ago0x6129aeaf582dd8b748772e19fb7a80af26d4c2d3 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000547026340.001
0x304a688e8d7c7f788214ee64667cd8cd1b4c053251305b78b0c360a4a4a96ee4Approve447135232022-12-02 18:34:546 days 11 hrs ago0xefd231e555f158e00d98508a4b2508e2c82da609 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000560496750.001
0xf76eba739f8c3673cc91fed7b82c5ada7299a0c6a0b7bc87324e345419d72e00Approve445663082022-12-02 9:54:316 days 19 hrs ago0xd59586b52f6f8c90c04c2b9718be7b2ac7d6cc61 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000524779880.001
0xd8b16d6e7df8cfa97eba4f31d908de18ed72a3f0578ac56af0fc407b5e216f21Approve444314682022-12-02 2:30:507 days 3 hrs ago0x62d51fa08b15411d9429133ae5f224abf3867729 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000486380440.001
0xf1ea2cc2a03a153afd1b4c950b478038b779880a675c6ab5638b3369c2714de6Approve442436962022-12-01 11:29:157 days 18 hrs ago0x3ebdb522301913a5203315c8a840a9ee99ce9eee IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000499457450.001
0x5a62e3b30634e088a859452128a1e7ea5fe44f5ff8ce3ba9f76812eae8bb92abApprove439680522022-11-30 17:16:188 days 12 hrs ago0xe678cfc15b444824bc1f3d7abe3645d9a34afcce IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000468287750.001
0xbd983e8743bba23a7d0b193a3f14a192746e1a4b01740d18bcd67f9b892c3de3Approve437541602022-11-30 5:29:149 days 17 mins ago0x91ea35c30bd1e609eb7a14d8975a138368259e3d IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000458391750.001
0x328dc1d1ed06ffbe8f0a7abbd025625f88af59c66915f29dde980c58299d2d79Approve420923172022-11-25 10:34:3713 days 19 hrs ago0x0a27f53e3d044465d07607ef7a048e71809f295e IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000471984310.001
0x45318f0f91ce032ce020607ff6b9f4daf30dc3ba15df3b080ad49ad5c78466d9Approve415875892022-11-24 6:04:0014 days 23 hrs ago0xbff734478f1d1e7a313f174f2444d0e366b034b7 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.000050677140.001
0x00ccebeeb6f767f69e85b3de89c719e088be2154cad13e040664dbc700d59c7eApprove415250262022-11-24 3:10:0915 days 2 hrs ago0x5b1c8cd6e98d8bca397fd09b0dcc9933d712ad13 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000502772490.001
0x6e06f478c089124da2a3d94e652f2681e0065dd3ea9b9ec231e5a2f3fb639b78Approve413399972022-11-23 14:05:1915 days 15 hrs ago0x51cfa61222807b1b9b00f92e21f0bded7796e9a9 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000776206670.001
0x54b698034c9cc65666f772cb0269fa15e0e2f27dee47999ea52341a65845d34bApprove398595012022-11-19 22:52:5219 days 6 hrs ago0xa5aa9d62bec32b98606fccf9f727e3d6e8f1339d IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000488376110.001
0x97c0e35c1afa84447604af4e1a33b0c4be5e9d119f9af34bb876ded873ca8f4fApprove397936432022-11-19 17:53:5619 days 11 hrs ago0x7ec723b4c7b77e784d188bc18d601b87871a42f7 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000665815680.001
0x7a8ebd9d16c554a0f71d5c1815e2caed6cee60c00918f70c0e7116a2641caabbApprove397935852022-11-19 17:53:4119 days 11 hrs ago0x7ec723b4c7b77e784d188bc18d601b87871a42f7 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000739794990.001
0x6edb4b7cf504dec3650c26ae2a0f591d59b1a93138f6e129f3396c46716b1a9eApprove394267922022-11-18 18:22:2120 days 11 hrs ago0xa91d548f8bef44c8cb9b6a9a001e704470a03a6a IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000505273590.001
0xe9babf3e81aec5f53904a25db5ac4bca49c01b4356dec6670c10295d6469c395Approve390158272022-11-17 11:47:5021 days 17 hrs ago0x6a0d078799f60c9a4a8c325e07800db05cc4e0ef IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000589622340.001
0x4b43cc64a0158e6ae78dccb604fc7f2ab7a96a963ada2610f429f70a942ae95dApprove389519532022-11-17 8:07:1221 days 21 hrs ago0x35c0578375d034b10dc73d8bb4d26f8c1bff0001 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000764789110.001
0x3a61b01297876d177f785a850ce8bdbe99509bb7265eb60e0ab2b79980d1d1fbApprove388390982022-11-17 0:10:5122 days 5 hrs ago0x670d89a5771e8122ec923c1d8ccdffb42f4131e8 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000567123340.001
0xe47faaf65656d70ece8b261d9bb42d4b2197dc956863ff84d86f3fc0fa913581Approve388142912022-11-16 20:54:5822 days 8 hrs ago0xe6b5a31d8bb53d2c769864ac137fe25f4989f1fd IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000835556040.001
0x0d78c828e0d5cb33cb78b7719dd63e0a691729550752164bff1be06bbf2e1a85Approve384414472022-11-15 14:06:4323 days 15 hrs ago0x80039dc3d5bb48ec4bd822c4e8828574fdcc51a6 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000801640070.001
0x2a308b1d218a95383e73882838cbed208eb6b6bd11dcd485922b9b1f5782f8bfApprove384241682022-11-15 13:11:5423 days 16 hrs ago0x87f3838742e5ff8958d7ce92aff4ecf07a1edcc8 IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000546601810.001
0x1bba5efc8e6a5e9dd5c55e357d6e540d162c642551b3885e0a46aa2b5455f06dApprove383946072022-11-15 11:21:4323 days 18 hrs ago0x8a75dcd9e98235c31cbd8ac0e92f47806dd3d66a IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000568896780.001
0xf078b5123da459da213ea59280a9a373675b6a3a3662fddd18655ebed222ade4Approve369075222022-11-11 2:41:4428 days 3 hrs ago0x33734d9ff30ad5e956a6bc4f64a51e253269e97a IN  0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether0.0000785348150.001
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x7fa31136582038866ca8e4495d8abca6b6146a09b2da0546bc9f0deac965a7a5469968142022-12-09 4:53:1353 mins ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x7fa31136582038866ca8e4495d8abca6b6146a09b2da0546bc9f0deac965a7a5469968142022-12-09 4:53:1353 mins ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x7fa31136582038866ca8e4495d8abca6b6146a09b2da0546bc9f0deac965a7a5469968142022-12-09 4:53:1353 mins ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x7fa31136582038866ca8e4495d8abca6b6146a09b2da0546bc9f0deac965a7a5469968142022-12-09 4:53:1353 mins ago 0x9c12939390052919af3155f41bf4160fd3666a6f 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x732cc862da8b55649eee5b42f10f1ba20e384e4c5177dc299247f47401094219469965452022-12-09 4:52:2853 mins ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x732cc862da8b55649eee5b42f10f1ba20e384e4c5177dc299247f47401094219469965452022-12-09 4:52:2853 mins ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x732cc862da8b55649eee5b42f10f1ba20e384e4c5177dc299247f47401094219469965452022-12-09 4:52:2853 mins ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x293998f6cc249b4b33ff160fdf94565da67dfd8d6fbfbf618a35b5dcb3677351469963052022-12-09 4:51:4354 mins ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x293998f6cc249b4b33ff160fdf94565da67dfd8d6fbfbf618a35b5dcb3677351469963052022-12-09 4:51:4354 mins ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x293998f6cc249b4b33ff160fdf94565da67dfd8d6fbfbf618a35b5dcb3677351469963052022-12-09 4:51:4354 mins ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x6c8a5804fddcba2c1f6500b7b1997405af1f68c5e57c816952cb1bb6a5c26495467850802022-12-08 13:00:0316 hrs 46 mins ago 0x3edde054bb0d66d15d16052dba1000dbce9f865e 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xebfa763a50d11cdb961b76bd4139b3dfcc1f15f5dbb2de1bfc3ea916407ed411465268702022-12-08 0:30:581 day 5 hrs ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xebfa763a50d11cdb961b76bd4139b3dfcc1f15f5dbb2de1bfc3ea916407ed411465268702022-12-08 0:30:581 day 5 hrs ago 0xa132dab612db5cb9fc9ac426a0cc215a3423f9c9 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xebfa763a50d11cdb961b76bd4139b3dfcc1f15f5dbb2de1bfc3ea916407ed411465268702022-12-08 0:30:581 day 5 hrs ago 0x9ae0b186db2378a33d63c5d8af59272db3de6b99 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xebfa763a50d11cdb961b76bd4139b3dfcc1f15f5dbb2de1bfc3ea916407ed411465268702022-12-08 0:30:581 day 5 hrs ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xebfa763a50d11cdb961b76bd4139b3dfcc1f15f5dbb2de1bfc3ea916407ed411465268702022-12-08 0:30:581 day 5 hrs ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xebfa763a50d11cdb961b76bd4139b3dfcc1f15f5dbb2de1bfc3ea916407ed411465268702022-12-08 0:30:581 day 5 hrs ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xebfa763a50d11cdb961b76bd4139b3dfcc1f15f5dbb2de1bfc3ea916407ed411465268702022-12-08 0:30:581 day 5 hrs ago 0x9ae0b186db2378a33d63c5d8af59272db3de6b99 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xef2fe80700d609ea2e33840ec98603665a1a146ae188e6748e4c7ec3dfef85d8465218452022-12-08 0:02:161 day 5 hrs ago 0x3edde054bb0d66d15d16052dba1000dbce9f865e 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xef2fe80700d609ea2e33840ec98603665a1a146ae188e6748e4c7ec3dfef85d8465218452022-12-08 0:02:161 day 5 hrs ago 0x3edde054bb0d66d15d16052dba1000dbce9f865e 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xef2fe80700d609ea2e33840ec98603665a1a146ae188e6748e4c7ec3dfef85d8465218452022-12-08 0:02:161 day 5 hrs ago 0xc4eab0d1d7616ea99c15698bb075c2adb8d2fdc5 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0xef2fe80700d609ea2e33840ec98603665a1a146ae188e6748e4c7ec3dfef85d8465218452022-12-08 0:02:161 day 5 hrs ago 0x060f77a667ea79e1cd793262db6c11c81ad3be9c 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x685418dbc8181eec217ad05bd38116dd0f41aa64d1e63cfa720a96f88dcef991465197552022-12-07 23:44:391 day 6 hrs ago 0x3edde054bb0d66d15d16052dba1000dbce9f865e 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x4b144f400ae1da4e955cb1b85a47844e862633f9442cb7eef7c0a6af944d2918462117952022-12-07 3:50:042 days 1 hr ago 0x3edde054bb0d66d15d16052dba1000dbce9f865e 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
0x23f33c85c28f622b6c01bb07a63877eeaae91158d81e4cfaf91051750e66c7a9461471822022-12-06 20:33:402 days 9 hrs ago 0xa4549b89a39f76d9d28415474aed7d06ec9935fe 0xcb59a0a753fdb7491d5f3d794316f1ade197b21e0 Ether
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x7c6b91d9be155a6db01f749217d76ff02a7227f2

Contract Name:
L2StandardERC20

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Optimistic.Etherscan.io on 2021-11-28
*/

// File @openzeppelin/contracts/token/ERC20/[email protected]

// SPDX-License-Identifier: MIT

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 @openzeppelin/contracts/token/ERC20/extensions/[email protected]

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


// File @openzeppelin/contracts/utils/[email protected]

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]

pragma solidity ^0.8.0;



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


// File @openzeppelin/contracts/utils/introspection/[email protected]

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 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 contracts/standards/L2StandardERC20.sol

pragma solidity ^0.8.9;


contract L2StandardERC20 is IL2StandardERC20, ERC20 {
    address public l1Token;
    address public l2Bridge;

    /**
     * @param _l2Bridge Address of the L2 standard bridge.
     * @param _l1Token Address of the corresponding L1 token.
     * @param _name ERC20 name.
     * @param _symbol ERC20 symbol.
     */
    constructor(
        address _l2Bridge,
        address _l1Token,
        string memory _name,
        string memory _symbol
    ) ERC20(_name, _symbol) {
        l1Token = _l1Token;
        l2Bridge = _l2Bridge;
    }

    modifier onlyL2Bridge() {
        require(msg.sender == l2Bridge, "Only L2 Bridge can mint and burn");
        _;
    }

    function supportsInterface(bytes4 _interfaceId) public pure returns (bool) {
        bytes4 firstSupportedInterface = bytes4(keccak256("supportsInterface(bytes4)")); // ERC165
        bytes4 secondSupportedInterface = IL2StandardERC20.l1Token.selector ^
            IL2StandardERC20.mint.selector ^
            IL2StandardERC20.burn.selector;
        return _interfaceId == firstSupportedInterface || _interfaceId == secondSupportedInterface;
    }

    function mint(address _to, uint256 _amount) public virtual onlyL2Bridge {
        _mint(_to, _amount);

        emit Mint(_to, _amount);
    }

    function burn(address _from, uint256 _amount) public virtual onlyL2Bridge {
        _burn(_from, _amount);

        emit Burn(_from, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_l2Bridge","type":"address"},{"internalType":"address","name":"_l1Token","type":"address"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"}],"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"}]

60806040523480156200001157600080fd5b50604051620013d7380380620013d783398101604081905262000034916200022f565b8151829082906200004d9060039060208501906200009f565b508051620000639060049060208401906200009f565b5050600580546001600160a01b039586166001600160a01b031991821617909155600680549690951695169490941790925550620002fc915050565b828054620000ad90620002bf565b90600052602060002090601f016020900481019282620000d157600085556200011c565b82601f10620000ec57805160ff19168380011785556200011c565b828001600101855582156200011c579182015b828111156200011c578251825591602001919060010190620000ff565b506200012a9291506200012e565b5090565b5b808211156200012a57600081556001016200012f565b80516001600160a01b03811681146200015d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018a57600080fd5b81516001600160401b0380821115620001a757620001a762000162565b604051601f8301601f19908116603f01168101908282118183101715620001d257620001d262000162565b81604052838152602092508683858801011115620001ef57600080fd5b600091505b83821015620002135785820183015181830184015290820190620001f4565b83821115620002255760008385830101525b9695505050505050565b600080600080608085870312156200024657600080fd5b620002518562000145565b9350620002616020860162000145565b60408601519093506001600160401b03808211156200027f57600080fd5b6200028d8883890162000178565b93506060870151915080821115620002a457600080fd5b50620002b38782880162000178565b91505092959194509250565b600181811c90821680620002d457607f821691505b60208210811415620002f657634e487b7160e01b600052602260045260246000fd5b50919050565b6110cb806200030c6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610215578063ae1f6aaf14610228578063c01e1bd61461026d578063dd62ed3e1461028d57600080fd5b806370a08231146101b157806395d89b41146101e75780639dc29fac146101ef578063a457c2d71461020257600080fd5b806323b872dd116100d357806323b872dd14610167578063313ce5671461017a578063395093511461018957806340c10f191461019c57600080fd5b806301ffc9a71461010557806306fdde031461012d578063095ea7b31461014257806318160ddd14610155575b600080fd5b610118610113366004610e4a565b6102d3565b60405190151581526020015b60405180910390f35b610135610393565b6040516101249190610e93565b610118610150366004610f2f565b610425565b6002545b604051908152602001610124565b610118610175366004610f59565b61043b565b60405160128152602001610124565b610118610197366004610f2f565b61050c565b6101af6101aa366004610f2f565b610555565b005b6101596101bf366004610f95565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61013561061a565b6101af6101fd366004610f2f565b610629565b610118610210366004610f2f565b6106e2565b610118610223366004610f2f565b6107a0565b6006546102489073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b6005546102489073ffffffffffffffffffffffffffffffffffffffff1681565b61015961029b366004610fb0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60007f01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e27f1d1d8b63000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000084167f01ffc9a700000000000000000000000000000000000000000000000000000000148061038b57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b949350505050565b6060600380546103a290610fe3565b80601f01602080910402602001604051908101604052809291908181526020018280546103ce90610fe3565b801561041b5780601f106103f05761010080835404028352916020019161041b565b820191906000526020600020905b8154815290600101906020018083116103fe57829003601f168201915b5050505050905090565b60006104323384846107ad565b50600192915050565b600061044884848461092d565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338452909152902054828110156104f45760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61050185338584036107ad565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091610432918590610550908690611066565b6107ad565b60065473ffffffffffffffffffffffffffffffffffffffff1633146105bc5760405162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e60448201526064016104eb565b6105c68282610b93565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161060e91815260200190565b60405180910390a25050565b6060600480546103a290610fe3565b60065473ffffffffffffffffffffffffffffffffffffffff1633146106905760405162461bcd60e51b815260206004820181905260248201527f4f6e6c79204c32204272696467652063616e206d696e7420616e64206275726e60448201526064016104eb565b61069a8282610c99565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161060e91815260200190565b33600090815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054828110156107895760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104eb565b61079633858584036107ad565b5060019392505050565b600061043233848461092d565b73ffffffffffffffffffffffffffffffffffffffff83166108355760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104eb565b73ffffffffffffffffffffffffffffffffffffffff82166108be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104eb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109b65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104eb565b73ffffffffffffffffffffffffffffffffffffffff8216610a3f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104eb565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610adb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104eb565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b1f908490611066565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b8591815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff8216610bf65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104eb565b8060026000828254610c089190611066565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610c42908490611066565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610d225760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104eb565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610dbe5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104eb565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610dfa90849061107e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610920565b600060208284031215610e5c57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610e8c57600080fd5b9392505050565b600060208083528351808285015260005b81811015610ec057858101830151858201604001528201610ea4565b81811115610ed2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610f2a57600080fd5b919050565b60008060408385031215610f4257600080fd5b610f4b83610f06565b946020939093013593505050565b600080600060608486031215610f6e57600080fd5b610f7784610f06565b9250610f8560208501610f06565b9150604084013590509250925092565b600060208284031215610fa757600080fd5b610e8c82610f06565b60008060408385031215610fc357600080fd5b610fcc83610f06565b9150610fda60208401610f06565b90509250929050565b600181811c90821680610ff757607f821691505b60208210811415611031577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561107957611079611037565b500190565b60008282101561109057611090611037565b50039056fea2646970667358221220cf6f2a647337a3023928b1f0a8286454f8c5755dd6ed9bb72c21a4693b3d555b64736f6c6343000809003300000000000000000000000042000000000000000000000000000000000000100000000000000000000000007697b462a7c4ff5f8b55bdbc2f4076c2af9cf51a000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000b536172636f7068616775730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005534152434f000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

17782:1466:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18477:454;;;;;;:::i;:::-;;:::i;:::-;;;516:14:1;;509:22;491:41;;479:2;464:18;18477:454:0;;;;;;;;6451:100;;;:::i;:::-;;;;;;;:::i;8618:169::-;;;;;;:::i;:::-;;:::i;7571:108::-;7659:12;;7571:108;;;1810:25:1;;;1798:2;1783:18;7571:108:0;1664:177:1;9269:492:0;;;;;;:::i;:::-;;:::i;7413:93::-;;;7496:2;2321:36:1;;2309:2;2294:18;7413:93:0;2179:184:1;10170:215:0;;;;;;:::i;:::-;;:::i;18939:146::-;;;;;;:::i;:::-;;:::i;:::-;;7742:127;;;;;;:::i;:::-;7843:18;;7816:7;7843:18;;;;;;;;;;;;7742:127;6670:104;;;:::i;19093:152::-;;;;;;:::i;:::-;;:::i;10888:413::-;;;;;;:::i;:::-;;:::i;8082:175::-;;;;;;:::i;:::-;;:::i;17870:23::-;;;;;;;;;;;;2735:42:1;2723:55;;;2705:74;;2693:2;2678:18;17870:23:0;2559:226:1;17841:22:0;;;;;;;;;8320:151;;;;;;:::i;:::-;8436:18;;;;8409:7;8436:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8320:151;18477:454;18546:4;18603:38;18697:125;18840:39;;;;;;:83;;-1:-1:-1;18883:40:0;;;;;;;;18840:83;18833:90;18477:454;-1:-1:-1;;;;18477:454:0:o;6451:100::-;6505:13;6538:5;6531:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6451:100;:::o;8618:169::-;8701:4;8718:39;4242:10;8741:7;8750:6;8718:8;:39::i;:::-;-1:-1:-1;8775:4:0;8618:169;;;;:::o;9269:492::-;9409:4;9426:36;9436:6;9444:9;9455:6;9426:9;:36::i;:::-;9502:19;;;9475:24;9502:19;;;:11;:19;;;;;;;;4242:10;9502:33;;;;;;;;9554:26;;;;9546:79;;;;-1:-1:-1;;;9546:79:0;;3699:2:1;9546:79:0;;;3681:21:1;3738:2;3718:18;;;3711:30;3777:34;3757:18;;;3750:62;3848:10;3828:18;;;3821:38;3876:19;;9546:79:0;;;;;;;;;9661:57;9670:6;4242:10;9711:6;9692:16;:25;9661:8;:57::i;:::-;-1:-1:-1;9749:4:0;;9269:492;-1:-1:-1;;;;9269:492:0:o;10170:215::-;4242:10;10258:4;10307:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;10258:4;;10275:80;;10298:7;;10307:47;;10344:10;;10307:47;:::i;:::-;10275:8;:80::i;18939:146::-;18404:8;;;;18390:10;:22;18382:67;;;;-1:-1:-1;;;18382:67:0;;4430:2:1;18382:67:0;;;4412:21:1;;;4449:18;;;4442:30;4508:34;4488:18;;;4481:62;4560:18;;18382:67:0;4228:356:1;18382:67:0;19022:19:::1;19028:3;19033:7;19022:5;:19::i;:::-;19064:3;19059:18;;;19069:7;19059:18;;;;1810:25:1::0;;1798:2;1783:18;;1664:177;19059:18:0::1;;;;;;;;18939:146:::0;;:::o;6670:104::-;6726:13;6759:7;6752:14;;;;;:::i;19093:152::-;18404:8;;;;18390:10;:22;18382:67;;;;-1:-1:-1;;;18382:67:0;;4430:2:1;18382:67:0;;;4412:21:1;;;4449:18;;;4442:30;4508:34;4488:18;;;4481:62;4560:18;;18382:67:0;4228:356:1;18382:67:0;19178:21:::1;19184:5;19191:7;19178:5;:21::i;:::-;19222:5;19217:20;;;19229:7;19217:20;;;;1810:25:1::0;;1798:2;1783:18;;1664:177;10888:413:0;4242:10;10981:4;11025:25;;;:11;:25;;;;;;;;;:34;;;;;;;;;;11078:35;;;;11070:85;;;;-1:-1:-1;;;11070:85:0;;4791:2:1;11070:85:0;;;4773:21:1;4830:2;4810:18;;;4803:30;4869:34;4849:18;;;4842:62;4940:7;4920:18;;;4913:35;4965:19;;11070:85:0;4589:401:1;11070:85:0;11191:67;4242:10;11214:7;11242:15;11223:16;:34;11191:8;:67::i;:::-;-1:-1:-1;11289:4:0;;10888:413;-1:-1:-1;;;10888:413:0:o;8082:175::-;8168:4;8185:42;4242:10;8209:9;8220:6;8185:9;:42::i;14572:380::-;14708:19;;;14700:68;;;;-1:-1:-1;;;14700:68:0;;5197:2:1;14700:68:0;;;5179:21:1;5236:2;5216:18;;;5209:30;5275:34;5255:18;;;5248:62;5346:6;5326:18;;;5319:34;5370:19;;14700:68:0;4995:400:1;14700:68:0;14787:21;;;14779:68;;;;-1:-1:-1;;;14779:68:0;;5602:2:1;14779:68:0;;;5584:21:1;5641:2;5621:18;;;5614:30;5680:34;5660:18;;;5653:62;5751:4;5731:18;;;5724:32;5773:19;;14779:68:0;5400:398:1;14779:68:0;14860:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14912:32;;1810:25:1;;;14912:32:0;;1783:18:1;14912:32:0;;;;;;;;14572:380;;;:::o;11791:733::-;11931:20;;;11923:70;;;;-1:-1:-1;;;11923:70:0;;6005:2:1;11923:70:0;;;5987:21:1;6044:2;6024:18;;;6017:30;6083:34;6063:18;;;6056:62;6154:7;6134:18;;;6127:35;6179:19;;11923:70:0;5803:401:1;11923:70:0;12012:23;;;12004:71;;;;-1:-1:-1;;;12004:71:0;;6411:2:1;12004:71:0;;;6393:21:1;6450:2;6430:18;;;6423:30;6489:34;6469:18;;;6462:62;6560:5;6540:18;;;6533:33;6583:19;;12004:71:0;6209:399:1;12004:71:0;12172:17;;;12148:21;12172:17;;;;;;;;;;;12208:23;;;;12200:74;;;;-1:-1:-1;;;12200:74:0;;6815:2:1;12200:74:0;;;6797:21:1;6854:2;6834:18;;;6827:30;6893:34;6873:18;;;6866:62;6964:8;6944:18;;;6937:36;6990:19;;12200:74:0;6613:402:1;12200:74:0;12310:17;;;;:9;:17;;;;;;;;;;;12330:22;;;12310:42;;12374:20;;;;;;;;:30;;12346:6;;12310:9;12374:30;;12346:6;;12374:30;:::i;:::-;;;;;;;;12439:9;12422:35;;12431:6;12422:35;;;12450:6;12422:35;;;;1810:25:1;;1798:2;1783:18;;1664:177;12422:35:0;;;;;;;;11912:612;11791:733;;;:::o;12811:399::-;12895:21;;;12887:65;;;;-1:-1:-1;;;12887:65:0;;7222:2:1;12887:65:0;;;7204:21:1;7261:2;7241:18;;;7234:30;7300:33;7280:18;;;7273:61;7351:18;;12887:65:0;7020:355:1;12887:65:0;13043:6;13027:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;13060:18:0;;;:9;:18;;;;;;;;;;:28;;13082:6;;13060:9;:28;;13082:6;;13060:28;:::i;:::-;;;;-1:-1:-1;;13104:37:0;;1810:25:1;;;13104:37:0;;;;13121:1;;13104:37;;1798:2:1;1783:18;13104:37:0;;;;;;;12811:399;;:::o;13543:591::-;13627:21;;;13619:67;;;;-1:-1:-1;;;13619:67:0;;7582:2:1;13619:67:0;;;7564:21:1;7621:2;7601:18;;;7594:30;7660:34;7640:18;;;7633:62;7731:3;7711:18;;;7704:31;7752:19;;13619:67:0;7380:397:1;13619:67:0;13786:18;;;13761:22;13786:18;;;;;;;;;;;13823:24;;;;13815:71;;;;-1:-1:-1;;;13815:71:0;;7984:2:1;13815:71:0;;;7966:21:1;8023:2;8003:18;;;7996:30;8062:34;8042:18;;;8035:62;8133:4;8113:18;;;8106:32;8155:19;;13815:71:0;7782:398:1;13815:71:0;13922:18;;;:9;:18;;;;;;;;;;13943:23;;;13922:44;;13988:12;:22;;13960:6;;13922:9;13988:22;;13960:6;;13988:22;:::i;:::-;;;;-1:-1:-1;;14028:37:0;;1810:25:1;;;14054:1:0;;14028:37;;;;;;1798:2:1;1783:18;14028:37:0;1664:177:1;14:332;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;180:9;167:23;230:66;223:5;219:78;212:5;209:89;199:117;;312:1;309;302:12;199:117;335:5;14:332;-1:-1:-1;;;14:332:1:o;543:656::-;655:4;684:2;713;702:9;695:21;745:6;739:13;788:6;783:2;772:9;768:18;761:34;813:1;823:140;837:6;834:1;831:13;823:140;;;932:14;;;928:23;;922:30;898:17;;;917:2;894:26;887:66;852:10;;823:140;;;981:6;978:1;975:13;972:91;;;1051:1;1046:2;1037:6;1026:9;1022:22;1018:31;1011:42;972:91;-1:-1:-1;1115:2:1;1103:15;1120:66;1099:88;1084:104;;;;1190:2;1080:113;;543:656;-1:-1:-1;;;543:656:1:o;1204:196::-;1272:20;;1332:42;1321:54;;1311:65;;1301:93;;1390:1;1387;1380:12;1301:93;1204:196;;;:::o;1405:254::-;1473:6;1481;1534:2;1522:9;1513:7;1509:23;1505:32;1502:52;;;1550:1;1547;1540:12;1502:52;1573:29;1592:9;1573:29;:::i;:::-;1563:39;1649:2;1634:18;;;;1621:32;;-1:-1:-1;;;1405:254:1:o;1846:328::-;1923:6;1931;1939;1992:2;1980:9;1971:7;1967:23;1963:32;1960:52;;;2008:1;2005;1998:12;1960:52;2031:29;2050:9;2031:29;:::i;:::-;2021:39;;2079:38;2113:2;2102:9;2098:18;2079:38;:::i;:::-;2069:48;;2164:2;2153:9;2149:18;2136:32;2126:42;;1846:328;;;;;:::o;2368:186::-;2427:6;2480:2;2468:9;2459:7;2455:23;2451:32;2448:52;;;2496:1;2493;2486:12;2448:52;2519:29;2538:9;2519:29;:::i;2790:260::-;2858:6;2866;2919:2;2907:9;2898:7;2894:23;2890:32;2887:52;;;2935:1;2932;2925:12;2887:52;2958:29;2977:9;2958:29;:::i;:::-;2948:39;;3006:38;3040:2;3029:9;3025:18;3006:38;:::i;:::-;2996:48;;2790:260;;;;;:::o;3055:437::-;3134:1;3130:12;;;;3177;;;3198:61;;3252:4;3244:6;3240:17;3230:27;;3198:61;3305:2;3297:6;3294:14;3274:18;3271:38;3268:218;;;3342:77;3339:1;3332:88;3443:4;3440:1;3433:15;3471:4;3468:1;3461:15;3268:218;;3055:437;;;:::o;3906:184::-;3958:77;3955:1;3948:88;4055:4;4052:1;4045:15;4079:4;4076:1;4069:15;4095:128;4135:3;4166:1;4162:6;4159:1;4156:13;4153:39;;;4172:18;;:::i;:::-;-1:-1:-1;4208:9:1;;4095:128::o;8185:125::-;8225:4;8253:1;8250;8247:8;8244:34;;;8258:18;;:::i;:::-;-1:-1:-1;8295:9:1;;8185:125::o

Swarm Source

ipfs://cf6f2a647337a3023928b1f0a8286454f8c5755dd6ed9bb72c21a4693b3d555b
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.