Contract 0x4398e113fa67057c6f461ca8390b273e4148e0a1 2

Contract Overview

Balance:
0 MATIC
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x718828e30333ea6a94ea5db934bd7862bdf257ebcaf5e5863d673557acbf484eApprove269896292022-07-01 17:09:382 hrs 53 mins ago0xf7c221a73cc839a1769829ca166346237b2e0b0e IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.000181076193 3.890764786
0x3c39f8ecc8ef9c4e8d6181926047325ce1a732453a86e63df19cc1b9365ed007Use Faucet269896192022-07-01 17:08:482 hrs 53 mins ago0xf7c221a73cc839a1769829ca166346237b2e0b0e IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.00032371974 4.435246075
0x299f67a1b4d2daee63326e13e223abc904c3e678f1780a888178f9c71a470471Use Faucet269886502022-07-01 15:47:484 hrs 14 mins ago0x5e38732250ebf23940555981e5985cf8d5570f2f IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.001163659372 30.000499442
0x73a0550e7eb1d7b80d349b177af58e7c3435a42aa81268392dc9b890e98cebbfUse Faucet269872202022-07-01 13:37:366 hrs 25 mins ago0xce0f321e6d75972a4ac54da6a31b115032e465c0 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002511233793 34.406118724
0xcf1a40e09355439f0593e29e60786047cdcf8c5a46235275181e53fc07bdadbfUse Faucet269846482022-07-01 9:41:1610 hrs 21 mins ago0x1f625bbdb22c4638c89a1d87ea8c9c241e3ea8e4 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.000806239119 34.206156975
0x7f0a019f98d65bc3d1ebde37dc64a0f143faaf41f01190167148c8d99a64819dUse Faucet269846482022-07-01 9:41:1610 hrs 21 mins ago0x1f625bbdb22c4638c89a1d87ea8c9c241e3ea8e4 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.000198812768 2.723910353
0xa29bd870acdfd9a9192781f84e64e53677d38b6158f5eae8f6514b1bc132226bUse Faucet269840302022-07-01 8:44:1611 hrs 18 mins ago0x0c97bfd2bda540c2dc7846e1fb72ce25705f54c8 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.00253162619 34.685512556
0xcd9ff0d3a548af0e34c3e9663fff7aa0ab76059d01affabe645e0aa15a4a9ffdUse Faucet269840292022-07-01 8:44:1111 hrs 18 mins ago0x6d2bcc0a96ba4c2fb81aed5d5716d212c9c46813 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002576042197 35.294051042
0xcea23d25156fa363da1c2fb3f6b6f536e4c22e7bb48e0a4bf16f0092879a777dUse Faucet269840282022-07-01 8:44:0611 hrs 18 mins ago0xf07370d2d5f74edeaa24fff0f45e7f9c09f26250 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002564547489 35.136563402
0x8aa4d5eb6129cd0f3c6dd5231578ec01dd7df915a591d040704c6721faf2ecc8Use Faucet269840272022-07-01 8:44:0111 hrs 18 mins ago0xfe1b0c3a8b07f07534e7bfa325e9bb4bf67b877b IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002643863391 36.223261239
0xa7183ad09abe52174ecf6f93ddf625a0ccc23aad8654184d16743e7afac45ee0Use Faucet269840262022-07-01 8:43:5611 hrs 18 mins ago0x0836f128b43d98aa9f0d870d69b00a6cd2ae0d46 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002643863391 36.223261239
0xf3d4ad5f655d7e2f4152dcd25adc8c615a8f987a67d3f0767b36c5193d6a6eeaUse Faucet269840252022-07-01 8:43:5111 hrs 18 mins ago0x6dd451d5d2f39f960b79795a5493c7578d0e393b IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002643863391 36.223261239
0xeb64d488f23194fd930b930d60ba5c2d53ac26ddf4e4a3aec61586ff16e563d7Use Faucet269840242022-07-01 8:43:4611 hrs 18 mins ago0x630fdf680aa1e32b9d91e819ade5c94868052537 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002643863391 36.223261239
0x753316339a1a53fc6965b3aff7394c5c5c0b6a249c163f6de258d5c278460b04Use Faucet269840232022-07-01 8:43:4111 hrs 19 mins ago0xbd3a56d1ee2ba0b22b10cb0220e69bd99b7eea64 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002643863391 36.223261239
0x6bcea0c802208606d0cf889de0a487f10fb0dd282e3602084ca26d85d14f5989Use Faucet269840212022-07-01 8:43:3111 hrs 19 mins ago0x7f1c1c2f79afc85b070fbfa45833362b98aaf1f8 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002725632362 37.343568287
0xf7e3095212b5f84681de8efd74576f2e73b101373d58bd085bd29dea32d67bd7Approve269741552022-06-30 18:20:341 day 1 hr ago0x5e38732250ebf23940555981e5985cf8d5570f2f IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.00006981 1.500000013
0xa88e94398613ffe7d568f54c13e57e9b6e458d4e08e03f2bfdd3b5057aa9d1faUse Faucet269740452022-06-30 18:06:021 day 1 hr ago0x5e38732250ebf23940555981e5985cf8d5570f2f IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002436121311 33.37701145
0x5bdea36fb0a156f4a94760ee67022b1c135868b2f962321af127ca788a8995f8Use Faucet269727372022-06-30 16:00:321 day 4 hrs ago0x01eb6e46b5bbbd72694c043941f7736f786e9511 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002139487048 29.312860308
0x1ee6b11e42dd8e734f44a657bbc8733fb1a6d1144e4aab5bda909438faf5e01cUse Faucet269724182022-06-30 15:28:321 day 4 hrs ago0xb4d83f07c02c855b058cc1e9d242e257e7c4ecda IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002160723525 29.603818782
0xbde5675c6f9e500a98fa83e11597bea7106948a7c428bc0306d40ca30717fc3eUse Faucet269716882022-06-30 14:14:551 day 5 hrs ago0x43d3018a91d0f6ff6dfadaeac64d19372577227d IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.002357596716 32.301155211
0x843704cf626c63c727d7410dd35fbc2c52cb1c12640acf1c6a71fff793c6e27eUse Faucet269564732022-06-29 9:52:342 days 10 hrs ago0xd20a08c849fec74a7ffe3b1c26849fcb17f2c3ef IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.000083284618 2.147174861
0x08e4126eb94167432fb68cc3c62669fa6852ca4d0c5002efc2e67b96e2078257Use Faucet269478112022-06-28 20:01:493 days ago0x1c34e7f1e461076961b81d1737c08900bb93e7de IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.00014159672 1.940000008
0xa14b705c82e6f02d86784cb4e2d46a15a84a76be5296e457d4df80ec5f7e29d0Use Faucet269368592022-06-28 1:04:263 days 18 hrs ago0x13a9606d9be6a9b0d65661b54d45ce19439f3029 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.001269687772 32.734035591
0x8ba40105a6072b2e584ff63764f8adf23b37795065efb1d467896d5b88bda4cfUse Faucet269318412022-06-27 14:53:084 days 5 hrs ago0xd9dda2470e6feef298d36b1545ac91863fc979a3 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.000131116566 1.796412648
0x563662587f394ccc33782e5476d1fadc5560cdb7a8c43f2341fe9c06febebfe7Use Faucet269272062022-06-27 6:33:304 days 13 hrs ago0x45141d92030610f5f424f77dd5f8f2fdcbd43a14 IN  0x4398e113fa67057c6f461ca8390b273e4148e0a10 MATIC0.000113732745 1.558238963
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OSEAToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 1 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 5 : OmniseaTokenMock.sol
pragma solidity ^0.8.7;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract OSEAToken is ERC20 {
    mapping(address => uint256) public usages;

    constructor(uint256 initialSupply) ERC20("Omnisea USD", "oUSD") {
        _mint(msg.sender, initialSupply);
    }

    function decimals() public pure override returns (uint8) {
        return 6; // Imitate USDC
    }

    function useFaucet() public {
        address recipient = msg.sender;
        require(usages[recipient] <= (block.timestamp - 30 minutes));
        _mint(recipient, 1000000000);
        usages[recipient] = block.timestamp;
    }
}

File 2 of 5 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

import "./IERC20.sol";
import "./extensions/IERC20Metadata.sol";
import "../../utils/Context.sol";

/**
 * @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 3 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

File 4 of 5 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @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 5 of 5 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 1
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"initialSupply","type":"uint256"}],"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":"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usages","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"useFaucet","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162000d1e38038062000d1e833981016040819052620000349162000243565b604080518082018252600b81526a13db5b9a5cd958481554d160aa1b6020808301918252835180850190945260048452631bd554d160e21b90840152815191929162000083916003916200019d565b508051620000999060049060208401906200019d565b505050620000ae3382620000b560201b60201c565b50620002c1565b6001600160a01b038216620001105760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200012491906200025d565b90915550506001600160a01b03821660009081526020819052604081208054839290620001539084906200025d565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001ab9062000284565b90600052602060002090601f016020900481019282620001cf57600085556200021a565b82601f10620001ea57805160ff19168380011785556200021a565b828001600101855582156200021a579182015b828111156200021a578251825591602001919060010190620001fd565b50620002289291506200022c565b5090565b5b808211156200022857600081556001016200022d565b6000602082840312156200025657600080fd5b5051919050565b600082198211156200027f57634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200029957607f821691505b60208210811415620002bb57634e487b7160e01b600052602260045260246000fd5b50919050565b610a4d80620002d16000396000f3fe608060405234801561001057600080fd5b50600436106100af5760003560e01c806306fdde03146100b4578063095ea7b3146100d257806316771fab146100f557806318160ddd1461012357806323b872dd1461012b578063298149981461013e578063313ce56714610148578063395093511461015757806370a082311461016a57806395d89b4114610193578063a457c2d71461019b578063a9059cbb146101ae578063dd62ed3e146101c1575b600080fd5b6100bc6101fa565b6040516100c99190610922565b60405180910390f35b6100e56100e03660046108f8565b61028c565b60405190151581526020016100c9565b610115610103366004610867565b60056020526000908152604090205481565b6040519081526020016100c9565b600254610115565b6100e56101393660046108bc565b6102a2565b610146610351565b005b604051600681526020016100c9565b6100e56101653660046108f8565b6103ac565b610115610178366004610867565b6001600160a01b031660009081526020819052604090205490565b6100bc6103e8565b6100e56101a93660046108f8565b6103f7565b6100e56101bc3660046108f8565b610490565b6101156101cf366004610889565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b606060038054610209906109a6565b80601f0160208091040260200160405190810160405280929190818152602001828054610235906109a6565b80156102825780601f1061025757610100808354040283529160200191610282565b820191906000526020600020905b81548152906001019060200180831161026557829003601f168201915b5050505050905090565b600061029933848461049d565b50600192915050565b60006102af8484846105c1565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103395760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610346853385840361049d565b506001949350505050565b3361035e6107084261098f565b6001600160a01b038216600090815260056020526040902054111561038257600080fd5b61039081633b9aca0061077e565b6001600160a01b03166000908152600560205260409020429055565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102999185906103e3908690610977565b61049d565b606060048054610209906109a6565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156104795760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610330565b610486338585840361049d565b5060019392505050565b60006102993384846105c1565b6001600160a01b0383166104ff5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610330565b6001600160a01b0382166105605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610330565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166106255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610330565b6001600160a01b0382166106875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610330565b6001600160a01b038316600090815260208190526040902054818110156106ff5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610330565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610736908490610977565b92505081905550826001600160a01b0316846001600160a01b03166000805160206109f88339815191528460405161077091815260200190565b60405180910390a350505050565b6001600160a01b0382166107d45760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610330565b80600260008282546107e69190610977565b90915550506001600160a01b03821660009081526020819052604081208054839290610813908490610977565b90915550506040518181526001600160a01b038316906000906000805160206109f88339815191529060200160405180910390a35050565b80356001600160a01b038116811461086257600080fd5b919050565b60006020828403121561087957600080fd5b6108828261084b565b9392505050565b6000806040838503121561089c57600080fd5b6108a58361084b565b91506108b36020840161084b565b90509250929050565b6000806000606084860312156108d157600080fd5b6108da8461084b565b92506108e86020850161084b565b9150604084013590509250925092565b6000806040838503121561090b57600080fd5b6109148361084b565b946020939093013593505050565b600060208083528351808285015260005b8181101561094f57858101830151858201604001528201610933565b81811115610961576000604083870101525b50601f01601f1916929092016040019392505050565b6000821982111561098a5761098a6109e1565b500190565b6000828210156109a1576109a16109e1565b500390565b600181811c908216806109ba57607f821691505b602082108114156109db57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122041cf8a5899b396eb9db99f12b124c57d695f260c32d29929881f45518d35312c64736f6c63430008070033000000000000000000000000000000000000000000000000000000e8d4a51000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000e8d4a51000

-----Decoded View---------------
Arg [0] : initialSupply (uint256): 1000000000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000e8d4a51000


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading