Contract 0x204820B6e6FEae805e376D2C6837446186e57981 3

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0xb02c1d3884c3b9bec807587cd77ecde4ee1a08ce588f1190b9bd0dada2a86370Approve436514192023-06-07 22:07:4830 mins ago0xf82dcd6eb95b1ab3eccec37eb669ec0726c39534 IN  ROND: ROND Token0 MATIC0.02078775 450
0x43bc72a0328826e2eaa27adb79d16ec40fce304b3d4cda3c00ea69bcb6a13429Approve436513562023-06-07 22:05:3433 mins ago0xf82dcd6eb95b1ab3eccec37eb669ec0726c39534 IN  ROND: ROND Token0 MATIC0.02078235 450
0x918d2e6e5e645e4c46ac36b669b83270824f1083c4e83649365b96f95590e3d1Transfer436513342023-06-07 22:04:4833 mins ago0xf89d7b9c864f589bbf53a82105107622b35eaa40 IN  ROND: ROND Token0 MATIC0.009710205379 187.386969638
0xa9048f3839abb6b487844757a24cf4506a540dddeb41d4d344351918c4820d39Transfer436512872023-06-07 22:03:0835 mins ago0xf89d7b9c864f589bbf53a82105107622b35eaa40 IN  ROND: ROND Token0 MATIC0.005291077733 152.344526039
0xff11daf5d4c040ce955008b3be3fb31ff3341ff08c23c77a4938f58161dfce35Transfer436507312023-06-07 21:42:2156 mins ago0x6264384fc8f5287a7f4e349c9597698a6e104d02 IN  ROND: ROND Token0 MATIC0.004672988161 156.187979596
0xa6c2e32d924075ca313cf8f40e99e428cd236c99be8d78c4f8a05aa71b806f28Transfer436496872023-06-07 21:03:091 hr 35 mins ago0x6264384fc8f5287a7f4e349c9597698a6e104d02 IN  ROND: ROND Token0 MATIC0.004448694915 148.750958503
0x924b4a8b4e190192c9d0365d8c4f0f1256c23f82c3e21c4e2c5f436054f17a7aApprove436496292023-06-07 21:01:011 hr 37 mins ago0x891f0f1ba7ccdaebad686178418ff3eabfa699b1 IN  ROND: ROND Token0 MATIC0.02079315 450
0x607bef192b69104a25665e818929e664660e0d6e17131a28754c96a2642dcc87Transfer436491652023-06-07 20:43:331 hr 55 mins ago0x6264384fc8f5287a7f4e349c9597698a6e104d02 IN  ROND: ROND Token0 MATIC0.005283835838 152.188595256
0x07986b74e14f2fc14083ab02c0867be8812fa5e5b23e3fcaa8c1d758b031d28eApprove436461712023-06-07 18:52:313 hrs 46 mins ago0xee30228d821e90f2fabd549350387518d976383a IN  ROND: ROND Token0 MATIC0.006944524899 150.330661311
0xd9583d4a0815c09220c884d7e8d0190b616241528796d59e978b9038a0d07917Transfer436458822023-06-07 18:41:453 hrs 56 mins ago0x4edc7797764f2f26ee1227603cc9dafe8c96127d IN  ROND: ROND Token0 MATIC0.004334800384 144.942668416
0xf10a0afda19f103c0387fe9d3594eaa4fb84e36d6cc9e8d7ac7e3f4d2ace4851Approve436452312023-06-07 18:18:064 hrs 20 mins ago0x3b9a32fbe90446d1c5d5e446306a6c1124d0b733 IN  ROND: ROND Token0 MATIC0.01310355 450
0xdf0500362908a7b2d7e9a87909e769f83419aa9e97f8182a8f679e8c1d181636Transfer436449922023-06-07 18:08:444 hrs 30 mins ago0x464fc339add314932920d3e060745bd7ea3e92ad IN  ROND: ROND Token0 MATIC0.01005144608194.017142096
0x49b37b5dcf815835a1cdea79a0cf03c7a7b03e996e9ed1028a195815e2d83a42Transfer436448332023-06-07 18:02:344 hrs 36 mins ago0x6264384fc8f5287a7f4e349c9597698a6e104d02 IN  ROND: ROND Token0 MATIC0.004639343143 155.06344273
0xb471598454ea010e3acb019e13f94d23bd9da15b0a37f493827489b8c68e09ddApprove436438542023-06-07 17:26:325 hrs 12 mins ago0xb3e355d108f8f78d731ab1bc8405ab00993d2584 IN  ROND: ROND Token0 MATIC0.01183815 450
0x4adc1c4638e5d7807f749b51bd9ae88a5168ecdac74fc19ddb1bdeeefe502a13Transfer436436802023-06-07 17:20:195 hrs 18 mins ago0x1b37f98497ba7044854dd56c3ecdb5541007c976 IN  ROND: ROND Token0 MATIC0.004501754676 150.404419396
0xe7f951ab40bd3d9bb3fe601d6d3aae24c2e4b35668f701744740de274f0785f1Approve436435842023-06-07 17:16:515 hrs 21 mins ago0xe9e124680888f75a27e0c8d2652774b63751eee7 IN  ROND: ROND Token0 MATIC0.02079315 450
0x82404ffa1ece87afc86709430976468b660f792346f2370942e33bd7bf764288Transfer436434952023-06-07 17:13:235 hrs 25 mins ago0xf89d7b9c864f589bbf53a82105107622b35eaa40 IN  ROND: ROND Token0 MATIC0.006006002329 172.929150591
0x920324d3ccbebd8e4270ccf71b0b7b026738a71be183cd18fc33b35e1f944a0fApprove436431052023-06-07 16:58:405 hrs 40 mins ago0x4f44d671f5b7c36b4f67ae70b0a80006fb0a5aae IN  ROND: ROND Token0 MATIC0.01183815450
0x33849ebdc98ab8b5e49589760322fb1a0b83985133d49fa5a2986709498be01bApprove436430882023-06-07 16:58:045 hrs 40 mins ago0x877e617bcf19b211269482ae65d1d0b16065980b IN  ROND: ROND Token0 MATIC0.02078235 450
0x43759bd0c9eabd283cdc8c1857e8909fc3fa08adfb9e3a6957529200e695837eApprove436430692023-06-07 16:57:225 hrs 41 mins ago0x4f44d671f5b7c36b4f67ae70b0a80006fb0a5aae IN  ROND: ROND Token0 MATIC0.02079315450
0x9283d9622b464436418ad393c832cad98a969a2bf21968c532867d3b5534c55fApprove436429472023-06-07 16:53:035 hrs 45 mins ago0x9ccf96a28187931c203a421cf228c9446f328499 IN  ROND: ROND Token0 MATIC0.01309815 450
0x683f912aac359407755e77a60340ae826858009113917859059736883329da4aApprove436428962023-06-07 16:51:155 hrs 47 mins ago0xf44ce6540633ca84122bb6fe059eb94bacd650fc IN  ROND: ROND Token0 MATIC0.006967270479 150.823043179
0xc3a95a4e407fe40f4edfe70a5a657fb3f272ede6b99e7f59bf58bc54f3beaa88Approve436428412023-06-07 16:49:175 hrs 49 mins ago0x8fe3954eb605f82c0e87cd1632941a9d70a8283a IN  ROND: ROND Token0 MATIC0.006658049761 144.129229612
0xebc5e8b871a8fbb3d29c8ddf5d1f732d5ee8f4833743d98fed30d79c3cfa6046Transfer436423002023-06-07 16:28:446 hrs 10 mins ago0xe8e563ccd8ad2889d916a5b0b06dc8adf50bc52a IN  ROND: ROND Token0 MATIC0.004882399924 163.187269785
0x28a31862f5008fe8f6d610c29684aaf6ccd5421833c4aa68216976ae7be2b2afTransfer436422962023-06-07 16:28:366 hrs 10 mins ago0xf89d7b9c864f589bbf53a82105107622b35eaa40 IN  ROND: ROND Token0 MATIC0.007063460384 203.446538916
[ Download CSV Export 

OVERVIEW

GENSO is the metaverse incarnation of “Elemental Knights Online,” which won the 2012 Game of the year (Gold) in Taiwan.Utilizing blockchain technology, they will create a new economy within the virtual world

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GensoRondToken

Compiler Version
v0.7.0+commit.9e61f92b

Optimization Enabled:
Yes with 100 runs

Other Settings:
default evmVersion
File 1 of 7 : GensoRondToken.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0;

import "@openzeppelin/contracts/token/ERC20/ERC20Capped.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract GensoRondToken is ERC20Capped, Ownable {

    uint256 public constant MAX_TOTAL_SUPPLY = 1000000000000 * 10 ** 18;
    
    /**
     * @dev Initializes the contract setting.
     */
    constructor() public ERC20("ROND Coin", "ROND") ERC20Capped(MAX_TOTAL_SUPPLY) {
        _mint(msg.sender, MAX_TOTAL_SUPPLY);
    }
}

File 2 of 7 : ERC20Capped.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "./ERC20.sol";

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

    uint256 private _cap;

    /**
     * @dev Sets the value of the `cap`. This value is immutable, it can only be
     * set once during construction.
     */
    constructor (uint256 cap_) internal {
        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-_beforeTokenTransfer}.
     *
     * Requirements:
     *
     * - minted tokens must not cause the total supply to go over the cap.
     */
    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
        super._beforeTokenTransfer(from, to, amount);

        if (from == address(0)) { // When minting tokens
            require(totalSupply().add(amount) <= cap(), "ERC20Capped: cap exceeded");
        }
    }
}

File 3 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 4 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "../../utils/Context.sol";
import "./IERC20.sol";
import "../../math/SafeMath.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 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) public {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual 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 {_setupDecimals} is
     * called.
     *
     * 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 returns (uint8) {
        return _decimals;
    }

    /**
     * @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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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].add(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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        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);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(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 = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(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);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(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 Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal virtual {
        _decimals = decimals_;
    }

    /**
     * @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 5 of 7 : Context.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

File 6 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 7 of 7 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 100
  },
  "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":[],"name":"MAX_TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[],"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":"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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060408051808201825260098152682927a7221021b7b4b760b91b6020808301918252835180850190945260048452631493d39160e21b9084015281516c0c9f2c9cd04674edea4000000093916200006d916003919062000390565b5080516200008390600490602084019062000390565b50506005805460ff191660121790555080620000e6576040805162461bcd60e51b815260206004820152601560248201527f45524332304361707065643a2063617020697320300000000000000000000000604482015290519081900360640190fd5b6006556000620000f562000162565b600780546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200015c336c0c9f2c9cd04674edea4000000062000166565b6200042c565b3390565b6001600160a01b038216620001c2576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620001d06000838362000275565b620001ec816002546200032260201b620008071790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200021f9183906200080762000322821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6200028d8383836200031d60201b620008681760201c565b6001600160a01b0383166200031d57620002a662000384565b620002c982620002b56200038a565b6200032260201b620008071790919060201c565b11156200031d576040805162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b505050565b6000828201838110156200037d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60065490565b60025490565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003d357805160ff191683800117855562000403565b8280016001018555821562000403579182015b8281111562000403578251825591602001919060010190620003e6565b506200041192915062000415565b5090565b5b8082111562000411576000815560010162000416565b610d2e806200043c6000396000f3fe608060405234801561001057600080fd5b50600436106100e05760003560e01c806370a082311161008757806370a082311461024c578063715018a6146102725780638da5cb5b1461027c57806395d89b41146102a0578063a457c2d7146102a8578063a9059cbb146102d4578063dd62ed3e14610300578063f2fde38b1461032e576100e0565b806306fdde03146100e5578063095ea7b31461016257806318160ddd146101a257806323b872dd146101bc578063313ce567146101f257806333039d3d14610210578063355274ea146102185780633950935114610220575b600080fd5b6100ed610354565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012757818101518382015260200161010f565b50505050905090810190601f1680156101545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018e6004803603604081101561017857600080fd5b506001600160a01b0381351690602001356103ea565b604080519115158252519081900360200190f35b6101aa610407565b60408051918252519081900360200190f35b61018e600480360360608110156101d257600080fd5b506001600160a01b0381358116916020810135909116906040013561040d565b6101fa610494565b6040805160ff9092168252519081900360200190f35b6101aa61049d565b6101aa6104ae565b61018e6004803603604081101561023657600080fd5b506001600160a01b0381351690602001356104b4565b6101aa6004803603602081101561026257600080fd5b50356001600160a01b0316610502565b61027a61051d565b005b6102846105db565b604080516001600160a01b039092168252519081900360200190f35b6100ed6105ea565b61018e600480360360408110156102be57600080fd5b506001600160a01b03813516906020013561064b565b61018e600480360360408110156102ea57600080fd5b506001600160a01b0381351690602001356106b3565b6101aa6004803603604081101561031657600080fd5b506001600160a01b03813581169160200135166106c7565b61027a6004803603602081101561034457600080fd5b50356001600160a01b03166106f2565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103e05780601f106103b5576101008083540402835291602001916103e0565b820191906000526020600020905b8154815290600101906020018083116103c357829003601f168201915b5050505050905090565b60006103fe6103f761086d565b8484610871565b50600192915050565b60025490565b600061041a84848461095d565b61048a8461042661086d565b61048585604051806060016040528060288152602001610c63602891396001600160a01b038a1660009081526001602052604081209061046461086d565b6001600160a01b031681526020810191909152604001600020549190610ab8565b610871565b5060019392505050565b60055460ff1690565b6c0c9f2c9cd04674edea4000000081565b60065490565b60006103fe6104c161086d565b8461048585600160006104d261086d565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610807565b6001600160a01b031660009081526020819052604090205490565b61052561086d565b6001600160a01b03166105366105db565b6001600160a01b031614610591576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6007546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600780546001600160a01b0319169055565b6007546001600160a01b031690565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156103e05780601f106103b5576101008083540402835291602001916103e0565b60006103fe61065861086d565b8461048585604051806060016040528060258152602001610cd4602591396001600061068261086d565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610ab8565b60006103fe6106c061086d565b848461095d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6106fa61086d565b6001600160a01b031661070b6105db565b6001600160a01b031614610766576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166107ab5760405162461bcd60e51b8152600401808060200182810382526026815260200180610bf56026913960400191505060405180910390fd5b6007546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b600082820183811015610861576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b505050565b3390565b6001600160a01b0383166108b65760405162461bcd60e51b8152600401808060200182810382526024815260200180610cb06024913960400191505060405180910390fd5b6001600160a01b0382166108fb5760405162461bcd60e51b8152600401808060200182810382526022815260200180610c1b6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166109a25760405162461bcd60e51b8152600401808060200182810382526025815260200180610c8b6025913960400191505060405180910390fd5b6001600160a01b0382166109e75760405162461bcd60e51b8152600401808060200182810382526023815260200180610bd26023913960400191505060405180910390fd5b6109f2838383610b4f565b610a2f81604051806060016040528060268152602001610c3d602691396001600160a01b0386166000908152602081905260409020549190610ab8565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610a5e9082610807565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610b475760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610b0c578181015183820152602001610af4565b50505050905090810190601f168015610b395780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b610b5a838383610868565b6001600160a01b03831661086857610b706104ae565b610b8282610b7c610407565b90610807565b1115610868576040805162461bcd60e51b8152602060048201526019602482015278115490cc8c10d85c1c19590e8818d85c08195e18d959591959603a1b604482015290519081900360640190fdfe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207e52e19078146b7336e2194d74cbb91900beb7cb98362b478d08cf3a694693e664736f6c63430007000033

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.