Token Pegaxy Stone

 

Overview ERC-20

Price
$0.00 @ 0.003078 MATIC (+1.21%)
Fully Diluted Market Cap
Total Supply:
1,000,000,000 PGX

Holders:
50,849 addresses

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Pegaxy is a true Play-to-Earn mech-styled horse racing game, built on the Polygon chain. Pegaxy has two native tokens within its economy, the governance token being Pegaxy Stones (PGX) and Vigorus (VIS) being the utility tokens of the platform.

Market

Volume (24H):$9,582.64
Market Capitalization:$558,188.00
Circulating Supply:167,968,744.00 PGX
Market Data Source: Coinmarketcap


Update? Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Pegaxy

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 800 runs

Other Settings:
default evmVersion
File 1 of 5 : Pegaxy.sol
// contracts/Pegaxy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

contract Pegaxy is ERC20 {
    constructor() ERC20("Pegaxy Stone", "PGX") {
        /**
         * Mint for Pegaxy IDO
         */
        _mint(0x29153514E98081Cc172DB7b830dEA9a4d811A584, 20000000 * (10 ** decimals()));

        /**
         * Mint for Pegaxy Liquidity
         */
        _mint(0xC94fb63396aa06E90a754d92Aae67A985Ba23ab7, 100000000 * (10 ** decimals()));

        /**
         * Mint for Pegaxy Marketing and Ecosystem Reverse
         */
        _mint(0x06cD1BA9a834869E2a8476B405803D450Df41167, 300000000 * (10 ** decimals()));


        /**
         * Mint for Vesting Contract of Pegaxy Community Develop
         */        
        //Wait for contract deployed
        _mint(0x7c00Bee8552CCa98D828fFA3E7dFc58fa5CB60a6, 160000000 * (10 ** decimals()));

        /**
         * Mint for Vesting Contract of Pegaxy Team and Advisors
         */        
        //Wait for contract deployed
        _mint(0x8757E9873444aA07C610b1FC3b6717e86e6452D1, 220000000 * (10 ** decimals()));

        /**
         * Mint for Vesting Contract of Private Sale Round 1 Investors
         */
        //Wait for contracts deployed
        //0x13A07af9422Aa8b3868B1b89178a870e1c3f9424
        _mint(0xA4Ce42eA9FD102050E900Bb851525aF92b304B99, 30000000 * (10 ** decimals()));
        
        //0xcE36e34ea4C96BC3869A135Ae4F68E439029254b
        _mint(0x57362Ee4dA166a8E3ac5ce0148E7FBB3c9cCeBb3, 15000000 * (10 ** decimals()));
        
        //0x2b6EfCCe98Fe1e46967f8Ce49bd258007c796945
        _mint(0x28F3ba6ADe556e905e5D40E88ac53a68311EBdcE, 5000000 * (10 ** decimals()));
        
        //0x17dac974ec5bf41a7f6dcec1effe5bf2cebaa79a
        _mint(0x7374AbB88614092057537898E03EB624F921FA8b, 6500000 * (10 ** decimals()));
        
        //0x04616EA20406B2388583A0cb1154430A34753dF7
        _mint(0x29452e6D32B279677431AdeB83BeAEB5f2c8e5F8, 10000000 * (10 ** decimals()));
        
        //0x664Fe01207Dc37C84A97A8dCdC28bCc1Da6bEE57
        _mint(0x5e35Bb09fc63E713aAC97DeBECd4f598B0350834, 10000000 * (10 ** decimals()));

        //0x0C3bDFc1cd0FBC4a371F0F3A18Ec1F990FDd0d39
        _mint(0x80Aa48342CfD7FFB3536828a1ACd268b3b64dcFA, 2000000 * (10 ** decimals()));
        
        //0xCF280dF3da6405EabF27E1d85e2c03d3B9047309
        _mint(0x5Ec582bBF2ce59eb50e40781046f99e7daC1D607, 5000000 * (10 ** decimals()));
        
        //0x2340B5DB633b7F4BA025941b183C77E8cDEa5134
        _mint(0xA7087F684Ec5B2bE931505590cdC66D8dae4b133, 5000000 * (10 ** decimals()));
        
        //0x3E8C6676eEf25C7b18a7ac24271075F735c79A16
        _mint(0x8140faC8f6C9C6a6E7B4F110e1a0b0F2C819EAc4, 1000000 * (10 ** decimals()));
        
        //0x38B4be8a7dcf2d6fa4e6C826fAe20669BD89DF2c
        _mint(0xB4ec70f871656Fe7d76344e0d753e68048779033, 2500000 * (10 ** decimals()));
        
        //0xf480275B9F0D97Eb02DE9cEa149A8F613121C588
        _mint(0x99e1dfb42397622A26E2AD67edaEF2A6396758A6, 8000000 * (10 ** decimals()));
        
        //0xa50f89381301decb11f1918586f98c5f2077e3ca
        _mint(0x584DFD3ce3793f2f4009873601796D33f008C895, 13333333 * (10 ** decimals()));
        
        //0xb8F03E0a03673B5e9E094880EdE376Dc2caF4286
        _mint(0x49f1514496b6501F0d1914cF7f320C880ce36e4E, 16666666 * (10 ** decimals()));

        //0x05AeB176197F1800465285907844913a2bc02e75
        _mint(0x0FAd12202aD23AAbf89ac5059A42A944fc47aFf0, 10000000 * (10 ** decimals()));
        
        //0x2340B5DB633b7F4BA025941b183C77E8cDEa5134
        _mint(0xf427bFC7EFe4e92a4D3503434886F8883a58b7b6, 6666667 * (10 ** decimals()));
        
        //0xcE36e34ea4C96BC3869A135Ae4F68E439029254b
        _mint(0xE3d1a13D85c79d8E7BEda31A76702bEAD12E1602, 2666667 * (10 ** decimals()));
        
        //0x637E21Ac11F0E0Cf95D926d6bd2737b059A2858a
        _mint(0xAD6bf9C7593E38ba24F578F4d8343EA24e0Bf5d1, 3333333 * (10 ** decimals()));
        
        //0xC0855f464261832aa43f1d9d9E1cC2aCeEF7c54b
        _mint(0x37E4F25080D93941D18cb92619e71f4055BB14b1, 3333333 * (10 ** decimals()));
        
        //0x4D30922f14fD6149D06994FFc08D042Dc09bbd42
        _mint(0x94A852CD73ba4a23488e1D17e304Fe46b9D9FE93, 3333333 * (10 ** decimals()));
        
        //0x8BF99D25C3cC0Bb8ebB13395e323A3Bf78BC2d48
        _mint(0xc05ffA2c0244515B8dDC07220fDfC77c36C60073, 3333333 * (10 ** decimals()));
        
        //0x4F76e9779F4eF8Ea8361CecDEe0a2ccdbA4B06ba
        _mint(0xe2e746f79FfEe5dfF2B8c8B71D717FB4681Bcdcc, 2000000 * (10 ** decimals()));
        
        //0x175cB067535951C0e27404a5E57672ED1F477440
        _mint(0x1b18499973e7F2405E29FfeAB82A2cA9cFA1471c, 2000000 * (10 ** decimals()));

        //0x38B4be8a7dcf2d6fa4e6C826fAe20669BD89DF2c
        _mint(0x7a05FDc83f4d5D9DE102aD700E6C6a67b563eeb2, 1666667 * (10 ** decimals()));
        
        //0x380E0E7e7AF09B5f0069289356c813A1C4878fe0
        _mint(0x1CB743bd360BF665BF2e79E6b098c3f5B9f25424, 1666667 * (10 ** decimals()));
        
        //0x9e12da5Ca525Ad3EF2a35Bf8286369b3eeB0A0d2
        _mint(0xf108Ef354CD7Fd50B6b4E211971742F34a04D315, 6666667 * (10 ** decimals()));
        
        //0x338FdBd9361CA33C8F32cf373d1b2913e4Ec4540
        _mint(0xFcCF4956361C88E80aEDd1E30877910Dd9f5227A, 3333333 * (10 ** decimals()));
        
        //0x18701332a0126472ea908f54de9836ca1c5e9679
        _mint(0x3413A355F16F95147Fd584c69Ad160d0D6142911, 3333333 * (10 ** decimals()));
        
        //0x03951Cb1aE6bA341409C106000efF4D5313bD319
        _mint(0x041c85ef362B02266021b1D7bd9f4E0D1D2009D1, 1333333 * (10 ** decimals()));
        
        //0x1f5feA56Da579CD297868D5d7eAA42100cAe17f5
        _mint(0xde3427332855dC936928e1813cF8149fD7717D69, 1000000 * (10 ** decimals()));
        
        //0x3faa6715BE99A73e7eDaBdB33C294E621b79a26F
        _mint(0x37C98032327071f7ae88847Cf1f412a769534e40, 1000000 * (10 ** decimals()));
        
        //0x0C7dcFB81823F8326E53A42d5fc6F4fEc79e4547
        _mint(0xed6cdc19a6328fc9c91319d571F5117d61CB78F1, 1000000 * (10 ** decimals()));
        
        //0x6cdF11996eEd528d69Cd8B56503fDb19EC0B2977
        _mint(0x3fE8bf244f9AfDc7d386693c617b4fe7Ea1237C9, 1000000 * (10 ** decimals()));
        
        //0xf480275B9F0D97Eb02DE9cEa149A8F613121C588
        _mint(0xFB82C9ADfCb734Ac0bcF13bBf60308FBc225CB21, 1333333 * (10 ** decimals()));
        
        //0x945414c5577cfF660248715905994D51CfB23625
        _mint(0x0057D4c47Da5A0Fb86A98E011E05Fc7419E713cE, 166667 * (10 ** decimals()));
        
        //0x3E8C6676eEf25C7b18a7ac24271075F735c79A16
        _mint(0x154df82a7075735c77D0893dE8Fb32f86EC07614, 666667 * (10 ** decimals()));
        
        //0x09B64e3d589AE90ACCE69C75C346722D8EbFB65D
        _mint(0xf7d9c20b79dEA5622144Bd9A0a85C648546960B2, 666667 * (10 ** decimals()));
        
        //0x859108D264c8bd49BC90b78E6796FeE7AfdfAC63
        _mint(0x5B18c41659EABb4E499727AE478FcD5F7E94bCd4, 666667 * (10 ** decimals()));
        
        //0x603A26BaEDC8316467bC9c3BaA38606Bbc286697
        _mint(0x06F9465330C1ebedA0178a8e7CCd5adD425aDc84, 166667 * (10 ** decimals()));
        
        //0x1A923a54f042f4E43910313827Aa4C6D3429756D
        _mint(0x00Dba888701CbFAe6FF20c447528c979323CFe78, 666667 * (10 ** decimals()));
        
        //0x80B603bCE2D8Cc3acb43B6692514b463a16FB425
        _mint(0xb3852023626A280dE9F8A708C2200268BcC988D6, 666667 * (10 ** decimals()));
        
        //0x08dbbDB48CDe6d890e88328b877589cB1E0c3680
        _mint(0x32a75fBCccc4edc52f21756310D80F10D7e9F1A9, 333333 * (10 ** decimals()));
        
        //0x95c745807A5A7BE209a3F394eEc9A1Ccda4251F4
        _mint(0x0216F0dD79eAA4E4dAF3cd831F972A5Fbc78dd87, 4666667 * (10 ** decimals()));
        
        //0x739bf77ACBdd7b0D81783944D5BC07196365B26d
        _mint(0xCbF7FCdB5F2c11F8F514E31703A02D91E6FC0c0C, 1333333 * (10 ** decimals()));
    }


}

File 2 of 5 : ERC20.sol
// SPDX-License-Identifier: MIT

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 guidelines: functions revert instead
 * of 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 defaut 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");
        _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");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(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:
     *
     * - `to` 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);
    }

    /**
     * @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");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(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 to 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 { }
}

File 3 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

File 4 of 5 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT

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

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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

Settings
{
  "metadata": {
    "bytecodeHash": "none"
  },
  "optimizer": {
    "enabled": true,
    "runs": 800
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "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":"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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600c81526020016b5065676178792053746f6e6560a01b815250604051806040016040528060038152602001620a08eb60eb1b81525081600390805190602001906200006b92919062000a02565b5080516200008190600490602084019062000a02565b505050620000d07329153514e98081cc172db7b830dea9a4d811a584620000ad6200091560201b60201c565b620000ba90600a62000b0c565b620000ca906301312d0062000bda565b6200091a565b6200010773c94fb63396aa06e90a754d92aae67a985ba23ab7620000f76012600a62000b0c565b620000ca906305f5e10062000bda565b6200013e7306cd1ba9a834869e2a8476b405803d450df411676200012e6012600a62000b0c565b620000ca906311e1a30062000bda565b62000175737c00bee8552cca98d828ffa3e7dfc58fa5cb60a6620001656012600a62000b0c565b620000ca90630989680062000bda565b620001ac738757e9873444aa07c610b1fc3b6717e86e6452d16200019c6012600a62000b0c565b620000ca90630d1cef0062000bda565b620001e373a4ce42ea9fd102050e900bb851525af92b304b99620001d36012600a62000b0c565b620000ca906301c9c38062000bda565b620002197357362ee4da166a8e3ac5ce0148e7fbb3c9ccebb36200020a6012600a62000b0c565b620000ca9062e4e1c062000bda565b620002517328f3ba6ade556e905e5d40e88ac53a68311ebdce60125b6200024290600a62000b0c565b620000ca90624c4b4062000bda565b62000287737374abb88614092057537898e03eb624f921fa8b620002786012600a62000b0c565b620000ca9062632ea062000bda565b620002bf7329452e6d32b279677431adeb83beaeb5f2c8e5f860125b620002b090600a62000b0c565b620000ca906298968062000bda565b620002e0735e35bb09fc63e713aac97debecd4f598b03508346012620002a3565b620003187380aa48342cfd7ffb3536828a1acd268b3b64dcfa60125b6200030990600a62000b0c565b620000ca90621e848062000bda565b62000339735ec582bbf2ce59eb50e40781046f99e7dac1d607601262000235565b6200035a73a7087f684ec5b2be931505590cdc66d8dae4b133601262000235565b62000392738140fac8f6c9c6a6e7b4f110e1a0b0f2c819eac460125b6200038390600a62000b0c565b620000ca90620f424062000bda565b620003c873b4ec70f871656fe7d76344e0d753e68048779033620003b96012600a62000b0c565b620000ca90622625a062000bda565b620003fe7399e1dfb42397622a26e2ad67edaef2a6396758a6620003ef6012600a62000b0c565b620000ca90627a120062000bda565b6200043473584dfd3ce3793f2f4009873601796d33f008c895620004256012600a62000b0c565b620000ca9062cb735562000bda565b6200046a7349f1514496b6501f0d1914cf7f320c880ce36e4e6200045b6012600a62000b0c565b620000ca9062fe502a62000bda565b6200048b730fad12202ad23aabf89ac5059a42a944fc47aff06012620002a3565b620004c373f427bfc7efe4e92a4d3503434886f8883a58b7b660125b620004b490600a62000b0c565b620000ca906265b9ab62000bda565b620004f973e3d1a13d85c79d8e7beda31a76702bead12e1602620004ea6012600a62000b0c565b620000ca906228b0ab62000bda565b6200053173ad6bf9c7593e38ba24f578f4d8343ea24e0bf5d160125b6200052290600a62000b0c565b620000ca906232dcd562000bda565b620005527337e4f25080d93941d18cb92619e71f4055bb14b1601262000515565b620005737394a852cd73ba4a23488e1d17e304fe46b9d9fe93601262000515565b6200059473c05ffa2c0244515b8ddc07220fdfc77c36c60073601262000515565b620005b573e2e746f79ffee5dff2b8c8b71d717fb4681bcdcc6012620002fc565b620005d6731b18499973e7f2405e29ffeab82a2ca9cfa1471c6012620002fc565b6200060e737a05fdc83f4d5d9de102ad700e6c6a67b563eeb260125b620005ff90600a62000b0c565b620000ca9062196e6b62000bda565b6200062f731cb743bd360bf665bf2e79e6b098c3f5b9f254246012620005f2565b6200065073f108ef354cd7fd50b6b4e211971742f34a04d3156012620004a7565b6200067173fccf4956361c88e80aedd1e30877910dd9f5227a601262000515565b62000692733413a355f16f95147fd584c69ad160d0d6142911601262000515565b620006ca73041c85ef362b02266021b1d7bd9f4e0d1d2009d160125b620006bb90600a62000b0c565b620000ca906214585562000bda565b620006eb73de3427332855dc936928e1813cf8149fd7717d69601262000376565b6200070c7337c98032327071f7ae88847cf1f412a769534e40601262000376565b6200072d73ed6cdc19a6328fc9c91319d571f5117d61cb78f1601262000376565b6200074e733fe8bf244f9afdc7d386693c617b4fe7ea1237c9601262000376565b6200076f73fb82c9adfcb734ac0bcf13bbf60308fbc225cb216012620006ae565b620007a67257d4c47da5a0fb86a98e011e05fc7419e713ce60125b6200079790600a62000b0c565b620000ca9062028b0b62000bda565b620007de73154df82a7075735c77d0893de8fb32f86ec0761460125b620007cf90600a62000b0c565b620000ca90620a2c2b62000bda565b620007ff73f7d9c20b79dea5622144bd9a0a85c648546960b26012620007c2565b62000820735b18c41659eabb4e499727ae478fcd5f7e94bcd46012620007c2565b620008417306f9465330c1ebeda0178a8e7ccd5add425adc8460126200078a565b6200086172dba888701cbfae6ff20c447528c979323cfe786012620007c2565b6200088273b3852023626a280de9f8a708c2200268bcc988d66012620007c2565b620008b87332a75fbcccc4edc52f21756310d80f10d7e9f1a9620008a96012600a62000b0c565b620000ca906205161562000bda565b620008ee730216f0dd79eaa4e4daf3cd831f972a5fbc78dd87620008df6012600a62000b0c565b620000ca906247352b62000bda565b6200090f73cbf7fcdb5f2c11f8f514e31703a02d91e6fc0c0c6012620006ae565b62000c4f565b601290565b6001600160a01b038216620009755760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000989919062000aa8565b90915550506001600160a01b03821660009081526020819052604081208054839290620009b890849062000aa8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b82805462000a109062000bfc565b90600052602060002090601f01602090048101928262000a34576000855562000a7f565b82601f1062000a4f57805160ff191683800117855562000a7f565b8280016001018555821562000a7f579182015b8281111562000a7f57825182559160200191906001019062000a62565b5062000a8d92915062000a91565b5090565b5b8082111562000a8d576000815560010162000a92565b6000821982111562000abe5762000abe62000c39565b500190565b600181815b8085111562000b0457816000190482111562000ae85762000ae862000c39565b8085161562000af657918102915b93841c939080029062000ac8565b509250929050565b600062000b1d60ff84168362000b24565b9392505050565b60008262000b355750600162000bd4565b8162000b445750600062000bd4565b816001811462000b5d576002811462000b685762000b88565b600191505062000bd4565b60ff84111562000b7c5762000b7c62000c39565b50506001821b62000bd4565b5060208310610133831016604e8410600b841016171562000bad575081810a62000bd4565b62000bb9838362000ac3565b806000190482111562000bd05762000bd062000c39565b0290505b92915050565b600081600019048311821515161562000bf75762000bf762000c39565b500290565b600181811c9082168062000c1157607f821691505b6020821081141562000c3357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61093d8062000c5f6000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461017f57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d66101e6565b6040516100e3919061085d565b60405180910390f35b6100ff6100fa366004610834565b610278565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f3660046107f9565b61028e565b604051601281526020016100e3565b6100ff610151366004610834565b610359565b6101136101643660046107a6565b6001600160a01b031660009081526020819052604090205490565b6100d6610390565b6100ff610195366004610834565b61039f565b6100ff6101a8366004610834565b610452565b6101136101bb3660046107c7565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101f5906108df565b80601f0160208091040260200160405190810160405280929190818152602001828054610221906108df565b801561026e5780601f106102435761010080835404028352916020019161026e565b820191906000526020600020905b81548152906001019060200180831161025157829003601f168201915b5050505050905090565b600061028533848461045f565b50600192915050565b600061029b848484610583565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561033a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61034e853361034986856108c8565b61045f565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102859185906103499086906108b0565b6060600480546101f5906108df565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156104395760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610331565b610448338561034986856108c8565b5060019392505050565b6000610285338484610583565b6001600160a01b0383166104c15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610331565b6001600160a01b0382166105225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610331565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166105ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610331565b6001600160a01b0382166106615760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610331565b6001600160a01b038316600090815260208190526040902054818110156106f05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610331565b6106fa82826108c8565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906107309084906108b0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161077c91815260200190565b60405180910390a350505050565b80356001600160a01b03811681146107a157600080fd5b919050565b6000602082840312156107b7578081fd5b6107c08261078a565b9392505050565b600080604083850312156107d9578081fd5b6107e28361078a565b91506107f06020840161078a565b90509250929050565b60008060006060848603121561080d578081fd5b6108168461078a565b92506108246020850161078a565b9150604084013590509250925092565b60008060408385031215610846578182fd5b61084f8361078a565b946020939093013593505050565b6000602080835283518082850152825b818110156108895785810183015185820160400152820161086d565b8181111561089a5783604083870101525b50601f01601f1916929092016040019392505050565b600082198211156108c3576108c361091a565b500190565b6000828210156108da576108da61091a565b500390565b600181811c908216806108f357607f821691505b6020821081141561091457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea164736f6c6343000804000a

Loading