Contract 0x87f393ecda8ca092d8dbb9de2e438f2ded465b46 1

 

Contract Overview

EasyFeedback: EASYF Token
Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x94cd476e9d3dd0543e097cb9446fe2a1adb51d224db9c43e62d1749aa07e9e93Transfer383248112023-01-20 21:54:0511 days 2 hrs ago0x7aab9ec6c80167a0c485bb615cfec8851371d98a IN  EasyFeedback: EASYF Token0 MATIC0.003193059098 68.296346721
0x4118729d792557dd503c37cef421c14328d5b5f2d44da922dd63829c3f415914Transfer383066962023-01-20 10:56:5111 days 13 hrs ago0x8dd36ff849bd62432c1184fdce6ecb1a378dfff9 IN  EasyFeedback: EASYF Token0 MATIC0.001513068297 51.04646597
0x5cf172aab4c5565cf18d9840b1c3598f258bd6a8fa0adb08e21976aa63a53c34Transfer382694522023-01-19 11:56:2312 days 12 hrs ago0x44fc7776c2caa2ec8e3101f720d539280d639616 IN  EasyFeedback: EASYF Token0 MATIC0.001546087802 52.139338419
0x7cdd336800761287ad6eb0934b57674f7d9cf6d5887febd72666144c5aad5065Transfer374696212022-12-30 17:56:4332 days 6 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.002275286669 44.124632403
0xc6de6dc358d6cc343dc32d422e75f95e981f6ef88838d0d9be815e6006941e76Transfer374696032022-12-30 17:56:0732 days 6 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.002515910693 48.80241099
0xa1c06e898f2807d27fb28cf94a54eb7bd95ef16d45cacbfb29c17e9cef8ca1b8Transfer362445772022-11-30 7:28:5462 days 17 hrs ago0xaec423973457d5a64a18d99f3be41ca2f02c0c4c IN  EasyFeedback: EASYF Token0 MATIC0.001409570254 30.141564295
0xd1fe571b7538636abcb94eb6e237bf93da5cd5d9b9d79e86154d3c4c9b6efbcfTransfer358155602022-11-19 20:34:3673 days 3 hrs ago0x8dd36ff849bd62432c1184fdce6ecb1a378dfff9 IN  EasyFeedback: EASYF Token0 MATIC0.000889590001 30.00000005
0x9c98b2a5c593d2a2f59cb769dea02afabc4a904c184be793ee885f3e64a1f70cTransfer354005552022-11-09 15:21:4183 days 9 hrs ago0x4a1d59f64c6a2866e24e24d461418934399f2992 IN  EasyFeedback: EASYF Token0 MATIC0.003866271744 130.383831124
0x627690949d72fac8b53747b6a625317bf277f15da2189be4971ff9de4efbae29Transfer353366552022-11-08 2:07:1484 days 22 hrs ago0x424aefd4d1981492c37249f057c6a2871cb7de4e IN  EasyFeedback: EASYF Token0 MATIC0.00545669041105.846224482
0x475344e88294cee45bea36915d479273a95e7cad242ab46a21a9a1e426918c40Approve353220942022-11-07 17:18:5185 days 7 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.002466178228 92.41468293
0x4f8b3102d5e08646dbcf4669b105db2fd6a0d186c2b966dbe0748e15ee4d7dbfApprove353220742022-11-07 17:18:1185 days 7 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.005081758911 109.083392254
0xa2173dc66fd0516f24f637e4459b28cb1c5692921ff728941f304df6b698eaedTransfer341230892022-10-09 10:28:37114 days 14 hrs ago0xec29011b45deb1045ea1a84c3562db25cd558624 IN  EasyFeedback: EASYF Token0 MATIC0.002392343865 51.182984219
0xf31efd4ea5e922148afa816cc80a9d2e8944311c07e75a2dc9f2723cb1b5c72aTransfer340409832022-10-07 10:34:23116 days 13 hrs ago0xdd7af3f036723530ca7754dc294bbeafffa357f6 IN  EasyFeedback: EASYF Token0 MATIC0.00164787785835.237418118
0x01b107980360a9457c81199415b0efc0f537e77bf67797c2e52bddfb56aa1cfaTransfer320807442022-08-19 18:07:44165 days 6 hrs ago0x80d7c4e52c450dbbbc7d3712185156f1e808b125 IN  EasyFeedback: EASYF Token0 MATIC0.000820493415 30.555000013
0xa70293c418c0ca68b30cff96f26ea325288c518bd5b261fa005637da2371fb63Transfer315262562022-08-04 22:27:47180 days 2 hrs ago0xc69bc15411d6734c430ba11aedd056923288bb3e IN  EasyFeedback: EASYF Token0 MATIC0.001442870917 30.861568613
0x60fc7dc77e409f75a375757b4b98e0b05377ab5f9ed7c27877644f1f95c0c943Transfer309434022022-07-20 16:40:41195 days 7 hrs ago0x04c73c2aded6007f47d9dbc8a9641f6554fe3105 IN  EasyFeedback: EASYF Token0 MATIC0.00321865460168.843808982
0x3b302e648f31074cd3bd9e98f9a04f8aa4ea328b5126f50dd0bbb156ff044924Transfer309254612022-07-20 5:56:11195 days 18 hrs ago0x977546536c80be9f1a3be98d91fe4df147328ff2 IN  EasyFeedback: EASYF Token0 MATIC0.001632614758 34.919999975
0x736adaea51bd6084db7c6e19fac6a244653222b8a1743a78fa58e4ae1fc57020Transfer307610862022-07-15 18:54:59200 days 5 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.001704098038 33.055264269
0xd357466504e4e43b2d0f298fb6c98dfc6696e7c81f8fdb65987c87b0e9e400a7Transfer307610832022-07-15 18:54:47200 days 5 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.001146520019 33.266212674
0x0665b230b167dd5b0e951d983136e699fd610446b06752cf38ce604b90e607aeTransfer307610782022-07-15 18:54:27200 days 5 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.001704097663 33.055256983
0x4485475e51bf618e94287fc6b4af6cbb8d92616955fa83fdd02f09ea7652aae3Transfer307610742022-07-15 18:54:11200 days 5 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.001757210509 34.077581883
0x76668bd4769dfc67f96e3d39766f1df62fb951dde95165dcd00f8783cf8aab71Transfer307610692022-07-15 18:53:51200 days 5 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.001811135486 35.131524579
0x167d7df9e775fedac5e784dbbe985c2b2c8b854d0e2409067f28c5a01a904102Transfer307610652022-07-15 18:53:35200 days 5 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.001811557038 35.131524064
0xab1de5039a004ecebff97109613ad523e03a66cdb48eeeff903d27a60b2a8bacTransfer298010332022-06-20 19:06:05225 days 5 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.001217671558 35.342976189
0x6770c0814e40bf17afecb2d23afd36508cab277be685f1d016e1c26b15fbe2aeTransfer298010292022-06-20 19:05:49225 days 5 hrs agoEasyFeedback: Deployer IN  EasyFeedback: EASYF Token0 MATIC0.001136663328 32.991708374
[ Download CSV Export 

OVERVIEW

With the purpose of bridging the Feedback industry to crypto by creating the novel “Proof of Feedback” (PoF), a model by which people who communicate useful and private feedback to improve products, services and processes of companies are fairly rewarded with our token.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EasyFeedBackToken

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 7 : EasyFeedBackToken.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

contract EasyFeedBackToken is ERC20Capped, Ownable {
    constructor ()
    ERC20("EasyFeedback", "EASYF")
    ERC20Capped(179141000000 * 1 ether)
    {
        // Mint 0.2% of total supply
        mint(msg.sender, (358282000 * 1 ether));
    }

    event Burned(address indexed burner, uint256 burnAmount);

    event Minted(
        address indexed minter,
        address indexed receiver,
        uint256 mintAmount
    );

    function mint(address _to, uint256 _amount) public onlyOwner {
        require(_amount > 0, "ERC20: Cannot mint 0 tokens");
        _mint(_to, _amount);
        emit Minted(owner(), _to, _amount);
    }

}

File 2 of 7 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

File 3 of 7 : IERC20Metadata.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

File 4 of 7 : ERC20Capped.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/ERC20Capped.sol)

pragma solidity ^0.8.0;

import "../ERC20.sol";

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

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

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

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

File 5 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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

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

    /**
     * @dev Moves `amount` tokens from the caller's account to `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 6 of 7 : ERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

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

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

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

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

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":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"burnAmount","type":"uint256"}],"name":"Burned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"Minted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]

60a06040523480156200001157600080fd5b50604080518082018252600c81526b45617379466565646261636b60a01b60208083019182528351808501909452600584526422a0a9aca360d91b9084015281516c0242d5f64d0fb08977e50000009391620000719160039190620003f9565b50805162000087906004906020840190620003f9565b50505060008111620000e05760405162461bcd60e51b815260206004820152601560248201527f45524332304361707065643a206361702069732030000000000000000000000060448201526064015b60405180910390fd5b608052620000ee336200010c565b62000106336b01285d2a235c0046624000006200015e565b62000503565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620001ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000d7565b600081116200020c5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2043616e6e6f74206d696e74203020746f6b656e7300000000006044820152606401620000d7565b6200021882826200027c565b6001600160a01b038216620002356005546001600160a01b031690565b6001600160a01b03167f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0836040516200027091815260200190565b60405180910390a35050565b60805181620002956200030c60201b620003361760201c565b620002a191906200049f565b1115620002f15760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a20636170206578636565646564000000000000006044820152606401620000d7565b6200030882826200031260201b620006931760201c565b5050565b60025490565b6001600160a01b0382166200036a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620000d7565b80600260008282546200037e91906200049f565b90915550506001600160a01b03821660009081526020819052604081208054839290620003ad9084906200049f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000308565b8280546200040790620004c6565b90600052602060002090601f0160209004810192826200042b576000855562000476565b82601f106200044657805160ff191683800117855562000476565b8280016001018555821562000476579182015b828111156200047657825182559160200191906001019062000459565b506200048492915062000488565b5090565b5b8082111562000484576000815560010162000489565b60008219821115620004c157634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620004db57607f821691505b60208210811415620004fd57634e487b7160e01b600052602260045260246000fd5b50919050565b608051610d39620005266000396000818161017c0152610a640152610d396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a457c2d711610066578063a457c2d71461021c578063a9059cbb1461022f578063dd62ed3e14610242578063f2fde38b1461027b57600080fd5b806370a08231146101c8578063715018a6146101f15780638da5cb5b146101f957806395d89b411461021457600080fd5b8063313ce567116100d3578063313ce5671461016b578063355274ea1461017a57806339509351146101a057806340c10f19146101b357600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d61028e565b60405161011a9190610b41565b60405180910390f35b610136610131366004610bb2565b610320565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610bdc565b61033c565b6040516012815260200161011a565b7f000000000000000000000000000000000000000000000000000000000000000061014a565b6101366101ae366004610bb2565b6103eb565b6101c66101c1366004610bb2565b610427565b005b61014a6101d6366004610c18565b6001600160a01b031660009081526020819052604090205490565b6101c661050d565b6005546040516001600160a01b03909116815260200161011a565b61010d610543565b61013661022a366004610bb2565b610552565b61013661023d366004610bb2565b6105eb565b61014a610250366004610c3a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101c6610289366004610c18565b6105f8565b60606003805461029d90610c6d565b80601f01602080910402602001604051908101604052809291908181526020018280546102c990610c6d565b80156103165780601f106102eb57610100808354040283529160200191610316565b820191906000526020600020905b8154815290600101906020018083116102f957829003601f168201915b5050505050905090565b600061032d33848461076f565b50600192915050565b60025490565b6000610349848484610893565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103d35760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103e0853385840361076f565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161032d918590610422908690610ca8565b61076f565b6005546001600160a01b031633146104515760405162461bcd60e51b81526004016103ca90610cce565b600081116104a15760405162461bcd60e51b815260206004820152601b60248201527f45524332303a2043616e6e6f74206d696e74203020746f6b656e73000000000060448201526064016103ca565b6104ab8282610a62565b816001600160a01b03166104c76005546001600160a01b031690565b6001600160a01b03167f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f08360405161050191815260200190565b60405180910390a35050565b6005546001600160a01b031633146105375760405162461bcd60e51b81526004016103ca90610cce565b6105416000610aef565b565b60606004805461029d90610c6d565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156105d45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103ca565b6105e1338585840361076f565b5060019392505050565b600061032d338484610893565b6005546001600160a01b031633146106225760405162461bcd60e51b81526004016103ca90610cce565b6001600160a01b0381166106875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103ca565b61069081610aef565b50565b6001600160a01b0382166106e95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103ca565b80600260008282546106fb9190610ca8565b90915550506001600160a01b03821660009081526020819052604081208054839290610728908490610ca8565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610501565b5050565b6001600160a01b0383166107d15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103ca565b6001600160a01b0382166108325760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103ca565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166108f75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103ca565b6001600160a01b0382166109595760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103ca565b6001600160a01b038316600090815260208190526040902054818110156109d15760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103ca565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610a08908490610ca8565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5491815260200190565b60405180910390a350505050565b7f000000000000000000000000000000000000000000000000000000000000000081610a8d60025490565b610a979190610ca8565b1115610ae55760405162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a206361702065786365656465640000000000000060448201526064016103ca565b61076b8282610693565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600060208083528351808285015260005b81811015610b6e57858101830151858201604001528201610b52565b81811115610b80576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610bad57600080fd5b919050565b60008060408385031215610bc557600080fd5b610bce83610b96565b946020939093013593505050565b600080600060608486031215610bf157600080fd5b610bfa84610b96565b9250610c0860208501610b96565b9150604084013590509250925092565b600060208284031215610c2a57600080fd5b610c3382610b96565b9392505050565b60008060408385031215610c4d57600080fd5b610c5683610b96565b9150610c6460208401610b96565b90509250929050565b600181811c90821680610c8157607f821691505b60208210811415610ca257634e487b7160e01b600052602260045260246000fd5b50919050565b60008219821115610cc957634e487b7160e01b600052601160045260246000fd5b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122001b8c4c3ffb6168c9af6a9af90d3b3f5a0877b4aefbaa7da119f6130511e0ac164736f6c634300080a0033

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.