ETH Price: $2,754.97 (+0.90%)
    /

    Token

    Ether (ETH)

    Overview

    Max Total Supply

    14,025.442150192567606334 ETH

    Holders

    819,784

    Market

    Price

    $2,756.12 @ 1.000418 ETH (+0.99%)

    Onchain Market Cap

    $38,655,842.07

    Circulating Supply Market Cap

    $332,289,267,985.56

    Other Info

    Token Contract (WITH 18 Decimals)

    Balance
    0.002528639046644298 ETH

    Value
    $6.97 ( ~0.00252997282233346 ETH) [0.0000%]
    0x7b21fd69990be20e9a16cf7e65b867e768afcc63
    Loading...
    Loading
    Loading...
    Loading
    Loading...
    Loading

    OVERVIEW

    Ethereum is a global, open-source platform for decentralized applications. Eth is fueling transactions on the Chain.

    Market

    Volume (24H):$15,034,837,766.02
    Market Capitalization:$332,289,267,985.56
    Circulating Supply:120,564,025.00 ETH
    Market Data Source: Coinmarketcap

    This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

    Contract Source Code Verified (Genesis Bytecode Match Only)

    Contract Name:
    L2BaseToken

    Compiler Version
    v0.8.20+commit.a1b79de6

    ZkSolc Version
    v1.5.0

    Optimization Enabled:
    Yes with Mode 3

    Other Settings:
    default evmVersion, MIT license
    File 1 of 27 : L2BaseToken.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    import {IBaseToken} from "./interfaces/IBaseToken.sol";
    import {ISystemContract} from "./interfaces/ISystemContract.sol";
    import {MSG_VALUE_SYSTEM_CONTRACT, DEPLOYER_SYSTEM_CONTRACT, BOOTLOADER_FORMAL_ADDRESS, L1_MESSENGER_CONTRACT} from "./Constants.sol";
    import {IMailbox} from "./interfaces/IMailbox.sol";
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @notice Native ETH contract.
    * @dev It does NOT provide interfaces for personal interaction with tokens like `transfer`, `approve`, and `transferFrom`.
    * Instead, this contract is used by the bootloader and `MsgValueSimulator`/`ContractDeployer` system contracts
    * to perform the balance changes while simulating the `msg.value` Ethereum behavior.
    */
    contract L2BaseToken is IBaseToken, ISystemContract {
    /// @notice The balances of the users.
    mapping(address account => uint256 balance) internal balance;
    /// @notice The total amount of tokens that have been minted.
    uint256 public override totalSupply;
    /// @notice Transfer tokens from one address to another.
    /// @param _from The address to transfer the ETH from.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 2 of 27 : IBaseToken.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    interface IBaseToken {
    function balanceOf(uint256) external view returns (uint256);
    function transferFromTo(address _from, address _to, uint256 _amount) external;
    function totalSupply() external view returns (uint256);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function mint(address _account, uint256 _amount) external;
    function withdraw(address _l1Receiver) external payable;
    function withdrawWithMessage(address _l1Receiver, bytes calldata _additionalData) external payable;
    event Mint(address indexed account, uint256 amount);
    event Transfer(address indexed from, address indexed to, uint256 value);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 3 of 27 : ISystemContract.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    import {SystemContractHelper} from "../libraries/SystemContractHelper.sol";
    import {BOOTLOADER_FORMAL_ADDRESS, FORCE_DEPLOYER} from "../Constants.sol";
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @notice An abstract contract that is used to reuse modifiers across the system contracts.
    * @dev Solidity does not allow exporting modifiers via libraries, so
    * the only way to do reuse modifiers is to have a base contract
    * @dev Never add storage variables into this contract as some
    * system contracts rely on this abstract contract as on interface!
    */
    abstract contract ISystemContract {
    /// @notice Modifier that makes sure that the method
    /// can only be called via a system call.
    modifier onlySystemCall() {
    require(
    SystemContractHelper.isSystemCall() || SystemContractHelper.isSystemContract(msg.sender),
    "This method require system call flag"
    );
    _;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 4 of 27 : Constants.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    import {IAccountCodeStorage} from "./interfaces/IAccountCodeStorage.sol";
    import {INonceHolder} from "./interfaces/INonceHolder.sol";
    import {IContractDeployer} from "./interfaces/IContractDeployer.sol";
    import {IKnownCodesStorage} from "./interfaces/IKnownCodesStorage.sol";
    import {IImmutableSimulator} from "./interfaces/IImmutableSimulator.sol";
    import {IBaseToken} from "./interfaces/IBaseToken.sol";
    import {IL1Messenger} from "./interfaces/IL1Messenger.sol";
    import {ISystemContext} from "./interfaces/ISystemContext.sol";
    import {ICompressor} from "./interfaces/ICompressor.sol";
    import {IComplexUpgrader} from "./interfaces/IComplexUpgrader.sol";
    import {IBootloaderUtilities} from "./interfaces/IBootloaderUtilities.sol";
    import {IPubdataChunkPublisher} from "./interfaces/IPubdataChunkPublisher.sol";
    /// @dev All the system contracts introduced by zkSync have their addresses
    /// started from 2^15 in order to avoid collision with Ethereum precompiles.
    uint160 constant SYSTEM_CONTRACTS_OFFSET = 0x8000; // 2^15
    /// @dev Unlike the value above, it is not overridden for the purpose of testing and
    /// is identical to the constant value actually used as the system contracts offset on
    /// mainnet.
    uint160 constant REAL_SYSTEM_CONTRACTS_OFFSET = 0x8000;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 5 of 27 : IMailbox.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    interface IMailbox {
    function finalizeEthWithdrawal(
    uint256 _l2BatchNumber,
    uint256 _l2MessageIndex,
    uint16 _l2TxNumberInBlock,
    bytes calldata _message,
    bytes32[] calldata _merkleProof
    ) external;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 6 of 27 : SystemContractHelper.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    import {MAX_SYSTEM_CONTRACT_ADDRESS} from "../Constants.sol";
    import {CALLFLAGS_CALL_ADDRESS, CODE_ADDRESS_CALL_ADDRESS, EVENT_WRITE_ADDRESS, EVENT_INITIALIZE_ADDRESS, GET_EXTRA_ABI_DATA_ADDRESS,
        LOAD_CALLDATA_INTO_ACTIVE_PTR_CALL_ADDRESS, META_CODE_SHARD_ID_OFFSET, META_CALLER_SHARD_ID_OFFSET, META_SHARD_ID_OFFSET,
        META_AUX_HEAP_SIZE_OFFSET, META_HEAP_SIZE_OFFSET, META_PUBDATA_PUBLISHED_OFFSET, META_CALL_ADDRESS, PTR_CALLDATA_CALL_ADDRESS,
        PTR_ADD_INTO_ACTIVE_CALL_ADDRESS, PTR_SHRINK_INTO_ACTIVE_CALL_ADDRESS, PTR_PACK_INTO_ACTIVE_CALL_ADDRESS, PRECOMPILE_CALL_ADDRESS,
        SET_CONTEXT_VALUE_CALL_ADDRESS, TO_L1_CALL_ADDRESS} from "./SystemContractsCaller.sol";
    uint256 constant UINT32_MASK = type(uint32).max;
    uint256 constant UINT64_MASK = type(uint64).max;
    uint256 constant UINT128_MASK = type(uint128).max;
    uint256 constant ADDRESS_MASK = type(uint160).max;
    /// @notice NOTE: The `getZkSyncMeta` that is used to obtain this struct will experience a breaking change in 2024.
    struct ZkSyncMeta {
    uint32 pubdataPublished;
    uint32 heapSize;
    uint32 auxHeapSize;
    uint8 shardId;
    uint8 callerShardId;
    uint8 codeShardId;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 7 of 27 : IAccountCodeStorage.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    interface IAccountCodeStorage {
    function storeAccountConstructingCodeHash(address _address, bytes32 _hash) external;
    function storeAccountConstructedCodeHash(address _address, bytes32 _hash) external;
    function markAccountCodeHashAsConstructed(address _address) external;
    function getRawCodeHash(address _address) external view returns (bytes32 codeHash);
    function getCodeHash(uint256 _input) external view returns (bytes32 codeHash);
    function getCodeSize(uint256 _input) external view returns (uint256 codeSize);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 8 of 27 : INonceHolder.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    /**
    * @author Matter Labs
    * @dev Interface of the nonce holder contract -- a contract used by the system to ensure
    * that there is always a unique identifier for a transaction with a particular account (we call it nonce).
    * In other words, the pair of (address, nonce) should always be unique.
    * @dev Custom accounts should use methods of this contract to store nonces or other possible unique identifiers
    * for the transaction.
    */
    interface INonceHolder {
    event ValueSetUnderNonce(address indexed accountAddress, uint256 indexed key, uint256 value);
    /// @dev Returns the current minimal nonce for account.
    function getMinNonce(address _address) external view returns (uint256);
    /// @dev Returns the raw version of the current minimal nonce
    /// (equal to minNonce + 2^128 * deployment nonce).
    function getRawNonce(address _address) external view returns (uint256);
    /// @dev Increases the minimal nonce for the msg.sender.
    function increaseMinNonce(uint256 _value) external returns (uint256);
    /// @dev Sets the nonce value `key` as used.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 9 of 27 : IContractDeployer.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    interface IContractDeployer {
    /// @notice Defines the version of the account abstraction protocol
    /// that a contract claims to follow.
    /// - `None` means that the account is just a contract and it should never be interacted
    /// with as a custom account
    /// - `Version1` means that the account follows the first version of the account abstraction protocol
    enum AccountAbstractionVersion {
    None,
    Version1
    }
    /// @notice Defines the nonce ordering used by the account
    /// - `Sequential` means that it is expected that the nonces are monotonic and increment by 1
    /// at a time (the same as EOAs).
    /// - `Arbitrary` means that the nonces for the accounts can be arbitrary. The operator
    /// should serve the transactions from such an account on a first-come-first-serve basis.
    /// @dev This ordering is more of a suggestion to the operator on how the AA expects its transactions
    /// to be processed and is not considered as a system invariant.
    enum AccountNonceOrdering {
    Sequential,
    Arbitrary
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 10 of 27 : IKnownCodesStorage.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @notice The interface for the KnownCodesStorage contract, which is responsible
    * for storing the hashes of the bytecodes that have been published to the network.
    */
    interface IKnownCodesStorage {
    event MarkedAsKnown(bytes32 indexed bytecodeHash, bool indexed sendBytecodeToL1);
    function markFactoryDeps(bool _shouldSendToL1, bytes32[] calldata _hashes) external;
    function markBytecodeAsPublished(bytes32 _bytecodeHash) external;
    function getMarker(bytes32 _hash) external view returns (uint256);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 11 of 27 : IImmutableSimulator.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    struct ImmutableData {
    uint256 index;
    bytes32 value;
    }
    interface IImmutableSimulator {
    function getImmutable(address _dest, uint256 _index) external view returns (bytes32);
    function setImmutables(address _dest, ImmutableData[] calldata _immutables) external;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 12 of 27 : IL1Messenger.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    /// @dev The log passed from L2
    /// @param l2ShardId The shard identifier, 0 - rollup, 1 - porter. All other values are not used but are reserved for the future
    /// @param isService A boolean flag that is part of the log along with `key`, `value`, and `sender` address.
    /// This field is required formally but does not have any special meaning.
    /// @param txNumberInBlock The L2 transaction number in a block, in which the log was sent
    /// @param sender The L2 address which sent the log
    /// @param key The 32 bytes of information that was sent in the log
    /// @param value The 32 bytes of information that was sent in the log
    // Both `key` and `value` are arbitrary 32-bytes selected by the log sender
    struct L2ToL1Log {
    uint8 l2ShardId;
    bool isService;
    uint16 txNumberInBlock;
    address sender;
    bytes32 key;
    bytes32 value;
    }
    /// @dev Bytes in raw L2 to L1 log
    /// @dev Equal to the bytes size of the tuple - (uint8 ShardId, bool isService, uint16 txNumberInBlock, address sender, bytes32 key, bytes32 value)
    uint256 constant L2_TO_L1_LOG_SERIALIZE_SIZE = 88;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 13 of 27 : ISystemContext.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @notice Contract that stores some of the context variables, that may be either
    * block-scoped, tx-scoped or system-wide.
    */
    interface ISystemContext {
    struct BlockInfo {
    uint128 timestamp;
    uint128 number;
    }
    /// @notice A structure representing the timeline for the upgrade from the batch numbers to the L2 block numbers.
    /// @dev It will be used for the L1 batch -> L2 block migration in Q3 2023 only.
    struct VirtualBlockUpgradeInfo {
    /// @notice In order to maintain consistent results for `blockhash` requests, we'll
    /// have to remember the number of the batch when the upgrade to the virtual blocks has been done.
    /// The hashes for virtual blocks before the upgrade are identical to the hashes of the corresponding batches.
    uint128 virtualBlockStartBatch;
    /// @notice L2 block when the virtual blocks have caught up with the L2 blocks. Starting from this block,
    /// all the information returned to users for block.timestamp/number, etc should be the information about the L2 blocks and
    /// not virtual blocks.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 14 of 27 : ICompressor.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    // The bitmask by applying which to the compressed state diff metadata we retrieve its operation.
    uint8 constant OPERATION_BITMASK = 7;
    // The number of bits shifting the compressed state diff metadata by which we retrieve its length.
    uint8 constant LENGTH_BITS_OFFSET = 3;
    // The maximal length in bytes that an enumeration index can have.
    uint8 constant MAX_ENUMERATION_INDEX_SIZE = 8;
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @notice The interface for the Compressor contract, responsible for verifying the correctness of
    * the compression of the state diffs and bytecodes.
    */
    interface ICompressor {
    function publishCompressedBytecode(
    bytes calldata _bytecode,
    bytes calldata _rawCompressedData
    ) external returns (bytes32 bytecodeHash);
    function verifyCompressedStateDiffs(
    uint256 _numberOfStateDiffs,
    uint256 _enumerationIndexSize,
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 15 of 27 : IComplexUpgrader.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @notice The interface for the ComplexUpgrader contract.
    */
    interface IComplexUpgrader {
    function upgrade(address _delegateTo, bytes calldata _calldata) external payable;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 16 of 27 : IBootloaderUtilities.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    import {Transaction} from "../libraries/TransactionHelper.sol";
    interface IBootloaderUtilities {
    function getTransactionHashes(
    Transaction calldata _transaction
    ) external view returns (bytes32 txHash, bytes32 signedTxHash);
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 17 of 27 : IPubdataChunkPublisher.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @notice Interface for contract responsible chunking pubdata into the appropriate size for EIP-4844 blobs.
    */
    interface IPubdataChunkPublisher {
    /// @notice Chunks pubdata into pieces that can fit into blobs.
    /// @param _pubdata The total l2 to l1 pubdata that will be sent via L1 blobs.
    function chunkAndPublishPubdata(bytes calldata _pubdata) external;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 18 of 27 : SystemContractsCaller.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    import {MSG_VALUE_SYSTEM_CONTRACT, MSG_VALUE_SIMULATOR_IS_SYSTEM_BIT} from "../Constants.sol";
    import {Utils} from "./Utils.sol";
    // Addresses used for the compiler to be replaced with the
    // zkSync-specific opcodes during the compilation.
    // IMPORTANT: these are just compile-time constants and are used
    // only if used in-place by Yul optimizer.
    address constant TO_L1_CALL_ADDRESS = address((1 << 16) - 1);
    address constant CODE_ADDRESS_CALL_ADDRESS = address((1 << 16) - 2);
    address constant PRECOMPILE_CALL_ADDRESS = address((1 << 16) - 3);
    address constant META_CALL_ADDRESS = address((1 << 16) - 4);
    address constant MIMIC_CALL_CALL_ADDRESS = address((1 << 16) - 5);
    address constant SYSTEM_MIMIC_CALL_CALL_ADDRESS = address((1 << 16) - 6);
    address constant MIMIC_CALL_BY_REF_CALL_ADDRESS = address((1 << 16) - 7);
    address constant SYSTEM_MIMIC_CALL_BY_REF_CALL_ADDRESS = address((1 << 16) - 8);
    address constant RAW_FAR_CALL_CALL_ADDRESS = address((1 << 16) - 9);
    address constant RAW_FAR_CALL_BY_REF_CALL_ADDRESS = address((1 << 16) - 10);
    address constant SYSTEM_CALL_CALL_ADDRESS = address((1 << 16) - 11);
    address constant SYSTEM_CALL_BY_REF_CALL_ADDRESS = address((1 << 16) - 12);
    address constant SET_CONTEXT_VALUE_CALL_ADDRESS = address((1 << 16) - 13);
    address constant SET_PUBDATA_PRICE_CALL_ADDRESS = address((1 << 16) - 14);
    address constant INCREMENT_TX_COUNTER_CALL_ADDRESS = address((1 << 16) - 15);
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 19 of 27 : TransactionHelper.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    import {IERC20} from "../openzeppelin/token/ERC20/IERC20.sol";
    import {SafeERC20} from "../openzeppelin/token/ERC20/utils/SafeERC20.sol";
    import {IPaymasterFlow} from "../interfaces/IPaymasterFlow.sol";
    import {BASE_TOKEN_SYSTEM_CONTRACT, BOOTLOADER_FORMAL_ADDRESS} from "../Constants.sol";
    import {RLPEncoder} from "./RLPEncoder.sol";
    import {EfficientCall} from "./EfficientCall.sol";
    /// @dev The type id of zkSync's EIP-712-signed transaction.
    uint8 constant EIP_712_TX_TYPE = 0x71;
    /// @dev The type id of legacy transactions.
    uint8 constant LEGACY_TX_TYPE = 0x0;
    /// @dev The type id of legacy transactions.
    uint8 constant EIP_2930_TX_TYPE = 0x01;
    /// @dev The type id of EIP1559 transactions.
    uint8 constant EIP_1559_TX_TYPE = 0x02;
    /// @notice Structure used to represent a zkSync transaction.
    struct Transaction {
    // The type of the transaction.
    uint256 txType;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 20 of 27 : Utils.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    import {EfficientCall} from "./EfficientCall.sol";
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @dev Common utilities used in zkSync system contracts
    */
    library Utils {
    /// @dev Bit mask of bytecode hash "isConstructor" marker
    bytes32 constant IS_CONSTRUCTOR_BYTECODE_HASH_BIT_MASK =
    0x00ff000000000000000000000000000000000000000000000000000000000000;
    /// @dev Bit mask to set the "isConstructor" marker in the bytecode hash
    bytes32 constant SET_IS_CONSTRUCTOR_MARKER_BIT_MASK =
    0x0001000000000000000000000000000000000000000000000000000000000000;
    function safeCastToU128(uint256 _x) internal pure returns (uint128) {
    require(_x <= type(uint128).max, "Overflow");
    return uint128(_x);
    }
    function safeCastToU32(uint256 _x) internal pure returns (uint32) {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 21 of 27 : IERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)
    pragma solidity ^0.8.0;
    /**
    * @dev Interface of the ERC20 standard as defined in the EIP.
    */
    interface IERC20 {
    /**
    * @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);
    /**
    * @dev Returns the amount of tokens in existence.
    */
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 22 of 27 : SafeERC20.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/utils/SafeERC20.sol)
    pragma solidity ^0.8.0;
    import {IERC20} from "../IERC20.sol";
    import {IERC20Permit} from "../extensions/IERC20Permit.sol";
    import {Address} from "../../../utils/Address.sol";
    /**
    * @title SafeERC20
    * @dev Wrappers around ERC20 operations that throw on failure (when the token
    * contract returns false). Tokens that return no value (and instead revert or
    * throw on failure) are also supported, non-reverting calls are assumed to be
    * successful.
    * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
    * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
    */
    library SafeERC20 {
    using Address for address;
    function safeTransfer(
    IERC20 token,
    address to,
    uint256 value
    ) internal {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 23 of 27 : IPaymasterFlow.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    /**
    * @author Matter Labs
    * @dev The interface that is used for encoding/decoding of
    * different types of paymaster flows.
    * @notice This is NOT an interface to be implemented
    * by contracts. It is just used for encoding.
    */
    interface IPaymasterFlow {
    function general(bytes calldata input) external;
    function approvalBased(address _token, uint256 _minAllowance, bytes calldata _innerInput) external;
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 24 of 27 : RLPEncoder.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @notice This library provides RLP encoding functionality.
    */
    library RLPEncoder {
    function encodeAddress(address _val) internal pure returns (bytes memory encoded) {
    // The size is equal to 20 bytes of the address itself + 1 for encoding bytes length in RLP.
    encoded = new bytes(0x15);
    bytes20 shiftedVal = bytes20(_val);
    assembly {
    // In the first byte we write the encoded length as 0x80 + 0x14 == 0x94.
    mstore(add(encoded, 0x20), 0x9400000000000000000000000000000000000000000000000000000000000000)
    // Write address data without stripping zeros.
    mstore(add(encoded, 0x21), shiftedVal)
    }
    }
    function encodeUint256(uint256 _val) internal pure returns (bytes memory encoded) {
    unchecked {
    if (_val < 128) {
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 25 of 27 : EfficientCall.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // SPDX-License-Identifier: MIT
    pragma solidity 0.8.20;
    import {SystemContractHelper, ADDRESS_MASK} from "./SystemContractHelper.sol";
    import {SystemContractsCaller, CalldataForwardingMode, RAW_FAR_CALL_BY_REF_CALL_ADDRESS, SYSTEM_CALL_BY_REF_CALL_ADDRESS,
        MSG_VALUE_SIMULATOR_IS_SYSTEM_BIT, MIMIC_CALL_BY_REF_CALL_ADDRESS} from "./SystemContractsCaller.sol";
    import {Utils} from "./Utils.sol";
    import {SHA256_SYSTEM_CONTRACT, KECCAK256_SYSTEM_CONTRACT, MSG_VALUE_SYSTEM_CONTRACT} from "../Constants.sol";
    /**
    * @author Matter Labs
    * @custom:security-contact security@matterlabs.dev
    * @notice This library is used to perform ultra-efficient calls using zkEVM-specific features.
    * @dev EVM calls always accept a memory slice as input and return a memory slice as output.
    * Therefore, even if the user has a ready-made calldata slice, they still need to copy it to memory
    * before calling. This is especially inefficient for large inputs (proxies, multi-calls, etc.).
    * In turn, zkEVM operates over a fat pointer, which is a set of (memory page, offset, start, length) in the memory/calldata/returndata.
    * This allows forwarding the calldata slice as is, without copying it to memory.
    * @dev Fat pointer is not just an integer, it is an extended data type supported on the VM level.
    * zkEVM creates the wellformed fat pointers for all the calldata/returndata regions, later
    * the contract may manipulate the already created fat pointers to forward a slice of the data, but not
    * to create new fat pointers!
    * @dev The allowed operation on fat pointers are:
    * 1. `ptr.add` - Transforms `ptr.offset` into `ptr.offset + u32(_value)`. If overflow happens then it panics.
    * 2. `ptr.sub` - Transforms `ptr.offset` into `ptr.offset - u32(_value)`. If underflow happens then it panics.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 26 of 27 : IERC20Permit.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Permit.sol)
    pragma solidity ^0.8.0;
    /**
    * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
    * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
    *
    * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
    * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
    * need to send a transaction, and thus is not required to hold Ether at all.
    */
    interface IERC20Permit {
    /**
    * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,
    * given ``owner``'s signed approval.
    *
    * IMPORTANT: The same issues {IERC20-approve} has related to transaction
    * ordering also apply here.
    *
    * Emits an {Approval} event.
    *
    * Requirements:
    *
    * - `spender` cannot be the zero address.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    File 27 of 27 : Address.sol
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    // SPDX-License-Identifier: MIT
    // OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)
    pragma solidity ^0.8.1;
    /**
    * @dev Collection of functions related to the address type
    */
    library Address {
    /**
    * @dev Returns true if `account` is a contract.
    *
    * [IMPORTANT]
    * ====
    * It is unsafe to assume that an address for which this function returns
    * false is an externally-owned account (EOA) and not a contract.
    *
    * Among others, `isContract` will return false for the following
    * types of addresses:
    *
    * - an externally-owned account
    * - a contract in construction
    * - an address where a contract will be created
    * - an address where a contract lived, but was destroyed
    * ====
    *
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Settings
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {
    "optimizer": {
    "enabled": true,
    "mode": "3"
    },
    "outputSelection": {
    "*": {
    "*": [
    "storageLayout",
    "abi",
    "evm.methodIdentifiers",
    "metadata"
    ],
    "": [
    "ast"
    ]
    }
    },
    "evmVersion": "paris",
    "libraries": {}
    }
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Contract Security Audit

    Contract ABI

    [{"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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_l2Sender","type":"address"},{"indexed":true,"internalType":"address","name":"_l1Receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_l2Sender","type":"address"},{"indexed":true,"internalType":"address","name":"_l1Receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"_additionalData","type":"bytes"}],"name":"WithdrawalWithMessage","type":"event"},{"inputs":[{"internalType":"uint256","name":"_account","type":"uint256"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_account","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":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFromTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_l1Receiver","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_l1Receiver","type":"address"},{"internalType":"bytes","name":"_additionalData","type":"bytes"}],"name":"withdrawWithMessage","outputs":[],"stateMutability":"payable","type":"function"}]

    0x00050000000000020000008003000039000000400030043f00000000030100190000006003300270000000d8033001970000000102200190000000240000c13d000000040230008c0000030b0000413d000000000201043b000000e002200270000000da0420009c0000002c0000a13d000000db0420009c000000380000a13d000000dc0420009c000000b20000613d000000dd0420009c000002040000613d000000de0220009c0000030b0000c13d0000000002000416000000000202004b0000030b0000c13d000000040230008a000000200220008c0000030b0000413d0000000401100370000000000101043b000000e6011001970000000000100435000000200000043f00000000010000190359033d0000040f000000360000013d0000000001000416000000000101004b0000030b0000c13d000000200100003900000100001004430000012000000443000000d9010000410000035a0001042e000000e10420009c0000007a0000213d000000e40120009c000001c20000613d000000e50120009c0000030b0000c13d0000000001000416000000000101004b0000030b0000c13d0000000101000039000000000101041a000002010000013d000000df0420009c000001cb0000613d000000e00220009c0000030b0000c13d0000000002000416000000000202004b0000030b0000c13d000000040230008a000000600220008c0000030b0000413d0000000402100370000000000402043b000000e60240009c0000030b0000213d0000002402100370000000000202043b000000e605200197000000e60220009c0000030b0000213d0000004401100370000000000101043b000400000001001d0000000001000411000080010210008c000000550000613d000080060210008c000000550000613d000080090110008c000002940000c13d0000000000400435000000200000043f000000d8010000410000000002000414000000d80320009c0000000002018019000000c001200210000000ec011001c70000801002000039000500000004001d000300000005001d035903540000040f000000050300002900000001022001900000030b0000613d000000000101043b000000000201041a000000040120006c000002c30000813d000000400100043d0000004402100039000000f303000041000000000032043500000024021000390000001f030000390000000000320435000000f4020000410000000000210435000000040210003900000020030000390000000000320435000000d802000041000000d80310009c00000000010280190000004001100210000000f5011001c70000035b00010430000000e20420009c000001fd0000613d000000e30220009c0000030b0000c13d0000000002000416000000000202004b0000030b0000c13d000000040230008a000000400220008c0000030b0000413d0000000402100370000000000402043b000000e60240009c0000030b0000213d0000002401100370000000000501043b0000000001000411000080010110008c000002190000c13d0000000101000039000000000301041a0000000002530019000000000332004b000000000300001900000001030040390000000103300190000000ae0000c13d000400000005001d000000000021041b0000000000400435000000200000043f000000d8010000410000000002000414000000d80320009c0000000002018019000000c001200210000000ec011001c70000801002000039000500000004001d035903540000040f000000050500002900000001022001900000030b0000613d000000000101043b000000000301041a00000004040000290000000002430019000000000332004b000000000300001900000001030040390000000103300190000002f60000613d000000fb0100004100000000001004350000001101000039000001fa0000013d000000040230008a000000400220008c0000030b0000413d0000000402100370000000000802043b000000e60280009c0000030b0000213d0000002402100370000000000402043b000000ea0240009c0000030b0000213d0000002302400039000000eb05000041000000000632004b00000000060000190000000006058019000000eb02200197000000000702004b0000000005008019000000eb0220009c000000000506c019000000000205004b0000030b0000c13d0000000405400039000000000251034f000000000202043b000000ea0620009c000001f70000213d000000bf06200039000000200900008a000000000696016f000000ea0760009c000001f70000213d000000400060043f000000800020043f00000000042400190000002404400039000000000334004b0000030b0000213d0000002003500039000000000131034f0000001f0320018f0000000504200272000000e70000613d00000000050000190000000506500210000000000761034f000000000707043b000000a00660003900000000007604350000000105500039000000000645004b000000df0000413d000400000009001d000500000008001d000000000503004b000000f80000613d0000000504400210000000000141034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000a001200039000000000001043500000000010004100000000000100435000000200000043f000000d8010000410000000002000414000000d80320009c0000000002018019000000c001200210000000ec011001c70000801002000039035903540000040f0000000102200190000000050400002900000004070000290000030b0000613d000000000101043b000000000201041a00000000090004160000000002920049000000000021041b0000000101000039000000000201041a0000000002920049000000000021041b000000ed02000041000000400100043d000000200310003900000000002304350000006002400210000000240310003900000000002304350000000008000411000000600280021000000058031000390000000000230435000000380210003900000000009204350000006c03100039000000800200043d000000000402004b0000012b0000613d00000000040000190000000005340019000000a006400039000000000606043300000000006504350000002004400039000000000524004b000001240000413d000000000332001900000000000304350000004c0320003900000000003104350000008b02200039000000000272016f000000000a12001900000000022a004b00000000020000190000000102004039000000ea03a0009c000001f70000213d0000000102200190000001f70000c13d000100000009001d000200000008001d0000004000a0043f000000ee0200004100000000002a04350000000402a000390000002003000039000000000032043500000000020104330000002403a0003900000000002304350000004403a00039000000000402004b0000014f0000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000001480000413d000000000132001900000000000104350000001f01200039000000000171016f000000d802000041000000d803a0009c000000000302001900000000030a401900000040033002100000004401100039000000d80410009c00000000010280190000006001100210000000000131019f0000000003000414000000d80430009c0000000003028019000000c002300210000000000112019f000080080200003900030000000a001d0359034f0000040f000000030a00002900000000030100190000006003300270000000d803300197000000200430008c000000000403001900000020040080390000001f0540018f0000000506400272000001780000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001700000413d000000000705004b000001870000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f000000000056043500000001022001900000030d0000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000000ea0410009c0000000504000029000001f70000213d0000000102200190000001f70000c13d000000400010043f000000200230008c0000030b0000413d000000200210003900000040030000390000000000320435000000010200002900000000002104350000004003100039000000800200043d00000000002304350000006003100039000000e606400197000000000402004b000001ab0000613d00000000040000190000000005340019000000a007400039000000000707043300000000007504350000002004400039000000000524004b000001a40000413d000000000332001900000000000304350000007f02200039000000040220017f000000d803000041000000d80410009c00000000010380190000004001100210000000d80420009c00000000020380190000006002200210000000000112019f0000000002000414000000d80420009c0000000002038019000000c002200210000000000112019f000000ef011001c70000800d020000390000000303000039000000f0040000410000000205000029000003060000013d0000000001000416000000000101004b0000030b0000c13d000000c001000039000000400010043f0000000501000039000000800010043f00000100010000410000020c0000013d000000040230008a000000200220008c0000030b0000413d0000000401100370000000000401043b000000e60140009c0000030b0000213d00000000010004100000000000100435000000200000043f000000d8010000410000000002000414000000d80320009c0000000002018019000000c001200210000000ec011001c70000801002000039000500000004001d035903540000040f000000050400002900000001022001900000030b0000613d000000000101043b000000000201041a00000000050004160000000002520049000000000021041b0000000101000039000000000201041a0000000002520049000000000021041b000000ed02000041000000400100043d000000200310003900000000002304350000006002400210000000240310003900000000002304350000003802000039000000000021043500000038021000390000000000520435000000f90210009c000002230000413d000000fb0100004100000000001004350000004101000039000000040010043f000000fc010000410000035b000104300000000001000416000000000101004b0000030b0000c13d0000001201000039000000800010043f000000e7010000410000035a0001042e0000000001000416000000000101004b0000030b0000c13d000000c001000039000000400010043f0000000301000039000000800010043f000000e801000041000000a00010043f0000002001000039000000c00010043f0000008001000039000000e0020000390359032a0000040f000000c00110008a000000d802000041000000d80310009c00000000010280190000006001100210000000e9011001c70000035a0001042e000000f401000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000000fd01000041000000c40010043f000000fe010000410000035b00010430000300000005001d0000006007100039000000400070043f000000ee020000410000000000270435000000640210003900000020030000390000000000320435000000840310003900000000020104330000000000230435000000a403100039000000000402004b000002390000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000002320000413d000000000132001900000000000104350000001f01200039000000200200008a000000000121016f000000d802000041000000d80370009c0000000003020019000000000307401900000040033002100000004401100039000000d80410009c00000000010280190000006001100210000000000131019f0000000003000414000000d80430009c0000000003028019000000c002300210000000000112019f0000800802000039000400000007001d0359034f0000040f000000040a00002900000000030100190000006003300270000000d803300197000000200430008c000000000403001900000020040080390000001f0540018f0000000506400272000002630000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000025b0000413d000000000705004b000002720000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f00000000005604350000000102200190000002a00000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000000ea0410009c00000005050000290000000304000029000001f70000213d0000000102200190000001f70000c13d000000400010043f000000200230008c0000030b0000413d0000000000410435000000d8020000410000000003000414000000d80430009c0000000003028019000000d80410009c00000000010280190000004001100210000000c002300210000000000112019f000000f1011001c7000000e6065001970000800d0200003900000003030000390000000005000411000000fa04000041000003060000013d000000f401000041000000800010043f0000002001000039000000840010043f0000003e01000039000000a40010043f000000f601000041000000c40010043f000000f701000041000000e40010043f000000f8010000410000035b00010430000000400200043d0000001f0430018f0000000505300272000002ad0000613d000000000600001900000005076002100000000008720019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000002a50000413d000000000604004b000002bc0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f0000000000150435000000d801000041000000d80420009c000000000201801900000040012002100000006002300210000000000121019f0000035b00010430000200000002001d0000000000300435000000200000043f000000d8030000410000000001000414000000d80210009c0000000001038019000000c001100210000000ec011001c70000801002000039035903540000040f000000030300002900000001022001900000030b0000613d0000000204000029000000040240006a000000000101043b000000000021041b00000000003004350000000001000414000000d80210009c000000d801008041000000c001100210000000ec011001c70000801002000039035903540000040f0000000306000029000000050500002900000001022001900000030b0000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d0000000000310435000000d8020000410000000003000414000000d80430009c0000000003028019000000d80410009c00000000010280190000004001100210000000c002300210000000000112019f000000f1011001c70000800d020000390000000303000039000000f204000041000003060000013d000000000021041b000000400100043d0000000000410435000000d8020000410000000003000414000000d80430009c0000000003028019000000d80410009c00000000010280190000004001100210000000c002300210000000000112019f000000f1011001c70000800d020000390000000203000039000000ff040000410359034f0000040f00000001012001900000030b0000613d00000000010000190000035a0001042e00000000010000190000035b00010430000000400200043d0000001f0430018f00000005053002720000031a0000613d000000000600001900000005076002100000000008720019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000003120000413d000000000604004b000003290000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f0000000000150435000002bc0000013d00000000030104330000000002320436000000000403004b000003360000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b0000032f0000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d000000d802000041000000d80310009c00000000010280190000000003000414000000d80430009c0000000003028019000000c0023002100000004001100210000000000121019f000000ec011001c70000801002000039035903540000040f00000001022001900000034d0000613d000000000101043b000000000001042d00000000010000190000035b0001043000000352002104210000000102000039000000000001042d0000000002000019000000000001042d00000357002104230000000102000039000000000001042d0000000002000019000000000001042d00000359000004320000035a0001042e0000035b00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000051cff8d80000000000000000000000000000000000000000000000000000000084bc3eaf0000000000000000000000000000000000000000000000000000000084bc3eb00000000000000000000000000000000000000000000000000000000095d89b41000000000000000000000000000000000000000000000000000000009cc7f7080000000000000000000000000000000000000000000000000000000051cff8d900000000000000000000000000000000000000000000000000000000579952fc00000000000000000000000000000000000000000000000000000000313ce56600000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000040c10f190000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000018160ddd000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000002000000080000000000000000045544800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000400000000000000000000000006c0960f90000000000000000000000000000000000000000000000000000000062f84b24000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000c405fe8958410bbaf0c73b7a0c3e20859e86ca168a4c9b0def9c54d2555a306b0200000000000000000000000000000000000020000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5472616e7366657220616d6f756e7420657863656564732062616c616e63650008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004f6e6c792073797374656d20636f6e7472616374732077697468207370656369616c206163636573732063616e2063616c6c2074686973206d6574686f6400000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa02717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63984e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720000000000000000000000000000000000000000640000008000000000000000000f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885457468657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d79792f4d4f92f90ab0ff8bbcb67a80b934901da8bdb472a2f5e444e360de04

    Deployed Bytecode

    0x00050000000000020000008003000039000000400030043f00000000030100190000006003300270000000d8033001970000000102200190000000240000c13d000000040230008c0000030b0000413d000000000201043b000000e002200270000000da0420009c0000002c0000a13d000000db0420009c000000380000a13d000000dc0420009c000000b20000613d000000dd0420009c000002040000613d000000de0220009c0000030b0000c13d0000000002000416000000000202004b0000030b0000c13d000000040230008a000000200220008c0000030b0000413d0000000401100370000000000101043b000000e6011001970000000000100435000000200000043f00000000010000190359033d0000040f000000360000013d0000000001000416000000000101004b0000030b0000c13d000000200100003900000100001004430000012000000443000000d9010000410000035a0001042e000000e10420009c0000007a0000213d000000e40120009c000001c20000613d000000e50120009c0000030b0000c13d0000000001000416000000000101004b0000030b0000c13d0000000101000039000000000101041a000002010000013d000000df0420009c000001cb0000613d000000e00220009c0000030b0000c13d0000000002000416000000000202004b0000030b0000c13d000000040230008a000000600220008c0000030b0000413d0000000402100370000000000402043b000000e60240009c0000030b0000213d0000002402100370000000000202043b000000e605200197000000e60220009c0000030b0000213d0000004401100370000000000101043b000400000001001d0000000001000411000080010210008c000000550000613d000080060210008c000000550000613d000080090110008c000002940000c13d0000000000400435000000200000043f000000d8010000410000000002000414000000d80320009c0000000002018019000000c001200210000000ec011001c70000801002000039000500000004001d000300000005001d035903540000040f000000050300002900000001022001900000030b0000613d000000000101043b000000000201041a000000040120006c000002c30000813d000000400100043d0000004402100039000000f303000041000000000032043500000024021000390000001f030000390000000000320435000000f4020000410000000000210435000000040210003900000020030000390000000000320435000000d802000041000000d80310009c00000000010280190000004001100210000000f5011001c70000035b00010430000000e20420009c000001fd0000613d000000e30220009c0000030b0000c13d0000000002000416000000000202004b0000030b0000c13d000000040230008a000000400220008c0000030b0000413d0000000402100370000000000402043b000000e60240009c0000030b0000213d0000002401100370000000000501043b0000000001000411000080010110008c000002190000c13d0000000101000039000000000301041a0000000002530019000000000332004b000000000300001900000001030040390000000103300190000000ae0000c13d000400000005001d000000000021041b0000000000400435000000200000043f000000d8010000410000000002000414000000d80320009c0000000002018019000000c001200210000000ec011001c70000801002000039000500000004001d035903540000040f000000050500002900000001022001900000030b0000613d000000000101043b000000000301041a00000004040000290000000002430019000000000332004b000000000300001900000001030040390000000103300190000002f60000613d000000fb0100004100000000001004350000001101000039000001fa0000013d000000040230008a000000400220008c0000030b0000413d0000000402100370000000000802043b000000e60280009c0000030b0000213d0000002402100370000000000402043b000000ea0240009c0000030b0000213d0000002302400039000000eb05000041000000000632004b00000000060000190000000006058019000000eb02200197000000000702004b0000000005008019000000eb0220009c000000000506c019000000000205004b0000030b0000c13d0000000405400039000000000251034f000000000202043b000000ea0620009c000001f70000213d000000bf06200039000000200900008a000000000696016f000000ea0760009c000001f70000213d000000400060043f000000800020043f00000000042400190000002404400039000000000334004b0000030b0000213d0000002003500039000000000131034f0000001f0320018f0000000504200272000000e70000613d00000000050000190000000506500210000000000761034f000000000707043b000000a00660003900000000007604350000000105500039000000000645004b000000df0000413d000400000009001d000500000008001d000000000503004b000000f80000613d0000000504400210000000000141034f0000000303300210000000a004400039000000000504043300000000053501cf000000000535022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000151019f0000000000140435000000a001200039000000000001043500000000010004100000000000100435000000200000043f000000d8010000410000000002000414000000d80320009c0000000002018019000000c001200210000000ec011001c70000801002000039035903540000040f0000000102200190000000050400002900000004070000290000030b0000613d000000000101043b000000000201041a00000000090004160000000002920049000000000021041b0000000101000039000000000201041a0000000002920049000000000021041b000000ed02000041000000400100043d000000200310003900000000002304350000006002400210000000240310003900000000002304350000000008000411000000600280021000000058031000390000000000230435000000380210003900000000009204350000006c03100039000000800200043d000000000402004b0000012b0000613d00000000040000190000000005340019000000a006400039000000000606043300000000006504350000002004400039000000000524004b000001240000413d000000000332001900000000000304350000004c0320003900000000003104350000008b02200039000000000272016f000000000a12001900000000022a004b00000000020000190000000102004039000000ea03a0009c000001f70000213d0000000102200190000001f70000c13d000100000009001d000200000008001d0000004000a0043f000000ee0200004100000000002a04350000000402a000390000002003000039000000000032043500000000020104330000002403a0003900000000002304350000004403a00039000000000402004b0000014f0000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000001480000413d000000000132001900000000000104350000001f01200039000000000171016f000000d802000041000000d803a0009c000000000302001900000000030a401900000040033002100000004401100039000000d80410009c00000000010280190000006001100210000000000131019f0000000003000414000000d80430009c0000000003028019000000c002300210000000000112019f000080080200003900030000000a001d0359034f0000040f000000030a00002900000000030100190000006003300270000000d803300197000000200430008c000000000403001900000020040080390000001f0540018f0000000506400272000001780000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b000001700000413d000000000705004b000001870000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f000000000056043500000001022001900000030d0000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000000ea0410009c0000000504000029000001f70000213d0000000102200190000001f70000c13d000000400010043f000000200230008c0000030b0000413d000000200210003900000040030000390000000000320435000000010200002900000000002104350000004003100039000000800200043d00000000002304350000006003100039000000e606400197000000000402004b000001ab0000613d00000000040000190000000005340019000000a007400039000000000707043300000000007504350000002004400039000000000524004b000001a40000413d000000000332001900000000000304350000007f02200039000000040220017f000000d803000041000000d80410009c00000000010380190000004001100210000000d80420009c00000000020380190000006002200210000000000112019f0000000002000414000000d80420009c0000000002038019000000c002200210000000000112019f000000ef011001c70000800d020000390000000303000039000000f0040000410000000205000029000003060000013d0000000001000416000000000101004b0000030b0000c13d000000c001000039000000400010043f0000000501000039000000800010043f00000100010000410000020c0000013d000000040230008a000000200220008c0000030b0000413d0000000401100370000000000401043b000000e60140009c0000030b0000213d00000000010004100000000000100435000000200000043f000000d8010000410000000002000414000000d80320009c0000000002018019000000c001200210000000ec011001c70000801002000039000500000004001d035903540000040f000000050400002900000001022001900000030b0000613d000000000101043b000000000201041a00000000050004160000000002520049000000000021041b0000000101000039000000000201041a0000000002520049000000000021041b000000ed02000041000000400100043d000000200310003900000000002304350000006002400210000000240310003900000000002304350000003802000039000000000021043500000038021000390000000000520435000000f90210009c000002230000413d000000fb0100004100000000001004350000004101000039000000040010043f000000fc010000410000035b000104300000000001000416000000000101004b0000030b0000c13d0000001201000039000000800010043f000000e7010000410000035a0001042e0000000001000416000000000101004b0000030b0000c13d000000c001000039000000400010043f0000000301000039000000800010043f000000e801000041000000a00010043f0000002001000039000000c00010043f0000008001000039000000e0020000390359032a0000040f000000c00110008a000000d802000041000000d80310009c00000000010280190000006001100210000000e9011001c70000035a0001042e000000f401000041000000800010043f0000002001000039000000840010043f0000001f01000039000000a40010043f000000fd01000041000000c40010043f000000fe010000410000035b00010430000300000005001d0000006007100039000000400070043f000000ee020000410000000000270435000000640210003900000020030000390000000000320435000000840310003900000000020104330000000000230435000000a403100039000000000402004b000002390000613d000000000400001900000000053400190000002004400039000000000614001900000000060604330000000000650435000000000524004b000002320000413d000000000132001900000000000104350000001f01200039000000200200008a000000000121016f000000d802000041000000d80370009c0000000003020019000000000307401900000040033002100000004401100039000000d80410009c00000000010280190000006001100210000000000131019f0000000003000414000000d80430009c0000000003028019000000c002300210000000000112019f0000800802000039000400000007001d0359034f0000040f000000040a00002900000000030100190000006003300270000000d803300197000000200430008c000000000403001900000020040080390000001f0540018f0000000506400272000002630000613d0000000007000019000000050870021000000000098a0019000000000881034f000000000808043b00000000008904350000000107700039000000000867004b0000025b0000413d000000000705004b000002720000613d0000000506600210000000000761034f00000000066a00190000000305500210000000000806043300000000085801cf000000000858022f000000000707043b0000010005500089000000000757022f00000000055701cf000000000585019f00000000005604350000000102200190000002a00000613d0000001f01400039000000600210018f0000000001a20019000000000221004b00000000020000190000000102004039000000ea0410009c00000005050000290000000304000029000001f70000213d0000000102200190000001f70000c13d000000400010043f000000200230008c0000030b0000413d0000000000410435000000d8020000410000000003000414000000d80430009c0000000003028019000000d80410009c00000000010280190000004001100210000000c002300210000000000112019f000000f1011001c7000000e6065001970000800d0200003900000003030000390000000005000411000000fa04000041000003060000013d000000f401000041000000800010043f0000002001000039000000840010043f0000003e01000039000000a40010043f000000f601000041000000c40010043f000000f701000041000000e40010043f000000f8010000410000035b00010430000000400200043d0000001f0430018f0000000505300272000002ad0000613d000000000600001900000005076002100000000008720019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000002a50000413d000000000604004b000002bc0000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f0000000000150435000000d801000041000000d80420009c000000000201801900000040012002100000006002300210000000000121019f0000035b00010430000200000002001d0000000000300435000000200000043f000000d8030000410000000001000414000000d80210009c0000000001038019000000c001100210000000ec011001c70000801002000039035903540000040f000000030300002900000001022001900000030b0000613d0000000204000029000000040240006a000000000101043b000000000021041b00000000003004350000000001000414000000d80210009c000000d801008041000000c001100210000000ec011001c70000801002000039035903540000040f0000000306000029000000050500002900000001022001900000030b0000613d000000000101043b000000000201041a00000004030000290000000002320019000000000021041b000000400100043d0000000000310435000000d8020000410000000003000414000000d80430009c0000000003028019000000d80410009c00000000010280190000004001100210000000c002300210000000000112019f000000f1011001c70000800d020000390000000303000039000000f204000041000003060000013d000000000021041b000000400100043d0000000000410435000000d8020000410000000003000414000000d80430009c0000000003028019000000d80410009c00000000010280190000004001100210000000c002300210000000000112019f000000f1011001c70000800d020000390000000203000039000000ff040000410359034f0000040f00000001012001900000030b0000613d00000000010000190000035a0001042e00000000010000190000035b00010430000000400200043d0000001f0430018f00000005053002720000031a0000613d000000000600001900000005076002100000000008720019000000000771034f000000000707043b00000000007804350000000106600039000000000756004b000003120000413d000000000604004b000003290000613d0000000505500210000000000151034f00000000055200190000000304400210000000000605043300000000064601cf000000000646022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000161019f0000000000150435000002bc0000013d00000000030104330000000002320436000000000403004b000003360000613d000000000400001900000000052400190000002004400039000000000614001900000000060604330000000000650435000000000534004b0000032f0000413d000000000123001900000000000104350000001f01300039000000200300008a000000000131016f0000000001120019000000000001042d000000d802000041000000d80310009c00000000010280190000000003000414000000d80430009c0000000003028019000000c0023002100000004001100210000000000121019f000000ec011001c70000801002000039035903540000040f00000001022001900000034d0000613d000000000101043b000000000001042d00000000010000190000035b0001043000000352002104210000000102000039000000000001042d0000000002000019000000000001042d00000357002104230000000102000039000000000001042d0000000002000019000000000001042d00000359000004320000035a0001042e0000035b00010430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000051cff8d80000000000000000000000000000000000000000000000000000000084bc3eaf0000000000000000000000000000000000000000000000000000000084bc3eb00000000000000000000000000000000000000000000000000000000095d89b41000000000000000000000000000000000000000000000000000000009cc7f7080000000000000000000000000000000000000000000000000000000051cff8d900000000000000000000000000000000000000000000000000000000579952fc00000000000000000000000000000000000000000000000000000000313ce56600000000000000000000000000000000000000000000000000000000313ce5670000000000000000000000000000000000000000000000000000000040c10f190000000000000000000000000000000000000000000000000000000006fdde030000000000000000000000000000000000000000000000000000000018160ddd000000000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000002000000080000000000000000045544800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff800000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000400000000000000000000000006c0960f90000000000000000000000000000000000000000000000000000000062f84b24000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000c405fe8958410bbaf0c73b7a0c3e20859e86ca168a4c9b0def9c54d2555a306b0200000000000000000000000000000000000020000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5472616e7366657220616d6f756e7420657863656564732062616c616e63650008c379a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000000000004f6e6c792073797374656d20636f6e7472616374732077697468207370656369616c206163636573732063616e2063616c6c2074686973206d6574686f6400000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffa02717ead6b9200dd235aad468c9809ea400fe33ac69b5bfaa6d3e90fc922b63984e487b7100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000043616c6c61626c65206f6e6c792062792074686520626f6f746c6f616465720000000000000000000000000000000000000000640000008000000000000000000f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885457468657200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d79792f4d4f92f90ab0ff8bbcb67a80b934901da8bdb472a2f5e444e360de04

    [ Download: CSV Export  ]
    [ Download: CSV Export  ]

    A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.