Contract 0x93C55AFcBB82594F7446537e4071fc6439E14f2a

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x84d11d9e17ad08eee14f4387f676d85da4e11ea61acf86d2bbd45df4fb5f84aeApprove394891962023-02-20 0:09:3832 days 11 hrs ago0xe66a5a7ddda004ac66926ea8ab91c1b1014dd840 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.00951263921204.173321253
0x2360cfb533e0f92a262efbe53fe79f7c34e49b7ba69c2008b83b60f0d623d8afApprove385799122023-01-27 7:53:1856 days 4 hrs ago0x6e26a97e45389ef11f3b5a56b46acf6f49155b11 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.003426434029 73.542830797
0xdbc5c33fb78231bce8e33a330741e3bf17e205fe4cbb7013d38ee6f791e53e0dApprove371605802022-12-23 1:47:4791 days 10 hrs ago0x9bdbdb4a8f7f816c87a67f5281484ed902c6b942 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.002052430877 44.326088542
0x5e0aef6a83ca747a65b4631a33d90607014e7a9d91b29b96a9621a44a0ccbfa3Approve335425952022-09-25 9:01:23180 days 3 hrs ago0x74147c53def7b21f33d98fb397e9d7446e1eed6d IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.00139773 30.000000015
0x2e4e46e29d8eedf3dc63ecb1ac7feb19ec835e250d4d6d47113971e281bc7ec6Approve296156782022-06-15 23:06:17281 days 12 hrs ago0x42d73a757e63a18a70c8a86564e405deca81967c IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001397730001 30.000000023
0x92da9cba714b4ef300091bda372e1ba48f13741f086b8aeae33b3cb0b35f2cd8Approve296153272022-06-15 22:54:15281 days 13 hrs ago0x0c0a46c1858a050381ac3ed0cb45beb9868352ea IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001484911401 31.871206908
0x46d0211f23db0ccc98cbcbf75b5c1d60073d4405271b8a69634e175d0931558eApprove294551242022-06-11 23:50:31285 days 12 hrs ago0x7e8f46f0e84be9875544a21fdb69e40661229963 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001423588005 30.555000016
0xa0c430d64e8f44f0454d3973494ecb0ad2ec1f1f247a476cc7c8f469de91ff1bApprove291439642022-06-04 6:11:52293 days 5 hrs ago0x1c8faa756493e2678bed8d8b8b4df1090d17aa05 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.00140099137 30.07
0x26d38c5ebf9e23b50e025733262f227e94e2c23987971bd17bb08f80148a82d0Transfer283050172022-05-14 10:56:34314 days 1 hr ago0x37e79309889a95c2181ce319ec61cb528c1f6dc8 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.00180280369538.546155554
0x03f2170543531a1389c425de450b3acb2674e8c821766b05b5d44253fcc41f96Approve283042292022-05-14 10:27:34314 days 1 hr ago0xbb0da92692efaf7bd96333e09d168965a190a19e IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.00154307875733.119674551
0xc51d7c3a6b07461d903f504baa075f43febcc6ce768645440a2f408e450baefdApprove281578012022-05-10 15:58:36317 days 20 hrs ago0xe220a2b9ff1ce8aa55d227389cda5bf6a081a0c2 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.006100563206 130.938662112
0xf18bfc5fa0fec3057cddfc1494976c36787c247d762fb95b417409b70c1f2346Approve281157882022-05-09 15:06:58318 days 20 hrs ago0xc9ed39d0e8a1e20030035eb501580599414c4d35 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.005749909444 123.412449716
0x9c850e0891b7c637d0f6720722c06de8547188bbe06246525dffb001516fda0dApprove280886772022-05-08 22:36:38319 days 13 hrs ago0x53498839353845a30745b56a22524df934f746de IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001540357167 33.061260056
0xbf215fdc54068e1c285051f602c0285f97d7aa2d58f98f193194e6a489c7f7dcApprove280856102022-05-08 20:47:44319 days 15 hrs ago0x236c6b765d03b8a6ae1d26244729396fe7bd11e9 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.00230812469 49.5401406
0x602e3c4e6d714eb8c44ba6c8b76c611ae704027a93034117ab6411b1e97381f7Approve280854482022-05-08 20:40:22319 days 15 hrs ago0x236c6b765d03b8a6ae1d26244729396fe7bd11e9 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001164813309 43.679953109
0x5282468e1415a479a09e8691b7e970df779adcc44da9b9dafbae474e680e7c11Approve280854472022-05-08 20:40:18319 days 15 hrs ago0x236c6b765d03b8a6ae1d26244729396fe7bd11e9 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.002034044378 43.679953155
0x6a622f59dc3963dfdf657ecbac19176bdaddd3b09f7c08ac3e2c45c592af28c8Approve280853142022-05-08 20:35:28319 days 15 hrs ago0x072b0922a3abc86d56f3fe853b3a458f1814f6d4 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001679669784 36.039002398
0xababf91fd4fe847acc8f29c575d4d2cf236868c28a7bb333a75cf28c9c4b1992Approve280066422022-05-06 21:43:24321 days 14 hrs ago0x0e0882c841dbf3abd58f290a2a8699f3f9cec0cf IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.0023295550
0xd89d8830536e2635fd7e23059b75eef4a7dfeb6310c9406a4e4b201da9fcdd60Approve279911582022-05-06 12:18:11321 days 23 hrs ago0x6acb96d371231084dc7a5ab4ef9c2921af516dd0 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.002419793062 51.963688082
0xb187d655f08d18f2137d02db5b46a4cae3c2f7f06b92f41567b6b5b83683d361Transfer279908602022-05-06 12:07:59321 days 23 hrs ago0x573ad66f26b990dd81054924566fe42ab6182c0a IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001818356677 61.23650155
0xb8a1216f6da053cfa1a9e26acf72a2f19f7dcb6572a775fd975621ef168b1778Transfer278935152022-05-04 0:08:05324 days 11 hrs ago0x1c3d33e021a32b0770fc868e7b9884fce858c1c7 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001768850984 34.299999698
0x5436fd9cdeee091ac225e20457f4de85a4dd64974d8662d8a7dafaba2973d466Approve278879422022-05-03 20:44:48324 days 15 hrs ago0x3b3c904ced22472a6e533ea49cb19d2893791704 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.00139701 30.000000018
0x76b052081e12986b95e62bd48d31c676dba74c3719d2edf72892c97e22caa963Approve278874822022-05-03 20:28:56324 days 15 hrs ago0x3b3c904ced22472a6e533ea49cb19d2893791704 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001397730001 30.000000025
0x2738fa1b7d77a64d4364be521e731edebe012ed529b6a3a3d6f39b8b6c2cdca4Transfer278868732022-05-03 20:05:54324 days 15 hrs ago0x1c3d33e021a32b0770fc868e7b9884fce858c1c7 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.0017183124 33.32
0x378fc4fc68b3fc2c515c4f374c700d3b7fb6a7a9d07e81a8bed494262474aa7fApprove278626562022-05-03 5:27:10325 days 6 hrs ago0x6e26a97e45389ef11f3b5a56b46acf6f49155b11 IN  0x93c55afcbb82594f7446537e4071fc6439e14f2a0 MATIC0.001848229846 39.669246122
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MushToken

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 7 : MushToken.sol
pragma solidity ^0.8.0;

import '@openzeppelin/contracts8/access/Ownable.sol';
import '@openzeppelin/contracts8/token/ERC20/ERC20.sol';
import '@openzeppelin/contracts8/token/ERC20/extensions/ERC20Capped.sol';

contract MushToken is ERC20Capped, Ownable {
    constructor()
        public
        ERC20('Mush', 'MUSH')
        ERC20Capped(10000000 * (10**uint256(18)))
    {}

    function mint(address account, uint256 amount) public onlyOwner {
        _mint(account, amount);
    }
}

File 2 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][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) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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 Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - 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 4 of 7 : ERC20Capped.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/ERC20Capped.sol)

pragma solidity ^0.8.0;

import "../ERC20.sol";

/**
 * @dev Extension of {ERC20} that adds a cap to the supply of tokens.
 */
abstract contract ERC20Capped is ERC20 {
    uint256 private immutable _cap;

    /**
     * @dev Sets the value of the `cap`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor(uint256 cap_) {
        require(cap_ > 0, "ERC20Capped: cap is 0");
        _cap = cap_;
    }

    /**
     * @dev Returns the cap on the token's total supply.
     */
    function cap() public view virtual returns (uint256) {
        return _cap;
    }

    /**
     * @dev See {ERC20-_mint}.
     */
    function _mint(address account, uint256 amount) internal virtual override {
        require(ERC20.totalSupply() + amount <= cap(), "ERC20Capped: cap exceeded");
        super._mint(account, amount);
    }
}

File 5 of 7 : 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;
    }
}

File 6 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        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 7 of 7 : 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);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b50620000206012600a62000310565b6200002f906298968062000325565b6040518060400160405280600481526020016309aeae6d60e31b8152506040518060400160405280600481526020016309aaaa6960e31b81525081600390805190602001906200008192919062000155565b5080516200009790600490602084019062000155565b50505060008111620000ef5760405162461bcd60e51b815260206004820152601560248201527f45524332304361707065643a2063617020697320300000000000000000000000604482015260640160405180910390fd5b608052620000fd3362000103565b62000384565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001639062000347565b90600052602060002090601f016020900481019282620001875760008555620001d2565b82601f10620001a257805160ff1916838001178555620001d2565b82800160010185558215620001d2579182015b82811115620001d2578251825591602001919060010190620001b5565b50620001e0929150620001e4565b5090565b5b80821115620001e05760008155600101620001e5565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000252578160001904821115620002365762000236620001fb565b808516156200024457918102915b93841c939080029062000216565b509250929050565b6000826200026b575060016200030a565b816200027a575060006200030a565b81600181146200029357600281146200029e57620002be565b60019150506200030a565b60ff841115620002b257620002b2620001fb565b50506001821b6200030a565b5060208310610133831016604e8410600b8410161715620002e3575081810a6200030a565b620002ef838362000211565b8060001904821115620003065762000306620001fb565b0290505b92915050565b60006200031e83836200025a565b9392505050565b6000816000190483118215151615620003425762000342620001fb565b500290565b600181811c908216806200035c57607f821691505b602082108114156200037e57634e487b7160e01b600052602260045260246000fd5b50919050565b608051610db1620003a76000396000818161017c0152610a1a0152610db16000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d71461021c578063a9059cbb1461022f578063dd62ed3e14610242578063f2fde38b1461027b57600080fd5b806370a08231146101c8578063715018a6146101f15780638da5cb5b146101f957806395d89b411461021457600080fd5b8063313ce567116100d3578063313ce5671461016b578063355274ea1461017a57806339509351146101a057806340c10f19146101b357600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d61028e565b60405161011a9190610bee565b60405180910390f35b610136610131366004610c5f565b610320565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610c89565b610338565b6040516012815260200161011a565b7f000000000000000000000000000000000000000000000000000000000000000061014a565b6101366101ae366004610c5f565b61035c565b6101c66101c1366004610c5f565b61039b565b005b61014a6101d6366004610cc5565b6001600160a01b031660009081526020819052604090205490565b6101c6610408565b6005546040516001600160a01b03909116815260200161011a565b61010d61046e565b61013661022a366004610c5f565b61047d565b61013661023d366004610c5f565b610527565b61014a610250366004610ce7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c6610289366004610cc5565b610535565b60606003805461029d90610d1a565b80601f01602080910402602001604051908101604052809291908181526020018280546102c990610d1a565b80156103165780601f106102eb57610100808354040283529160200191610316565b820191906000526020600020905b8154815290600101906020018083116102f957829003601f168201915b5050505050905090565b60003361032e818585610617565b5060019392505050565b60003361034685828561076f565b610351858585610801565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061032e9082908690610396908790610d55565b610617565b6005546001600160a01b031633146103fa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6104048282610a18565b5050565b6005546001600160a01b031633146104625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103f1565b61046c6000610aa5565b565b60606004805461029d90610d1a565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561051a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103f1565b6103518286868403610617565b60003361032e818585610801565b6005546001600160a01b0316331461058f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103f1565b6001600160a01b03811661060b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103f1565b61061481610aa5565b50565b6001600160a01b0383166106925760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103f1565b6001600160a01b03821661070e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103f1565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146107fb57818110156107ee5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103f1565b6107fb8484848403610617565b50505050565b6001600160a01b03831661087d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103f1565b6001600160a01b0382166108f95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103f1565b6001600160a01b038316600090815260208190526040902054818110156109885760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103f1565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906109bf908490610d55565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a0b91815260200190565b60405180910390a36107fb565b7f000000000000000000000000000000000000000000000000000000000000000081610a4360025490565b610a4d9190610d55565b1115610a9b5760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a206361702065786365656465640000000000000060448201526064016103f1565b6104048282610b0f565b600580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216610b655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103f1565b8060026000828254610b779190610d55565b90915550506001600160a01b03821660009081526020819052604081208054839290610ba4908490610d55565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b81811015610c1b57858101830151858201604001528201610bff565b81811115610c2d576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610c5a57600080fd5b919050565b60008060408385031215610c7257600080fd5b610c7b83610c43565b946020939093013593505050565b600080600060608486031215610c9e57600080fd5b610ca784610c43565b9250610cb560208501610c43565b9150604084013590509250925092565b600060208284031215610cd757600080fd5b610ce082610c43565b9392505050565b60008060408385031215610cfa57600080fd5b610d0383610c43565b9150610d1160208401610c43565b90509250929050565b600181811c90821680610d2e57607f821691505b60208210811415610d4f57634e487b7160e01b600052602260045260246000fd5b50919050565b60008219821115610d7657634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220671ea450128fbd09c856c5d1900536b598889c43369bf87b3ddfbf7a28327cec64736f6c634300080a0033

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.