OP Sepolia Testnet

Token

Sacra token (SACRA)
ERC-20 Source Code

Overview

Max Total Supply

9,995,516.1082943653667772 SACRA

Holders

755

Market

Price

-

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
196.013420355946425697 SACRA
0x1b40225c7aad2d0e692c0442403ccda11409fcf6
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
GameToken

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 150 runs

Other Settings:
istanbul EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: BUSL-1.1
/**
            ▒▓▒  ▒▒▒▒▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓███▓▓▒     ▒▒▒▒▓▓▓▒▓▓▓▓▓▓▓██▓
             ▒██▒▓▓▓▓█▓██████████████████▓  ▒▒▒▓███████████████▒
              ▒██▒▓█████████████████████▒ ▒▓██████████▓███████
               ▒███████████▓▒                   ▒███▓▓██████▓
                 █████████▒                     ▒▓▒▓███████▒
                  ███████▓      ▒▒▒▒▒▓▓█▓▒     ▓█▓████████
                   ▒▒▒▒▒   ▒▒▒▒▓▓▓█████▒      ▓█████████▓
                         ▒▓▓▓▒▓██████▓      ▒▓▓████████▒
                       ▒██▓▓▓███████▒      ▒▒▓███▓████
                        ▒███▓█████▒       ▒▒█████▓██▓
                          ██████▓   ▒▒▒▓██▓██▓█████▒
                           ▒▒▓▓▒   ▒██▓▒▓▓████████
                                  ▓█████▓███████▓
                                 ██▓▓██████████▒
                                ▒█████████████
                                 ███████████▓
      ▒▓▓▓▓▓▓▒▓                  ▒█████████▒                      ▒▓▓
    ▒▓█▒   ▒▒█▒▒                   ▓██████                       ▒▒▓▓▒
   ▒▒█▒       ▓▒                    ▒████                       ▒▓█▓█▓▒
   ▓▒██▓▒                             ██                       ▒▓█▓▓▓██▒
    ▓█▓▓▓▓▓█▓▓▓▒        ▒▒▒         ▒▒▒▓▓▓▓▒▓▒▒▓▒▓▓▓▓▓▓▓▓▒    ▒▓█▒ ▒▓▒▓█▓
     ▒▓█▓▓▓▓▓▓▓▓▓▓▒    ▒▒▒▓▒     ▒▒▒▓▓     ▓▓  ▓▓█▓   ▒▒▓▓   ▒▒█▒   ▒▓▒▓█▓
            ▒▒▓▓▓▒▓▒  ▒▓▓▓▒█▒   ▒▒▒█▒          ▒▒█▓▒▒▒▓▓▓▒   ▓██▓▓▓▓▓▓▓███▓
 ▒            ▒▓▓█▓  ▒▓▓▓▓█▓█▓  ▒█▓▓▒          ▓▓█▓▒▓█▓▒▒   ▓█▓        ▓███▓
▓▓▒         ▒▒▓▓█▓▒▒▓█▒   ▒▓██▓  ▓██▓▒     ▒█▓ ▓▓██   ▒▓▓▓▒▒▓█▓        ▒▓████▒
 ██▓▓▒▒▒▒▓▓███▓▒ ▒▓▓▓▓▒▒ ▒▓▓▓▓▓▓▓▒▒▒▓█▓▓▓▓█▓▓▒▒▓▓▓▓▓▒    ▒▓████▓▒     ▓▓███████▓▓▒
*/
pragma solidity 0.8.23;

import "../interfaces/IGameToken.sol";
import "../relay/ERC2771Context.sol";

contract GameToken is IGameToken, ERC2771Context {

  // ---- CONSTANTS ----

  string public constant symbol = "SACRA";
  string public constant name = "Sacra token";
  uint8 public constant decimals = 18;

  // ---- VARIABLES ----

  uint public override totalSupply = 0;
  bool public paused;

  mapping(address => uint) public override balanceOf;
  mapping(address => mapping(address => uint)) public override allowance;

  address public override minter;

  // ---- EVENTS ----

  event ChangePauseStatus(bool value);
  event MinterChanged(address value);

  // ---- CONSTRUCTOR ----

  constructor() {
    minter = _msgSender();
    _mint(_msgSender(), 0);
  }

  // ---- MAIN LOGIC ----

  function approve(address _spender, uint _value) external override returns (bool) {
    require(_spender != address(0), "Approve to the zero address");
    allowance[_msgSender()][_spender] = _value;
    emit Approval(_msgSender(), _spender, _value);
    return true;
  }

  function _mint(address _to, uint _amount) internal returns (bool) {
    require(_to != address(0), "Mint to the zero address");
    require(!paused, "Paused");
    balanceOf[_to] += _amount;
    totalSupply += _amount;
    emit Transfer(address(0x0), _to, _amount);
    return true;
  }

  function _transfer(address _from, address _to, uint _value) internal returns (bool) {
    require(_to != address(0), "Transfer to the zero address");
    require(!paused, "Paused");

    uint fromBalance = balanceOf[_from];
    require(fromBalance >= _value, "Transfer amount exceeds balance");
    unchecked {
      balanceOf[_from] = fromBalance - _value;
    }

    balanceOf[_to] += _value;
    emit Transfer(_from, _to, _value);
    return true;
  }

  function transfer(address _to, uint _value) external override returns (bool) {
    return _transfer(_msgSender(), _to, _value);
  }

  function transferFrom(address _from, address _to, uint _value) external override returns (bool) {
    address spender = _msgSender();
    uint spenderAllowance = allowance[_from][spender];
    if (spenderAllowance != type(uint).max) {
      require(spenderAllowance >= _value, "Insufficient allowance");
      unchecked {
        uint newAllowance = spenderAllowance - _value;
        allowance[_from][spender] = newAllowance;
        emit Approval(_from, spender, newAllowance);
      }
    }
    return _transfer(_from, _to, _value);
  }

  function burn(uint amount) external override returns (bool) {
    address from = _msgSender();
    uint accountBalance = balanceOf[from];
    require(accountBalance >= amount, "Burn amount exceeds balance");
    unchecked {
      balanceOf[from] = accountBalance - amount;
    // Overflow not possible: amount <= accountBalance <= totalSupply.
      totalSupply -= amount;
    }

    emit Transfer(from, address(0), amount);
    return true;
  }

  // ---- MINTER ACTIONS ----

  function mint(address account, uint amount) external override returns (bool) {
    require(msg.sender == minter, "Not minter");
    _mint(account, amount);
    return true;
  }

  // No checks as its meant to be once off to set minting rights to Minter
  function setMinter(address _minter) external override {
    require(msg.sender == minter, "Not minter");
    minter = _minter;
    emit MinterChanged(_minter);
  }

  function pause(bool value) external override {
    require(msg.sender == minter, "Not minter");
    paused = value;
    emit ChangePauseStatus(value);
  }
}

// SPDX-License-Identifier: BUSL-1.1

pragma solidity 0.8.23;

import "../openzeppelin/IERC20.sol";

interface IGameToken is IERC20 {

  function minter() external view returns (address);

  function mint(address account, uint amount) external returns (bool);

  function burn(uint amount) external returns (bool);

  function setMinter(address _minter) external;

  function pause(bool value) external;

}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

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

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

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

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

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

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (metatx/ERC2771Context.sol)

pragma solidity ^0.8.1;

/**
 * @dev Context variant with ERC2771 support.
 */
// based on https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/metatx/ERC2771Context.sol
abstract contract ERC2771Context {

  // for whitelist new relayers need to add new constants and update proxies
//  address private constant GELATO_RELAY = 0xaBcC9b596420A9E9172FD5938620E265a0f9Df92;
//  address private constant GELATO_RELAY_ERC_2771 = 0xb539068872230f20456CF38EC52EF2f91AF4AE49;
//  address private constant GELATO_RELAY_CONCURRENT_ERC_2771 = 0x8598806401A63Ddf52473F1B3C55bC9E33e2d73b;
//  address private constant GELATO_RELAY_1_BALANCE = 0x75bA5Af8EFFDCFca32E1e288806d54277D1fde99;
  address private constant GELATO_RELAY_1_BALANCE_ERC_2771 = 0xd8253782c45a12053594b9deB72d8e8aB2Fca54c;
//  address private constant GELATO_RELAY_1_BALANCE_CONCURRENT_ERC_2771 = 0xc65d82ECE367EF06bf2AB791B3f3CF037Dc0e816;

  function isTrustedForwarder(address forwarder) public view virtual returns (bool){
    return forwarder == GELATO_RELAY_1_BALANCE_ERC_2771;
  }

  function _msgSender() internal view virtual returns (address sender) {
    if (isTrustedForwarder(msg.sender)) {
      // The assembly code is more direct than the Solidity version using `abi.decode`.
      /// @solidity memory-safe-assembly
      assembly {
        sender := shr(96, calldataload(sub(calldatasize(), 20)))
      }
      return sender;
    } else {
      return msg.sender;
    }
  }

  function _msgData() internal view virtual returns (bytes calldata) {
    if (isTrustedForwarder(msg.sender)) {
      return msg.data[: msg.data.length - 20];
    } else {
      return msg.data;
    }
  }

  /// @notice Return true if given address is not a smart contract but a wallet address.
  /// @dev It is not 100% guarantee after EIP-3074 implementation, use it as an additional check.
  /// @return true if the address is a wallet.
  function _isNotSmartContract() internal view returns (bool) {
    return isTrustedForwarder(msg.sender) || msg.sender == tx.origin;
  }
}

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

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":false,"internalType":"bool","name":"value","type":"bool"}],"name":"ChangePauseStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"value","type":"address"}],"name":"MinterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","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":"forwarder","type":"address"}],"name":"isTrustedForwarder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_minter","type":"address"}],"name":"setMinter","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":"_value","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":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526000805534801561001457600080fd5b5061001d610055565b600480546001600160a01b0319166001600160a01b039290921691909117905561004f610048610055565b6000610084565b506101ce565b600073d8253782c45a12053594b9deb72d8e8ab2fca54c330361007f575060131936013560601c90565b503390565b60006001600160a01b0383166100e15760405162461bcd60e51b815260206004820152601860248201527f4d696e7420746f20746865207a65726f2061646472657373000000000000000060448201526064015b60405180910390fd5b60015460ff161561011d5760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b60448201526064016100d8565b6001600160a01b038316600090815260026020526040812080548492906101459084906101ad565b925050819055508160008082825461015d91906101ad565b90915550506040518281526001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35060015b92915050565b808201808211156101a757634e487b7160e01b600052601160045260246000fd5b610ba0806101dd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806342966c681161009757806395d89b411161006657806395d89b411461026f578063a9059cbb14610293578063dd62ed3e146102a6578063fca3b5aa146102d157600080fd5b806342966c68146101ff578063572b6c05146102125780635c975abb1461024257806370a082311461024f57600080fd5b806318160ddd116100d357806318160ddd146101a857806323b872dd146101bf578063313ce567146101d257806340c10f19146101ec57600080fd5b806302329a291461010557806306fdde031461011a578063075461721461015a578063095ea7b314610185575b600080fd5b6101186101133660046109cb565b6102e4565b005b6101446040518060400160405280600b81526020016a29b0b1b930903a37b5b2b760a91b81525081565b60405161015191906109ed565b60405180910390f35b60045461016d906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b610198610193366004610a58565b61035f565b6040519015158152602001610151565b6101b160005481565b604051908152602001610151565b6101986101cd366004610a82565b610448565b6101da601281565b60405160ff9091168152602001610151565b6101986101fa366004610a58565b610549565b61019861020d366004610abe565b61058a565b610198610220366004610ad7565b6001600160a01b031673d8253782c45a12053594b9deb72d8e8ab2fca54c1490565b6001546101989060ff1681565b6101b161025d366004610ad7565b60026020526000908152604090205481565b61014460405180604001604052806005815260200164534143524160d81b81525081565b6101986102a1366004610a58565b610664565b6101b16102b4366004610af2565b600360209081526000928352604080842090915290825290205481565b6101186102df366004610ad7565b61067f565b6004546001600160a01b031633146103175760405162461bcd60e51b815260040161030e90610b25565b60405180910390fd5b6001805460ff19168215159081179091556040519081527f58bacb7f0dd4d609de27cc5c3f458b9a9bdcf5d148bca9f186b33ad75d2c23b4906020015b60405180910390a150565b60006001600160a01b0383166103b75760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161030e565b81600360006103c46106f7565b6001600160a01b03908116825260208083019390935260409182016000908120918816808252919093529120919091556103fc6106f7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161043691815260200190565b60405180910390a35060015b92915050565b6000806104536106f7565b6001600160a01b03808716600090815260036020908152604080832093851683529290522054909150600019811461053457838110156104ce5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b604482015260640161030e565b6001600160a01b03868116600081815260036020908152604080832094871680845294825291829020888603908190559151828152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b61053f868686610726565b9695505050505050565b6004546000906001600160a01b031633146105765760405162461bcd60e51b815260040161030e90610b25565b61058083836108b9565b5060019392505050565b6000806105956106f7565b6001600160a01b038116600090815260026020526040902054909150838110156106015760405162461bcd60e51b815260206004820152601b60248201527f4275726e20616d6f756e7420657863656564732062616c616e63650000000000604482015260640161030e565b6001600160a01b0382166000818152600260209081526040808320888603905582548890038355518781529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35060019392505050565b60006106786106716106f7565b8484610726565b9392505050565b6004546001600160a01b031633146106a95760405162461bcd60e51b815260040161030e90610b25565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fb6b8f1859c5c352e5ffad07d0f77e384ac725512c015bd3a3ffc885831c8a42590602001610354565b600073d8253782c45a12053594b9deb72d8e8ab2fca54c3303610721575060131936013560601c90565b503390565b60006001600160a01b03831661077e5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161030e565b60015460ff16156107ba5760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015260640161030e565b6001600160a01b038416600090815260026020526040902054828110156108235760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161030e565b6001600160a01b0380861660009081526002602052604080822086850390559186168152908120805485929061085a908490610b49565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516108a691815260200190565b60405180910390a3506001949350505050565b60006001600160a01b03831661090c5760405162461bcd60e51b81526020600482015260186024820152774d696e7420746f20746865207a65726f206164647265737360401b604482015260640161030e565b60015460ff16156109485760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015260640161030e565b6001600160a01b03831660009081526002602052604081208054849290610970908490610b49565b92505081905550816000808282546109889190610b49565b90915550506040518281526001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610436565b6000602082840312156109dd57600080fd5b8135801515811461067857600080fd5b60006020808352835180602085015260005b81811015610a1b578581018301518582016040015282016109ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a5357600080fd5b919050565b60008060408385031215610a6b57600080fd5b610a7483610a3c565b946020939093013593505050565b600080600060608486031215610a9757600080fd5b610aa084610a3c565b9250610aae60208501610a3c565b9150604084013590509250925092565b600060208284031215610ad057600080fd5b5035919050565b600060208284031215610ae957600080fd5b61067882610a3c565b60008060408385031215610b0557600080fd5b610b0e83610a3c565b9150610b1c60208401610a3c565b90509250929050565b6020808252600a90820152692737ba1036b4b73a32b960b11b604082015260600190565b8082018082111561044257634e487b7160e01b600052601160045260246000fdfea26469706673582212209ef98bb4252889af9fd8be1d231b0476bd57772edfb6daef71ca3c2d5710b32b64736f6c63430008170033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c806342966c681161009757806395d89b411161006657806395d89b411461026f578063a9059cbb14610293578063dd62ed3e146102a6578063fca3b5aa146102d157600080fd5b806342966c68146101ff578063572b6c05146102125780635c975abb1461024257806370a082311461024f57600080fd5b806318160ddd116100d357806318160ddd146101a857806323b872dd146101bf578063313ce567146101d257806340c10f19146101ec57600080fd5b806302329a291461010557806306fdde031461011a578063075461721461015a578063095ea7b314610185575b600080fd5b6101186101133660046109cb565b6102e4565b005b6101446040518060400160405280600b81526020016a29b0b1b930903a37b5b2b760a91b81525081565b60405161015191906109ed565b60405180910390f35b60045461016d906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b610198610193366004610a58565b61035f565b6040519015158152602001610151565b6101b160005481565b604051908152602001610151565b6101986101cd366004610a82565b610448565b6101da601281565b60405160ff9091168152602001610151565b6101986101fa366004610a58565b610549565b61019861020d366004610abe565b61058a565b610198610220366004610ad7565b6001600160a01b031673d8253782c45a12053594b9deb72d8e8ab2fca54c1490565b6001546101989060ff1681565b6101b161025d366004610ad7565b60026020526000908152604090205481565b61014460405180604001604052806005815260200164534143524160d81b81525081565b6101986102a1366004610a58565b610664565b6101b16102b4366004610af2565b600360209081526000928352604080842090915290825290205481565b6101186102df366004610ad7565b61067f565b6004546001600160a01b031633146103175760405162461bcd60e51b815260040161030e90610b25565b60405180910390fd5b6001805460ff19168215159081179091556040519081527f58bacb7f0dd4d609de27cc5c3f458b9a9bdcf5d148bca9f186b33ad75d2c23b4906020015b60405180910390a150565b60006001600160a01b0383166103b75760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015260640161030e565b81600360006103c46106f7565b6001600160a01b03908116825260208083019390935260409182016000908120918816808252919093529120919091556103fc6106f7565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161043691815260200190565b60405180910390a35060015b92915050565b6000806104536106f7565b6001600160a01b03808716600090815260036020908152604080832093851683529290522054909150600019811461053457838110156104ce5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b604482015260640161030e565b6001600160a01b03868116600081815260036020908152604080832094871680845294825291829020888603908190559151828152919392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b61053f868686610726565b9695505050505050565b6004546000906001600160a01b031633146105765760405162461bcd60e51b815260040161030e90610b25565b61058083836108b9565b5060019392505050565b6000806105956106f7565b6001600160a01b038116600090815260026020526040902054909150838110156106015760405162461bcd60e51b815260206004820152601b60248201527f4275726e20616d6f756e7420657863656564732062616c616e63650000000000604482015260640161030e565b6001600160a01b0382166000818152600260209081526040808320888603905582548890038355518781529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35060019392505050565b60006106786106716106f7565b8484610726565b9392505050565b6004546001600160a01b031633146106a95760405162461bcd60e51b815260040161030e90610b25565b600480546001600160a01b0319166001600160a01b0383169081179091556040519081527fb6b8f1859c5c352e5ffad07d0f77e384ac725512c015bd3a3ffc885831c8a42590602001610354565b600073d8253782c45a12053594b9deb72d8e8ab2fca54c3303610721575060131936013560601c90565b503390565b60006001600160a01b03831661077e5760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f206164647265737300000000604482015260640161030e565b60015460ff16156107ba5760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015260640161030e565b6001600160a01b038416600090815260026020526040902054828110156108235760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e636500604482015260640161030e565b6001600160a01b0380861660009081526002602052604080822086850390559186168152908120805485929061085a908490610b49565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516108a691815260200190565b60405180910390a3506001949350505050565b60006001600160a01b03831661090c5760405162461bcd60e51b81526020600482015260186024820152774d696e7420746f20746865207a65726f206164647265737360401b604482015260640161030e565b60015460ff16156109485760405162461bcd60e51b815260206004820152600660248201526514185d5cd95960d21b604482015260640161030e565b6001600160a01b03831660009081526002602052604081208054849290610970908490610b49565b92505081905550816000808282546109889190610b49565b90915550506040518281526001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610436565b6000602082840312156109dd57600080fd5b8135801515811461067857600080fd5b60006020808352835180602085015260005b81811015610a1b578581018301518582016040015282016109ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a5357600080fd5b919050565b60008060408385031215610a6b57600080fd5b610a7483610a3c565b946020939093013593505050565b600080600060608486031215610a9757600080fd5b610aa084610a3c565b9250610aae60208501610a3c565b9150604084013590509250925092565b600060208284031215610ad057600080fd5b5035919050565b600060208284031215610ae957600080fd5b61067882610a3c565b60008060408385031215610b0557600080fd5b610b0e83610a3c565b9150610b1c60208401610a3c565b90509250929050565b6020808252600a90820152692737ba1036b4b73a32b960b11b604082015260600190565b8082018082111561044257634e487b7160e01b600052601160045260246000fdfea26469706673582212209ef98bb4252889af9fd8be1d231b0476bd57772edfb6daef71ca3c2d5710b32b64736f6c63430008170033

[ 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.