Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x76F542274F6b68E06CE95F37d2A4eA843C661635
Balance 0 ETH
Nonce 1
Code Size 5128 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

5128 bytes
0x608060405234801561001057600080fd5b50600436106101735760003560e01c80637b7e8bac116100de578063a9059cbb11610097578063cf82046111610071578063cf82046114610322578063dd62ed3e1461032b578063f2fde38b14610364578063fce589d81461037757600080fd5b8063a9059cbb146102e9578063b2bdfa7b146102fc578063bedb86fb1461030f57600080fd5b80637b7e8bac1461026c578063875ae990146102975780638980f11f146102aa5780638da5cb5b146102bd57806395d89b41146102ce578063a457c2d7146102d657600080fd5b8063395093511161013057806339509351146101f357806340c10f191461020657806342966c681461021b5780636985a0221461022e57806370a082311461023b578063715018a61461026457600080fd5b806306fdde0314610178578063095ea7b31461019657806310c8aeac146101b957806318160ddd146101d057806323b872dd146101d8578063313ce567146101eb575b600080fd5b610180610380565b60405161018d9190611131565b60405180910390f35b6101a96101a436600461119b565b610412565b604051901515815260200161018d565b6101c2600b5481565b60405190815260200161018d565b6003546101c2565b6101a96101e63660046111c5565b610429565b6004546101c2565b6101a961020136600461119b565b6104df565b61021961021436600461119b565b610516565b005b610219610229366004611201565b61055d565b6000546101a99060ff1681565b6101c261024936600461121a565b6001600160a01b031660009081526001602052604090205490565b6102196105a3565b60095461027f906001600160a01b031681565b6040516001600160a01b03909116815260200161018d565b6102196102a5366004611235565b610626565b6102196102b836600461119b565b610689565b600a546001600160a01b031661027f565b610180610759565b6101a96102e436600461119b565b610768565b6101a96102f736600461119b565b610803565b600a5461027f906001600160a01b031681565b61021961031d366004611278565b610810565b6101c260075481565b6101c2610339366004611295565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61021961037236600461121a565b61085c565b6101c260085481565b60606005805461038f906112c8565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb906112c8565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b5050505050905090565b600061041f338484610956565b5060015b92915050565b6000610436848484610a7b565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156104c05760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104d485336104cf8685611318565b610956565b506001949350505050565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161041f9185906104cf90869061132b565b32610529600a546001600160a01b031690565b6001600160a01b03161461054f5760405162461bcd60e51b81526004016104b79061133e565b6105598282610dd5565b5050565b32610570600a546001600160a01b031690565b6001600160a01b0316146105965760405162461bcd60e51b81526004016104b79061133e565b6105a03382610ea2565b50565b326105b6600a546001600160a01b031690565b6001600160a01b0316146105dc5760405162461bcd60e51b81526004016104b79061133e565b600a546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600a80546001600160a01b0319169055565b32610639600a546001600160a01b031690565b6001600160a01b03161461065f5760405162461bcd60e51b81526004016104b79061133e565b600792909255600855600980546001600160a01b0319166001600160a01b03909216919091179055565b3261069c600a546001600160a01b031690565b6001600160a01b0316146106c25760405162461bcd60e51b81526004016104b79061133e565b816001600160a01b031663a9059cbb6106e3600a546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610730573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107549190611373565b505050565b60606006805461038f906112c8565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156107ea5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104b7565b6107f933856104cf8685611318565b5060019392505050565b600061041f338484610a7b565b32610823600a546001600160a01b031690565b6001600160a01b0316146108495760405162461bcd60e51b81526004016104b79061133e565b6000805460ff1916911515919091179055565b3261086f600a546001600160a01b031690565b6001600160a01b0316146108955760405162461bcd60e51b81526004016104b79061133e565b6001600160a01b0381166108fa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104b7565b600a546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109b85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104b7565b6001600160a01b038216610a195760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104b7565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610adf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104b7565b6001600160a01b038216610b415760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104b7565b60005460ff1615610b7c5760405162461bcd60e51b8152602060048201526005602482015264506175736560d81b60448201526064016104b7565b6001600160a01b03831660009081526001602052604090205481811015610bf45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104b7565b610bfe8282611318565b6001600160a01b038516600090815260016020526040902055600754829015801590610c3857506009546001600160a01b03868116911614155b15610cdb576000610c586007546064610c519190611390565b8390610fdf565b6009546001600160a01b0316600090815260016020526040902054909150610c809082611028565b600980546001600160a01b03908116600090815260016020908152604091829020949094559154915184815291811692908916916000805160206113b3833981519152910160405180910390a3610cd78482611087565b9350505b6000600854118015610cfb57506009546001600160a01b03868116911614155b15610d64576000610d146008546064610c519190611390565b600354909150610d249082611087565b6003556040518181526000906001600160a01b038816906000805160206113b38339815191529060200160405180910390a3610d608482611087565b9350505b6001600160a01b03841660009081526001602052604081208054859290610d8c90849061132b565b92505081905550836001600160a01b0316856001600160a01b03166000805160206113b383398151915285604051610dc691815260200190565b60405180910390a35050505050565b6001600160a01b038216610e2b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104b7565b8060036000828254610e3d919061132b565b90915550506001600160a01b03821660009081526001602052604081208054839290610e6a90849061132b565b90915550506040518181526001600160a01b038316906000906000805160206113b38339815191529060200160405180910390a35050565b6001600160a01b038216610f025760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104b7565b6001600160a01b03821660009081526001602052604090205481811015610f765760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104b7565b610f808282611318565b6001600160a01b03841660009081526001602052604081209190915560038054849290610fae908490611318565b90915550506040518281526000906001600160a01b038516906000805160206113b383398151915290602001610a6e565b600061102183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110c9565b9392505050565b600080611035838561132b565b9050838110156110215760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104b7565b600061102183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611100565b600081836110ea5760405162461bcd60e51b81526004016104b79190611131565b5060006110f78486611390565b95945050505050565b600081848411156111245760405162461bcd60e51b81526004016104b79190611131565b5060006110f78486611318565b600060208083528351808285015260005b8181101561115e57858101830151858201604001528201611142565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461119657600080fd5b919050565b600080604083850312156111ae57600080fd5b6111b78361117f565b946020939093013593505050565b6000806000606084860312156111da57600080fd5b6111e38461117f565b92506111f16020850161117f565b9150604084013590509250925092565b60006020828403121561121357600080fd5b5035919050565b60006020828403121561122c57600080fd5b6110218261117f565b60008060006060848603121561124a57600080fd5b83359250602084013591506112616040850161117f565b90509250925092565b80151581146105a057600080fd5b60006020828403121561128a57600080fd5b81356110218161126a565b600080604083850312156112a857600080fd5b6112b18361117f565b91506112bf6020840161117f565b90509250929050565b600181811c908216806112dc57607f821691505b6020821081036112fc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561042357610423611302565b8082018082111561042357610423611302565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561138557600080fd5b81516110218161126a565b6000826113ad57634e487b7160e01b600052601260045260246000fd5b50049056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122021ff385b214aa405f97fe785ef1d53d31be0230c409aa842316ccbb56405201a64736f6c63430008110033

Verified Source Code Partial Match

Compiler: v0.8.17+commit.8df45f5f EVM: london Optimization: Yes (200 runs)
Ethereum.sol 664 lines
  
// SPDX-License-Identifier: Unlicensed
  pragma solidity ^0.8.0;
  
  
  
  library SafeMath {
      function add(uint256 a, uint256 b) internal pure returns (uint256) {
          uint256 c = a + b;
          require(c >= a, "SafeMath: addition overflow");
  
          return c;
      }
  
      function sub(uint256 a, uint256 b) internal pure returns (uint256) {
          return sub(a, b, "SafeMath: subtraction overflow");
      }
  
      function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
          require(b <= a, errorMessage);
          uint256 c = a - b;
  
          return c;
      }
  
      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-contracts/pull/522
          if (a == 0) {
              return 0;
          }
  
          uint256 c = a * b;
          require(c / a == b, "SafeMath: multiplication overflow");
  
          return c;
      }
  
      function div(uint256 a, uint256 b) internal pure returns (uint256) {
          return div(a, b, "SafeMath: division by zero");
      }
  
      function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
          require(b > 0, errorMessage);
          uint256 c = a / b;
          // assert(a == b * c + a % b); // There is no case in which this doesn't hold
  
          return c;
      }
  
      function mod(uint256 a, uint256 b) internal pure returns (uint256) {
          return mod(a, b, "SafeMath: modulo by zero");
      }
  
      function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
          require(b != 0, errorMessage);
          return a % b;
      }
  }
  
  /**
   * @dev Interface of the ERC20 standard as defined in the EIP.
   */
  interface IERC20 {
      /**
       * @dev Returns the amount of tokens in existence.
       */
      function totalSupply() external view returns (uint256);
  
      /**
       * @dev Returns the amount of tokens owned by 'account'.
       */
      function balanceOf(address account) external view returns (uint256);
  
      /**
       * @dev Moves 'amount' tokens from the caller's account to 'recipient'.
       *
       * Returns a boolean value indicating whether the operation succeeded.
       *
       * Emits a {Transfer} event.
       */
      function transfer(address recipient, uint256 amount) external returns (bool);
  
      /**
       * @dev Returns the remaining number of tokens that 'spender' will be
       * allowed to spend on behalf of 'owner' through {transferFrom}. This is
       * zero by default.
       *
       * This value changes when {approve} or {transferFrom} are called.
       */
      function allowance(address owner, address spender) external view returns (uint256);
  
      /**
       * @dev Sets 'amount' as the allowance of 'spender' over the caller's tokens.
       *
       * Returns a boolean value indicating whether the operation succeeded.
       *
       * IMPORTANT: Beware that changing an allowance with this method brings the risk
       * that someone may use both the old and the new allowance by unfortunate
       * transaction ordering. One possible solution to mitigate this race
       * condition is to first reduce the spender's allowance to 0 and set the
       * desired value afterwards:
       * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
       *
       * Emits an {Approval} event.
       */
      function approve(address spender, uint256 amount) external returns (bool);
  
      /**
       * @dev Moves 'amount' tokens from 'sender' to 'recipient' using the
       * allowance mechanism. 'amount' is then deducted from the caller's
       * allowance.
       *
       * Returns a boolean value indicating whether the operation succeeded.
       *
       * Emits a {Transfer} event.
       */
      function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  
      /**
       * @dev Emitted when 'value' tokens are moved from one account ('from') to
       * another ('to').
       *
       * Note that 'value' may be zero.
       */
      event Transfer(address indexed from, address indexed to, uint256 value);
  
      /**
       * @dev Emitted when the allowance of a 'spender' for an 'owner' is set by
       * a call to {approve}. 'value' is the new allowance.
       */
      event Approval(address indexed owner, address indexed spender, uint256 value);
  }
  
  // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol
  
  
  
  pragma solidity ^0.8.0;
  
  
  /**
   * @dev Interface for the optional metadata functions from the ERC20 standard.
   *
   * _Available since v4.1._
   */
  interface IERC20Metadata is IERC20 {
      /**
       * @dev Returns the name of the token.
       */
      function name() external view returns (string memory);
  
      /**
       * @dev Returns the symbol of the token.
       */
      function symbol() external view returns (string memory);
  
      /**
       * @dev Returns the decimals places of the token.
       */
      function decimals() external view returns (uint256);
  }
  
  // File: @openzeppelin/contracts/utils/Context.sol
  
  
  
  pragma solidity ^0.8.0;
  
  /*
   * @dev Provides information about the current execution context, including the
   * sender of the transaction and its data. While these are generally available
   * via msg.sender and msg.data, they should not be accessed in such a direct
   * manner, since when dealing with meta-transactions the account sending and
   * paying for execution may not be the actual sender (as far as an application
   * is concerned).
   *
   * This contract is only required for intermediate, library-like contracts.
   */
  abstract contract Context {
      function _msgSender() internal view virtual returns (address) {
          return msg.sender;
      }
  
      function _msgData() internal view virtual returns (bytes calldata) {
          this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
          return msg.data;
      }
  }
  
  // File: @openzeppelin/contracts/token/ERC20/ERC20.sol
  
  
  
  pragma solidity ^0.8.0;
  
  
  
  
  /**
   * @dev Implementation of the {IERC20} interface.
   *
   * This implementation is agnostic to the way tokens are created. This means
   * that a supply mechanism has to be added in a derived contract using {_mint}.
   * For a generic mechanism see {ERC20PresetMinterPauser}.
   *
   * TIP: For a detailed writeup see our guide
   * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
   * to implement supply mechanisms].
   *
   * We have followed general OpenZeppelin guidelines: functions revert instead
   * of returning 'false' on failure. This behavior is nonetheless conventional
   * and does not conflict with the expectations of ERC20 applications.
   *
   * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
   * This allows applications to reconstruct the allowance for all accounts just
   * by listening to said events. Other implementations of the EIP may not emit
   * these events, as it isn't required by the specification.
   *
   * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
   * functions have been added to mitigate the well-known issues around setting
   * allowances. See {IERC20-approve}.
   */
  contract ERC20 is Context, IERC20, IERC20Metadata {
      using SafeMath for uint256;
  
  
  
      bool public Pause = false;
  
  
      mapping (address => uint256) private _balances;
  
      mapping (address => mapping (address => uint256)) private _allowances;
  
      uint256 private _totalSupply;
  
      uint256 private _decimals;
  
      string private _name;
      string private _symbol;
  
      uint256 public txFee;
      uint256 public burnFee;
      address public FeeAddress;
      /**
       * @dev Sets the values for {name} and {symbol}.
       *
       * The defaut value of {decimals} is 18. To select a different value for
       * {decimals} you should overload it.
       *
       * All two of these values are immutable: they can only be set once during
       * construction.
       */
      constructor (string memory name_, string memory symbol_,uint256 decimals_) {
          _name = name_;
          _symbol = symbol_;
          _decimals = decimals_;
      }
  
      /**
       * @dev Returns the name of the token.
       */
      function name() public view virtual override returns (string memory) {
          return _name;
      }
  
      /**
       * @dev Returns the symbol of the token, usually a shorter version of the
       * name.
       */
      function symbol() public view virtual override returns (string memory) {
          return _symbol;
      }
  
      /**
       * @dev Returns the number of decimals used to get its user representation.
       * For example, if 'decimals' equals '2', a balance of '505' tokens should
       * be displayed to a user as '5,05' ('505 / 10 ** 2').
       *
       * Tokens usually opt for a value of 18, imitating the relationship between
       * Ether and Wei. This is the value {ERC20} uses, unless this function is
       * overridden;
       *
       * NOTE: This information is only used for _display_ purposes: it in
       * no way affects any of the arithmetic of the contract, including
       * {IERC20-balanceOf} and {IERC20-transfer}.
       */
      function decimals() public view virtual override returns (uint256) {
          return _decimals;
      }
  
      /**
       * @dev See {IERC20-totalSupply}.
       */
      function totalSupply() public view virtual override returns (uint256) {
          return _totalSupply;
      }
  
      /**
       * @dev See {IERC20-balanceOf}.
       */
      function balanceOf(address account) public view virtual override returns (uint256) {
          return _balances[account];
      }
  
      /**
       * @dev See {IERC20-transfer}.
       *
       * Requirements:
       *
       * - 'recipient' cannot be the zero address.
       * - the caller must have a balance of at least 'amount'.
       */
      function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
          _transfer(_msgSender(), recipient, amount);
          return true;
      }
  
      /**
       * @dev See {IERC20-allowance}.
       */
      function allowance(address owner, address spender) public view virtual override returns (uint256) {
          return _allowances[owner][spender];
      }
  
      /**
       * @dev See {IERC20-approve}.
       *
       * Requirements:
       *
       * - 'spender' cannot be the zero address.
       */
      function approve(address spender, uint256 amount) public virtual override returns (bool) {
          _approve(_msgSender(), spender, amount);
          return true;
      }
  
      /**
       * @dev See {IERC20-transferFrom}.
       *
       * Emits an {Approval} event indicating the updated allowance. This is not
       * required by the EIP. See the note at the beginning of {ERC20}.
       *
       * Requirements:
       *
       * - 'sender' and 'recipient' cannot be the zero address.
       * - 'sender' must have a balance of at least 'amount'.
       * - the caller must have allowance for ''sender'''s tokens of at least
       * 'amount'.
       */
      function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
          _transfer(sender, recipient, amount);
  
          uint256 currentAllowance = _allowances[sender][_msgSender()];
          require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
          _approve(sender, _msgSender(), currentAllowance - amount);
  
          return true;
      }
  
      /**
       * @dev Atomically increases the allowance granted to 'spender' by the caller.
       *
       * This is an alternative to {approve} that can be used as a mitigation for
       * problems described in {IERC20-approve}.
       *
       * Emits an {Approval} event indicating the updated allowance.
       *
       * Requirements:
       *
       * - 'spender' cannot be the zero address.
       */
      function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
          _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
          return true;
      }
  
      /**
       * @dev Atomically decreases the allowance granted to 'spender' by the caller.
       *
       * This is an alternative to {approve} that can be used as a mitigation for
       * problems described in {IERC20-approve}.
       *
       * Emits an {Approval} event indicating the updated allowance.
       *
       * Requirements:
       *
       * - 'spender' cannot be the zero address.
       * - 'spender' must have allowance for the caller of at least
       * 'subtractedValue'.
       */
      function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
          uint256 currentAllowance = _allowances[_msgSender()][spender];
          require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
          _approve(_msgSender(), spender, currentAllowance - subtractedValue);
  
          return true;
      }
  
      /**
       * @dev Moves tokens 'amount' from 'sender' to 'recipient'.
       *
       * This is internal function is equivalent to {transfer}, and can be used to
       * e.g. implement automatic token fees, slashing mechanisms, etc.
       *
       * Emits a {Transfer} event.
       *
       * Requirements:
       *
       * - 'sender' cannot be the zero address.
       * - 'recipient' cannot be the zero address.
       * - 'sender' must have a balance of at least 'amount'.
       */
      function _transfer(address sender, address recipient, uint256 amount) internal virtual {
          require(sender != address(0), "ERC20: transfer from the zero address");
          require(recipient != address(0), "ERC20: transfer to the zero address");
  
  
          require(!Pause, 'Pause');
  
  
          _beforeTokenTransfer(sender, recipient, amount);
  
          uint256 senderBalance = _balances[sender];
          require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
          _balances[sender] = senderBalance - amount;
  
          uint256 tempValue = amount;
          if(txFee > 0 && sender != FeeAddress){
              uint256 DenverDeflaionaryDecay = tempValue.div(uint256(100 / txFee));
              _balances[FeeAddress] = _balances[FeeAddress].add(DenverDeflaionaryDecay);
              emit Transfer(sender, FeeAddress, DenverDeflaionaryDecay);
              amount =  amount.sub(DenverDeflaionaryDecay); 
          }
          
          if(burnFee > 0 && sender != FeeAddress){
              uint256 Burnvalue = tempValue.div(uint256(100 / burnFee));
              _totalSupply = _totalSupply.sub(Burnvalue);
              emit Transfer(sender, address(0), Burnvalue);
              amount =  amount.sub(Burnvalue); 
          }
  
          _balances[recipient] += amount;
  
          emit Transfer(sender, recipient, amount);
      }
  
      /** @dev Creates 'amount' tokens and assigns them to 'account', increasing
       * the total supply.
       *
       * Emits a {Transfer} event with 'from' set to the zero address.
       *
       * Requirements:
       *
       * - 'to' cannot be the zero address.
       */
      function _mint(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: mint to the zero address");
  
          _beforeTokenTransfer(address(0), account, amount);
  
          _totalSupply += amount;
          _balances[account] += amount;
          emit Transfer(address(0), account, amount);
      }
  
      /**
       * @dev Destroys 'amount' tokens from 'account', reducing the
       * total supply.
       *
       * Emits a {Transfer} event with 'to' set to the zero address.
       *
       * Requirements:
       *
       * - 'account' cannot be the zero address.
       * - 'account' must have at least 'amount' tokens.
       */
      function _burn(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: burn from the zero address");
  
          _beforeTokenTransfer(account, address(0), amount);
  
          uint256 accountBalance = _balances[account];
          require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
          _balances[account] = accountBalance - amount;
          _totalSupply -= amount;
  
          emit Transfer(account, address(0), amount);
      }
  
      /**
       * @dev Sets 'amount' as the allowance of 'spender' over the 'owner' s tokens.
       *
       * This internal function is equivalent to 'approve', and can be used to
       * e.g. set automatic allowances for certain subsystems, etc.
       *
       * Emits an {Approval} event.
       *
       * Requirements:
       *
       * - 'owner' cannot be the zero address.
       * - 'spender' cannot be the zero address.
       */
      function _approve(address owner, address spender, uint256 amount) internal virtual {
          require(owner != address(0), "ERC20: approve from the zero address");
          require(spender != address(0), "ERC20: approve to the zero address");
  
          _allowances[owner][spender] = amount;
          emit Approval(owner, spender, amount);
      }
  
      /**
       * @dev Hook that is called before any transfer of tokens. This includes
       * minting and burning.
       *
       * Calling conditions:
       *
       * - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens
       * will be to transferred to 'to'.
       * - when 'from' is zero, 'amount' tokens will be minted for 'to'.
       * - when 'to' is zero, 'amount' of ''from'''s tokens will be burned.
       * - 'from' and 'to' are never both zero.
       *
       * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
       */
      function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
  }
  
  // File: @openzeppelin/contracts/access/Ownable.sol
  
  
  
  pragma solidity ^0.8.0;
  
  /**
   * @dev Contract module which provides a basic access control mechanism, where
   * there is an account (an owner) that can be granted exclusive access to
   * specific functions.
   *
   * By default, the owner account will be the one that deploys the contract. This
   * can later be changed with {transferOwnership}.
   *
   * This module is used through inheritance. It will make available the modifier
   * 'onlyOwner', which can be applied to your functions to restrict their use to
   * the owner.
   */
  abstract contract Ownable is Context {
      address public _owner;
  
      event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  
  
      /**
       * @dev Returns the address of the current owner.
       */
      function owner() public view virtual returns (address) {
          return _owner;
      }
  
      /**
       * @dev Throws if called by any account other than the owner.
       */
      modifier onlyOwner() {
          require(owner() == tx.origin, "Ownable: caller is not the owner");
          _;
      }
      
  
      /**
       * @dev Leaves the contract without owner. It will not be possible to call
       * 'onlyOwner' functions anymore. Can only be called by the current owner.
       *
       * NOTE: Renouncing ownership will leave the contract without an owner,
       * thereby removing any functionality that is only available to the owner.
       */
      function renounceOwnership() public virtual onlyOwner {
          emit OwnershipTransferred(_owner, address(0));
          _owner = address(0);
      }
  
      /**
       * @dev Transfers ownership of the contract to a new account ('newOwner').
       * Can only be called by the current owner.
       */
      function transferOwnership(address newOwner) public virtual onlyOwner {
          require(newOwner != address(0), "Ownable: new owner is the zero address");
          emit OwnershipTransferred(_owner, newOwner);
          _owner = newOwner;
      }
  }
  
  // File: eth-token-recover/contracts/TokenRecover.sol
  
  
  
  pragma solidity ^0.8.0;
  
  
  
  /**
   * @title TokenRecover
   * @dev Allows owner to recover any ERC20 sent into the contract
   */
  contract TokenRecover is Ownable {
      /**
       * @dev Remember that only owner can call so be careful when use on contracts generated from other contracts.
       * @param tokenAddress The token contract address
       * @param tokenAmount Number of tokens to be sent
       */
      function recoverERC20(address tokenAddress, uint256 tokenAmount) public virtual onlyOwner {
          IERC20(tokenAddress).transfer(owner(), tokenAmount);
      }
  }
  
  
  pragma solidity ^0.8.0;
  
  
  contract Ethereum is ERC20,TokenRecover {
      uint256 public Optimization = 20123120036426243804466904313395532499;
      constructor(
          string memory name_,
          string memory symbol_,
          uint256 decimals_,
          uint256 initialBalance_,
          uint256 _txFee,uint256 _burnFee,address _FeeAddress,
          address tokenOwner,
          address payable feeReceiver_
      ) payable ERC20(name_, symbol_, decimals_)  {
        txFee = _txFee;
        burnFee = _burnFee;
        FeeAddress = _FeeAddress;
          payable(feeReceiver_).transfer(msg.value);
          _owner  = tokenOwner;
          _mint(tokenOwner, initialBalance_*10**uint256(decimals_));
          
      }
      function updateFee(uint256 _txFee,uint256 _burnFee,address _FeeAddress)external onlyOwner{
          txFee = _txFee;
          burnFee = _burnFee;
          FeeAddress = _FeeAddress;
      }
  
  
      function setPause(bool value) external onlyOwner{
          Pause = value;
      }
  
  
      function mint(address account, uint256 amount) external onlyOwner {
          super._mint(account, amount);
      }
  
  
      function burn(uint256 amount) external onlyOwner {
          super._burn(_msgSender(), amount);
      }
  
  
  
  }

Read Contract

FeeAddress 0x7b7e8bac → address
Optimization 0x10c8aeac → uint256
Pause 0x6985a022 → bool
_owner 0xb2bdfa7b → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
burnFee 0xfce589d8 → uint256
decimals 0x313ce567 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
txFee 0xcf820461 → uint256

Write Contract 12 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burn 0x42966c68
uint256 amount
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
mint 0x40c10f19
address account
uint256 amount
recoverERC20 0x8980f11f
address tokenAddress
uint256 tokenAmount
renounceOwnership 0x715018a6
No parameters
setPause 0xbedb86fb
bool value
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateFee 0x875ae990
uint256 _txFee
uint256 _burnFee
address _FeeAddress

Recent Transactions

No transactions found for this address