Contract 0x204820b6e6feae805e376d2c6837446186e57981 2

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x68342b6b954de28f93094cd08292048c91cf8269fd4ed4e97fcc1e7238387092Approve406657392023-03-23 6:51:151 hr 7 mins ago0x25cf784407075729c5cf6f775c5230f71eaa9c94 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.02077695 450
0x728a785a822fce2ffd8bd4ccbf0beccff3204a8c5e38e0e7b3bb9784452e9879Approve406656782023-03-23 6:49:051 hr 10 mins ago0x83e41ba6f3747e6a6332bddb0ad7ab1c0e563623 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.004480574794 96.391687155
0x30329888a51276fab4a9fdafaf905c5b523e1021b4a4d08dfed8bab1c54a217bTransfer406650512023-03-23 6:26:211 hr 32 mins ago0xf89d7b9c864f589bbf53a82105107622b35eaa40 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.0518191,000
0x7aec0f0f80c111619f6e03ce3045e67e232628da60527517350b5ab0dc08edbdTransfer406643112023-03-23 5:59:371 hr 59 mins ago0x2b90aa52e5b83cfaa26ecf3a1ecdfabeb98d7c5b IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.004512994749 87.091506005
0xb3c002a340ae8b6b555487758fd3841397ac06ace28708e4c04f78f8f4621b2cTransfer406639442023-03-23 5:46:372 hrs 12 mins ago0xf89d7b9c864f589bbf53a82105107622b35eaa40 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.0347191,000
0x454bbe30b819822d7ae0cd78e9c2b5e0f59b1636433d0588a2abaa28cb0bf670Transfer406635162023-03-23 5:30:552 hrs 28 mins ago0x48e2962d19c0a2dec2a1b159f4f6828155687505 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.003437554931 73.091257494
0xbf0f188a3a42114d94434804b7a1a594a87332b73afa58d292e53d1a1f667847Approve406626152023-03-23 4:58:293 hrs ago0xa6e8267bd7405f6017d976847d00cfaf6bf9adea IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.003244422484 70.233195888
0xe90b761fb99a487542d372bc01f48aabe77d18659d0c2c2a793201c7132694d4Approve406624722023-03-23 4:53:253 hrs 5 mins ago0x7a6e6758b120db823c381ea8fa814466ceb616c9 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.00305373909965.695826425
0xe010d39e86ba052968556dd0e69619a8b4b00ca1dfe71933b552654278e0f623Approve406624132023-03-23 4:51:193 hrs 7 mins ago0xc52d0245a7c2d9d266c1f051b6e5c8bc4ba5ce7c IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.01310355 450
0xf37535367eb8772beecb690f2cd004724e8806031bcc2466baf1ec6bb11d4f0dApprove406623362023-03-23 4:48:373 hrs 10 mins ago0xf4f25401be9f29d43dfea8da889e393106b41348 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.02078235 450
0x718e4e54e420927e358bfcd2e9ef4c55e84fb2453cc9d5575e5b830bf3355819Transfer406618782023-03-23 4:31:513 hrs 27 mins ago0xcc0c9e0695c968f064bab35bdbd80f427ace9c2d IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.003859404286 82.123721378
0xe1cfa997a00be3598a9a16386eea132150a7d537b0b9792f9badb8539b3c3d3cApprove406618282023-03-23 4:30:053 hrs 29 mins ago0x89a44a7f8def3a95379ebb76de518ad7a55f8bb0 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.01310355450
0x861d1dde8f870cac481e11d3f289defa1b589e0d40e66acbfb1206f2a822b3aeTransfer406614332023-03-23 4:16:053 hrs 43 mins ago0x97d0e703d7879ef25b64a4bbbf20168a42ea4bfe IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.004533547539 96.419480207
0xd325cd85b0e6b1a2917bd65dbae0ecea44e2e1e4d27fadde4b9fa49ec56894a9Transfer406612902023-03-23 4:11:013 hrs 48 mins ago0x6d7a15ad66f3cf7171ec8c68e9996c7bb9e2ea1a IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.002644433495 88.421891031
0xddc581408f0291c8a2727fa8702255d4bec82c637bbabd20b0010e4ed4bfcdfcTransfer406612792023-03-23 4:10:373 hrs 48 mins ago0x233733cca5c88083e28f123aa9de06208f91b22a IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.00258721397286.50864253
0xae5a27a079315e0ed85191f45ca9a4edbf5c2240d7c6abb94488abd69b872df1Transfer406612752023-03-23 4:10:293 hrs 48 mins ago0x5d1b5a9ce471d6db78f9ac686aa38851a76a7ff6 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.002645062213 88.442913493
0x37d6611d021ce98145a5e3ac5ef15862b7601f55ecfb8fecef210e0fd33d9925Transfer406611642023-03-23 4:06:333 hrs 52 mins ago0x2b38f6874b81611bb808719c368c563b6f89e15f IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.003440714122 115.047116808
0x1e3a7b7ce55ad1bce8be450960466f186a29f69d7fe8ab866e00fc8f1246550dApprove406611622023-03-23 4:06:293 hrs 52 mins ago0x89a44a7f8def3a95379ebb76de518ad7a55f8bb0 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.02079855450
0x4d2d412364da0c46f6edf64eb616a88d611bda4e533afe79ddce32409103588aTransfer406611562023-03-23 4:06:173 hrs 52 mins ago0x8d87240c0fbfed66da475e6cca454092e6dbce51 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.003447572647 115.276445214
0x7f960d715d71e1caf8f39a1eea6e0292e8d90ea2df41feab8215c4d4a930a0abApprove406611402023-03-23 4:05:213 hrs 53 mins ago0x058c5f322c4efc005b36d15970ce5c7355696815 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.004095444998 88.106296891
0x07b8b848f49f2f9106b693248aade7513929d85c621e2302bed93013b513d4f0Transfer406611022023-03-23 4:03:493 hrs 55 mins ago0x2c0182955fa78c6f11abf7a46d87a8d7e6dc8273 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.002458069956 82.190455623
0x4d237aeb46cf2b586b370fa3461417e84da096fc9e07155c0749afd140e45174Approve406610292023-03-23 4:01:153 hrs 57 mins ago0xa48c1b1c1417dc7bddbe6c98f9c0cf6730747ac2 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.02079855 450
0xc165b356db8eb523f681c9f5cd7d8446ce3d6a05dd5c0da46f40a95878a2403aTransfer406608682023-03-23 3:55:334 hrs 3 mins ago0x62c86228ae2655340ac64a224e89bd2301ef44d0 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.003877949539 82.497277841
0x8bfc13b2676fff5ed61caec095416ddf7442aa695f51bd005238d105e863ecd0Transfer406608642023-03-23 3:55:254 hrs 3 mins ago0xf89d7b9c864f589bbf53a82105107622b35eaa40 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.0518191,000
0x7804c4ed73a3061c74a22cee9373c1b05b85ca4676ca51df420af930c065b1a4Approve406608112023-03-23 3:53:314 hrs 5 mins ago0x7676d93d60ea25a551198633f8b81b4fcf941099 IN  0x204820b6e6feae805e376d2c6837446186e579810 MATIC0.01182735 450
[ Download CSV Export 
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

Contract Source Code (Solidity Standard Json-Input format)

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.