POL Price: $0.61291 (+3.38%)
 

Overview

Max Total Supply

68,230,000,000 SHARP

Holders

6,944 ( 0.058%)

Total Transfers

-

Market

Price

$0.00 @ 0.000000 POL

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

OVERVIEW

SharpToken is a cryptocurrency of the Sharp Platform, a SocialFi platform for communities and brands. The token is the fuel to run the sharp platform services and used as gas.

Contract Source Code Verified (Exact Match)

Contract Name:
MainTokenContract

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 5 : MainTokenContract.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import {IERC20} from "./IERC20.sol";
import {Ownable} from "./Ownable.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

/**
 * @author  SHARP INNOVATION FOUNDATION
 * @title   Main Token Contract
 * @dev     This contract defines the token and its activities
 * @dev     This contract contains all the function present in the interface and is following the token standard
 */

contract MainTokenContract is IERC20, Ownable, ReentrancyGuard {
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _totalSupply;

    address private feesAccount;
    uint256 private maxTransferLimit;

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

    event Burn(address indexed burnerAddress, uint256 indexed amount);
    event UpdateFeesAccount(address indexed newFeesAddress);
    event UpdateMaxTransferLimit(uint256 indexed newLimit);

    constructor(string memory tokenName, string memory tokenSymbol) {
        _name = tokenName;
        _symbol = tokenSymbol;
        _decimals = 18;
    }

    /**
     * @dev  This function returns the name of the token
     * @return  string
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /**
     * @dev     This function returns the symbol of the token
     * @return  string
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

    /**
     * @dev  This function returns the decimal places the token holds
     * @return  uint8
     */
    function decimals() public view virtual returns (uint8) {
        return _decimals;
    }

    /**
     * @dev  This function returns the total supply of the token
     * @return  uint256
     */
    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev This function returns the max transfer limit per transaction for all token holders
     */
    function getMaxTransferLimit() public view returns (uint256) {
        return maxTransferLimit;
    }

    /**
     * @dev  This function is used to get the gas fees account, callable by owner only
     */
    function getFeesAccount() public view onlyOwner returns (address) {
        return feesAccount;
    }

    /**
     * @dev  This function returns the balance of a particular accunt address
     * @param   account  .address type parameter, takes in the address of the account holder
     * @return  uint256  .the token amount that the account holds
     */
    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev  This function is used to set the gas fees account, callable by owner only
     * @param   addr  .address type parameter, takes in the address of the gas fees account
     */

    function setFeesAccount(address addr) public onlyOwner {
        require(addr != address(0), "Invalid address");
        feesAccount = addr;
        emit UpdateFeesAccount(addr);
    }

    /**
     * @dev  This function is used to set the max transfer limit per transaction for all token holders, callable by owner only
     * @param   limit  .uint type variable denoting the transfer limit
     */
    function setMaxTransferLimit(uint256 limit) public onlyOwner {
        maxTransferLimit = limit;
        emit UpdateMaxTransferLimit(limit);
    }

    /**
     * @notice     This function is used to transfer tokens from the one account address to another
     * @dev     The token transfer occurs from the function caller's address to the receiver address provided in the function parameter
     * @param   to  .address type paremeter, takes the address of the token receiver
     * @param   amount  .uint256 type parameter, takes the amount of tokens to be transferred
     * @return  bool  .suceessful transfer returns true
     */
    function transfer(
        address to,
        uint256 amount
    ) public virtual nonReentrant returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @notice     This function is used to transfer tokens from the one account address, and fees to another account(s), as a batch transaction
     * @dev     The token transfer occurs from the function caller's address to the receiver address provided in the function parameter
     * @param   to  .address type paremeter, takes the address of the token receiver
     * @param   amount  .uint256 type parameter, takes the amount of tokens to be transferred
     * @param   fees  .uint256 type parameter, fees amount to be transferred
     * @return  bool  .suceessful transfer returns true
     */
    function batchTransfer(
        address to,
        uint256 amount,
        uint256 fees
    ) public virtual nonReentrant returns (bool) {
        require(amount != 0, "Transfer amount is 0");
        if (_msgSender() != owner() && maxTransferLimit != 0) {
            require(
                amount <= maxTransferLimit,
                "Amount is greater than transfer limit"
            );
        }
        address owner = _msgSender();
        _transfer(owner, to, amount);
        _transfer(owner, feesAccount, fees);
        return true;
    }

    /**
     * @dev  This function returns the allowance amount of tokens which is set for an owner and spender
     * @param   owner  .address type parameter, takes the address of the actual address of the owner of tokens
     * @param   spender  .address type parameter, takes the address that is approved by the owner to spend tokens
     * @return  uint256  .amount of tokens approved by the owner for a particular spender
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev  This function approves an token allowance amount for an address
     * @param   spender  .address type parameter, takes the address of the spender allowance account
     * @param   amount   .uint256 type parameter, takes the amount of tokens that is set to be allowed as allowance
     * @return  bool     .returns true if the approval is successful
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev     This function is used to transfer allowance tokens from the spender address to the receiver address
     * @param   from  .address type parameter, takes the address of the actual token holder the address that allowed the allowance
     * @param   to  .address type parameter, takes the address of the receiver of the tokens
     * @param   amount  .uint256 type parameter, takes the amount of tokens to be transferred
     * @return  bool   .returns true if the transfer is successful
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual nonReentrant returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev     This function is used to increase the allowance amount for a spender
     * @param   spender  .address type parameter, takes the address of the spender who is allowed by the token owner
     * @param   addedAmount  .uint256 type parameter, takes in the increased amount
     * @return  bool .returns true if the increase is successful
     */
    function increaseAllowance(
        address spender,
        uint256 addedAmount
    ) external virtual nonReentrant returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedAmount);
        return true;
    }

    /**
     * @dev     This function is used to decrease the allowance amount of a spender
     * @param   spender  .address type parameter, takes the address of the spender who is allowed by the token owner
     * @param   requestedDecrease  .uint256 type parameter, takes in the amount which is to be subtracted fron the current amount
     * @return  bool  .returns true if the decrease is successful
     */
    function decreaseAllowance(
        address spender,
        uint256 requestedDecrease
    ) external virtual nonReentrant returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance < requestedDecrease) {
            revert("current allowance is less than requested decrease");
        }
        unchecked {
            _approve(owner, spender, currentAllowance - requestedDecrease);
        }

        return true;
    }

    /**
     * @notice     This function is used to remove tokens from the circulation supply
     * @dev     This function can only be called by the owner of the contract
     * @dev     The amount to be burned cannot be greater than the total supply of the token
     * @param   amount  .uint256 type parameter, takes in the amount of tokens to be burned
     * @return  bool    .returns true if the burn is successful
     */
    function burn(uint256 amount) public virtual onlyOwner returns (bool) {
        require(amount <= _totalSupply, "Burn amount greater than token count");
        _burn(_msgSender(), amount);
        return true;
    }

    /**
     * @notice  This function is used to mint new tokens
     * @dev     This function can only be called by the owner of the contract
     * @dev     The minting amount cannot be 0
     * @dev     The sum of the amount to be minted and the current circulation supply cannot exceed total supply (i.e 100 Billion)
     * @param   amount  .uint256 type parameter, takes in the amount to be minted
     * @return  bool   .returns true if the mint is successful
     */
    function mint(uint256 amount) public virtual onlyOwner returns (bool) {
        if (_msgSender() == address(0)) {
            revert("Invalid address");
        }
        uint256 minting_amount = amount * (10 ** 18);
        if (minting_amount == 0) {
            revert("Cannot mint 0 tokens");
        }
        require(
            _totalSupply + minting_amount <= 100000000000 * 10 ** 18,
            "Mint amount exceeds the maximum supply"
        );
        _mint(_msgSender(), minting_amount);
        return true;
    }

    /**
     * @notice  This function is used to start the ownership transfer process.
     * @dev     This function can only be called by the owner of the contract
     * @param   addr  .address type parameter, takes in the address of the new contract owner
     * @return  bool  .returns true if the start transfer is successful
     */
    function beginTransferOwnership(
        address addr
    ) public virtual onlyOwner returns (bool) {
        require(addr != address(0), "Invalid address");
        startTransferOwnership(addr);
        return true;
    }

    /**
     * @notice  This function is used to accept the transfer ownership of the contract.
     * @dev     This function can only be called by the Authorized new owner.
     * @dev     After the ownership is transferred, all the owners tokens are transferred to the new owner as well
     * @return  bool .returns true if the ownership transfer is successful
     */
    function allowOwnership() public virtual returns (bool) {
        address owner = owner();
        if (acceptOwnership()) {
            _transfer(owner, _msgSender(), _balances[owner]);
        }
        return true;
    }

    /**
     * @notice  This is an internal function which is called during token transfer.
     * @dev     This function validates the address provided to itself.
     * @param   from  .address type parameter, takes in the address of the token sender
     * @param   to  .address type parameter, takes in the address of the token receiver
     * @param   amount  .uint256 type parameter, takes in the amount to be send
     */
    function _transfer(address from, address to, uint256 amount) internal {
        if (from == address(0)) {
            revert("Invalid Sender");
        }
        if (to == address(0)) {
            revert("Invalid Receiver");
        }
        _update(from, to, amount);
    }

    /**
     * @notice  This is an internal function which is used to update the token balances of the accounts among which the transfer was initiated.
     * @dev     This function sends the tokens
     * @param   from  .address type parameter, takes in the address of the account from which the tokens are to be subtracted.
     * @param   to  .address type parameter, takes in the address of the account to which the tokens are to be added.
     * @param   amount  .uint256 type parameter, takes the amount of tokens to be transferred
     */
    function _update(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        // checking if sender's address is 0x000000000000....
        if (from == address(0)) {
            _totalSupply += amount;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < amount) {
                revert("Insufficient balance");
            }
            if (amount == 0) {
                revert("Cannot send 0 tokens");
            }
            unchecked {
                _balances[from] = fromBalance - amount;
            }
        }

        if (to == address(0)) {
            _totalSupply -= amount;
        } else {
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);
    }

    /**
     * @notice  This is an internal function which is called during token minting
     * @dev     This function calls the internal update function
     * @param   account  .address type parameter, takes in the account address on which new tokens are to be minted.
     * @param   value  .uint256 type parameter, takes in the amount of the tokens to be minted.
     */
    function _mint(address account, uint256 value) internal {
        _update(address(0), account, value);
    }

    /**
     * @notice  This is an internal function which is called during token burn
     * @dev     This function validates the account and calles the internal update function
     * @param   account  .address type parameter, takes in the contract owners account address
     * @param   value  .uint256 type parameter, takes the amount of tokens to be burnt.
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert("Invalid Sender");
        }
        _update(account, address(0), value);
        emit Burn(account, value);
    }

    /**
     * @notice  This is an internal function which is used to approve allowance tokens for an address
     * @dev     This function calls another internal function
     * @param   owner  .address type parameter, takes in the address of the actual token owner
     * @param   spender  .address type parameter, takes in the address of the spender allowed by the owner
     * @param   amount  .uint256 type parameter, takes in the token amount
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _approve(owner, spender, amount, true);
    }

    /**
     * @notice  This function approves allowance token for an address
     * @param   owner  .address type parameter, takes in the address of the actual token owner
     * @param   spender  .address type parameter, takes in the address of the spender allowed by the owner
     * @param   amount  .uint256 type parameter, takes in the amount that is to be allowed for spending
     * @param   accessEvent  .boolean type parameter
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount,
        bool accessEvent
    ) internal virtual {
        if (owner == address(0)) {
            revert("Invalid Owner");
        }
        if (spender == address(0)) {
            revert("Invalid Spender");
        }

        _allowances[owner][spender] = amount;
        if (accessEvent) {
            emit Approval(owner, spender, amount);
        }
    }

    /**
     * @notice  This internal function is used to spend allowance approved for an address
     * @dev     This function is called during transferFrom where allowance tokens are transferred
     * @param   owner  .address type parameter, takes in the address of the actual token owner
     * @param   spender  .address type parameter, takes in the address of the spender allowed by the owner
     * @param   amount  .uint256 type parameter, takes in the amount that is to be allowed for spending
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < amount) {
                revert("Insufficient allowance");
            }
            unchecked {
                // unchecked is used to remove the compiler checks thus reducing gas fees
                _approve(owner, spender, currentAllowance - amount, false);
            }
        }
    }
}

File 2 of 5 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

File 3 of 5 : Context.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/**
 * @author  SHARP INNOVATION FOUNDATION
 * @title   Context
 * @dev     This contract provides the address and data of the sender of the transaction
 */

abstract contract Context {
    /**
     * @notice  Returns the address of the message sender
     */
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    /**
     * @notice  Returns the data of the message sender in bytes
     */
    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

File 4 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/**
 * @author  SHARP INNOVATION FOUNDATION
 * @title   Interface ERC20
 * @dev     Contains the necessary functions and events which are specified according to ERC20 token standard.
 */

interface IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address account) external view returns (uint);

    function transfer(address recipient, uint amount) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint);

    function approve(address spender, uint amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}

File 5 of 5 : Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
import {Context} from "./Context.sol";

/**
 * @title   Ownable Contract
 * @author  SHARP INNOVATION FOUNDATION
 * @notice  This is an ownable contract which sets an owner to the contract and transfers or removes it as per the owner's requirements.
 * @dev     The transfer ownership is a two-way process, where the transfer starts and then the newOwner has to accept the ownership transfer.
 */

abstract contract Ownable is Context {
    address private _owner;
    address private _pendingOwner;

    event OwnershipTransferStarted(
        address indexed peviousOwner,
        address indexed newOwner
    );

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @notice  Modifier to check the message sender is owner of the contract or not
     */
    modifier onlyOwner() {
        require(
            (_owner == msg.sender || _owner == address(0)),
            "Not the Owner"
        );
        _;
    }

    /**
     * @notice  Returns the current owner of the contract
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @notice  Returns the pending owner address
     */
    function PendingOwner() public view virtual returns (address) {
        return _pendingOwner;
    }

    /**
     * @notice  Called when the ownership is to be transferred. Initiates the transfer of ownership
     * @dev     This function can only be called by the owner of the contract
     * @param   newOwnerAddress  .Address of the new owner
     */
    function startTransferOwnership(
        address newOwnerAddress
    ) internal virtual onlyOwner {
        address oldOwner = _msgSender();
        _pendingOwner = newOwnerAddress;
        emit OwnershipTransferStarted(oldOwner, newOwnerAddress);
    }

    /**
     * @notice  Called to accept ownership of the contract by the new owner, only the pending owner can accept ownership
     * @dev     After ownership is accepted, ownership and token transfer is completed
     */
    function acceptOwnership() internal virtual returns (bool) {
        address acceptingOwner = _msgSender();
        if (acceptingOwner != PendingOwner()) {
            revert("Unauthorized account for Ownership");
        }
        return _transferOwnership(acceptingOwner);
    }

    /**
     * @notice  Internal Function called after accepting the ownership transfer, transfers the ownersip
     * @param   addr  .Address of the new owner
     */
    function _transferOwnership(address addr) internal virtual returns (bool) {
        delete _pendingOwner;
        address previousOwner = owner();
        _owner = addr;
        emit OwnershipTransferred(previousOwner, addr);
        return true;
    }

    /**
     * @notice  Called when ownership is to be revoked or removed.
     * @dev     This function can only be called by the owner of the contract
     */
    function renounceOwnership() public virtual onlyOwner returns (bool) {
        _owner = address(0);
        emit OwnershipTransferred(_msgSender(), address(0));
        return true;
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnerAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"peviousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"CurrentOwner","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newFeesAddress","type":"address"}],"name":"UpdateFeesAccount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"UpdateMaxTransferLimit","type":"event"},{"inputs":[],"name":"PendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fees","type":"uint256"}],"name":"batchTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"beginTransferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"spender","type":"address"},{"internalType":"uint256","name":"requestedDecrease","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFeesAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTransferLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedAmount","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"renounceOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFeesAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"setMaxTransferLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50604051620016c6380380620016c6833981016040819052620000349162000175565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600255600362000088838262000270565b50600462000097828262000270565b50506005805460ff19166012179055506200033c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000d557600080fd5b81516001600160401b0380821115620000f257620000f2620000ad565b604051601f8301601f19908116603f011681019082821181831017156200011d576200011d620000ad565b81604052838152602092508660208588010111156200013b57600080fd5b600091505b838210156200015f578582018301518183018401529082019062000140565b6000602085830101528094505050505092915050565b600080604083850312156200018957600080fd5b82516001600160401b0380821115620001a157600080fd5b620001af86838701620000c3565b93506020850151915080821115620001c657600080fd5b50620001d585828601620000c3565b9150509250929050565b600181811c90821680620001f457607f821691505b6020821081036200021557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200026b576000816000526020600020601f850160051c81016020861015620002465750805b601f850160051c820191505b81811015620002675782815560010162000252565b5050505b505050565b81516001600160401b038111156200028c576200028c620000ad565b620002a4816200029d8454620001df565b846200021b565b602080601f831160018114620002dc5760008415620002c35750858301515b600019600386901b1c1916600185901b17855562000267565b600085815260208120601f198616915b828110156200030d57888601518255948401946001909101908401620002ec565b50858210156200032c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61137a806200034c6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063a457c2d71161007c578063a457c2d7146102a2578063a9059cbb146102b5578063d46750f7146102c8578063dd62ed3e146102db578063ddb00dfc146102ee578063e64e93d11461030157600080fd5b8063715018a6146102555780638da5cb5b1461025d5780638f1783e31461026e57806395029f341461027657806395d89b4114610287578063a0712d681461028f57600080fd5b806323b872dd1161011557806323b872dd146101d6578063313ce567146101e957806339509351146101fe5780633d15dbd81461021157806342966c681461021957806370a082311461022c57600080fd5b8063025fb6621461015257806306fdde0314610177578063095ea7b31461018c57806318160ddd146101af5780631978c0b3146101c1575b600080fd5b61015a610314565b6040516001600160a01b0390911681526020015b60405180910390f35b61017f61036c565b60405161016e9190611101565b61019f61019a366004611167565b6103fe565b604051901515815260200161016e565b6006545b60405190815260200161016e565b6101d46101cf366004611191565b610418565b005b61019f6101e43660046111aa565b610489565b60055460405160ff909116815260200161016e565b61019f61020c366004611167565b6104c0565b61019f6104f9565b61019f610227366004611191565b610548565b6101b361023a3660046111e6565b6001600160a01b031660009081526009602052604090205490565b61019f6105f8565b6000546001600160a01b031661015a565b6008546101b3565b6001546001600160a01b031661015a565b61017f610677565b61019f61029d366004611191565b610686565b61019f6102b0366004611167565b6107cb565b61019f6102c3366004611167565b61086b565b61019f6102d6366004611201565b610881565b6101b36102e9366004611234565b610977565b6101d46102fc3660046111e6565b6109a2565b61019f61030f3660046111e6565b610a50565b600080546001600160a01b031633148061033757506000546001600160a01b0316155b61035c5760405162461bcd60e51b815260040161035390611267565b60405180910390fd5b506007546001600160a01b031690565b60606003805461037b9061128e565b80601f01602080910402602001604051908101604052809291908181526020018280546103a79061128e565b80156103f45780601f106103c9576101008083540402835291602001916103f4565b820191906000526020600020905b8154815290600101906020018083116103d757829003601f168201915b5050505050905090565b60003361040c818585610abe565b60019150505b92915050565b6000546001600160a01b031633148061043a57506000546001600160a01b0316155b6104565760405162461bcd60e51b815260040161035390611267565b600881905560405181907f686286f48ac4b2469a6e0d6f67ad000c05cf0e77b1b75a73fa80401d50df95d490600090a250565b6000610493610ad0565b3361049f858285610b27565b6104aa858585610b9c565b60019150506104b96001600255565b9392505050565b60006104ca610ad0565b336104ea8185856104db8383610977565b6104e591906112de565b610abe565b60019150506104126001600255565b60008061050e6000546001600160a01b031690565b9050610518610c37565b156105405761054081336001600160a01b038416600090815260096020526040902054610b9c565b600191505090565b600080546001600160a01b031633148061056b57506000546001600160a01b0316155b6105875760405162461bcd60e51b815260040161035390611267565b6006548211156105e55760405162461bcd60e51b8152602060048201526024808201527f4275726e20616d6f756e742067726561746572207468616e20746f6b656e20636044820152631bdd5b9d60e21b6064820152608401610353565b6105ef3383610cb0565b5060015b919050565b600080546001600160a01b031633148061061b57506000546001600160a01b0316155b6106375760405162461bcd60e51b815260040161035390611267565b600080546001600160a01b031916815560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350600190565b60606004805461037b9061128e565b600080546001600160a01b03163314806106a957506000546001600160a01b0316155b6106c55760405162461bcd60e51b815260040161035390611267565b336106e25760405162461bcd60e51b8152600401610353906112f1565b60006106f683670de0b6b3a764000061131a565b90508060000361073f5760405162461bcd60e51b815260206004820152601460248201527343616e6e6f74206d696e74203020746f6b656e7360601b6044820152606401610353565b6c01431e0fae6d7217caa00000008160065461075b91906112de565b11156107b85760405162461bcd60e51b815260206004820152602660248201527f4d696e7420616d6f756e74206578636565647320746865206d6178696d756d20604482015265737570706c7960d01b6064820152608401610353565b6107c23382610d3d565b50600192915050565b60006107d5610ad0565b3360006107e28286610977565b90508381101561084e5760405162461bcd60e51b815260206004820152603160248201527f63757272656e7420616c6c6f77616e6365206973206c657373207468616e2072604482015270657175657374656420646563726561736560781b6064820152608401610353565b61085b8286868403610abe565b6001925050506104126001600255565b6000610875610ad0565b336104ea818585610b9c565b600061088b610ad0565b826000036108d25760405162461bcd60e51b815260206004820152601460248201527305472616e7366657220616d6f756e7420697320360641b6044820152606401610353565b6000546001600160a01b031633148015906108ee575060085415155b15610953576008548311156109535760405162461bcd60e51b815260206004820152602560248201527f416d6f756e742069732067726561746572207468616e207472616e73666572206044820152641b1a5b5a5d60da1b6064820152608401610353565b3361095f818686610b9c565b6007546104aa9082906001600160a01b031685610b9c565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6000546001600160a01b03163314806109c457506000546001600160a01b0316155b6109e05760405162461bcd60e51b815260040161035390611267565b6001600160a01b038116610a065760405162461bcd60e51b8152600401610353906112f1565b600780546001600160a01b0319166001600160a01b0383169081179091556040517f0af49e0905ac415ecca986c577b0410d2a83bf4790dc35b8902ffcf957a940be90600090a250565b600080546001600160a01b0316331480610a7357506000546001600160a01b0316155b610a8f5760405162461bcd60e51b815260040161035390611267565b6001600160a01b038216610ab55760405162461bcd60e51b8152600401610353906112f1565b6105ef82610d4d565b610acb8383836001610ddb565b505050565b6002805403610b215760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610353565b60028055565b6000610b338484610977565b90506000198114610b965781811015610b875760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606401610353565b610b9684848484036000610ddb565b50505050565b6001600160a01b038316610be35760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21029b2b73232b960911b6044820152606401610353565b6001600160a01b038216610c2c5760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2102932b1b2b4bb32b960811b6044820152606401610353565b610acb838383610eea565b60015460009033906001600160a01b03168114610ca15760405162461bcd60e51b815260206004820152602260248201527f556e617574686f72697a6564206163636f756e7420666f72204f776e65727368604482015261069760f41b6064820152608401610353565b610caa81611086565b91505090565b6001600160a01b038216610cf75760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21029b2b73232b960911b6044820152606401610353565b610d0382600083610eea565b60405181906001600160a01b038416907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca590600090a35050565b610d4960008383610eea565b5050565b6000546001600160a01b0316331480610d6f57506000546001600160a01b0316155b610d8b5760405162461bcd60e51b815260040161035390611267565b600180546001600160a01b0319166001600160a01b03831690811790915560405133919082907f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270090600090a35050565b6001600160a01b038416610e215760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21027bbb732b960991b6044820152606401610353565b6001600160a01b038316610e695760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21029b832b73232b960891b6044820152606401610353565b6001600160a01b038085166000908152600a602090815260408083209387168352929052208290558015610b9657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610edc91815260200190565b60405180910390a350505050565b6001600160a01b038316610f15578060066000828254610f0a91906112de565b90915550610fdb9050565b6001600160a01b03831660009081526009602052604090205481811015610f755760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610353565b81600003610fbc5760405162461bcd60e51b815260206004820152601460248201527343616e6e6f742073656e64203020746f6b656e7360601b6044820152606401610353565b6001600160a01b03841660009081526009602052604090209082900390555b6001600160a01b038216611006578060066000828254610ffb9190611331565b909155506110349050565b6001600160a01b0382166000908152600960205260408120805483929061102e9084906112de565b90915550505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161107991815260200190565b60405180910390a3505050565b600180546001600160a01b03191690556000806110ab6000546001600160a01b031690565b600080546001600160a01b0319166001600160a01b0386811691821783556040519394509092908416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600192915050565b60006020808352835180602085015260005b8181101561112f57858101830151858201604001528201611113565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146105f357600080fd5b6000806040838503121561117a57600080fd5b61118383611150565b946020939093013593505050565b6000602082840312156111a357600080fd5b5035919050565b6000806000606084860312156111bf57600080fd5b6111c884611150565b92506111d660208501611150565b9150604084013590509250925092565b6000602082840312156111f857600080fd5b6104b982611150565b60008060006060848603121561121657600080fd5b61121f84611150565b95602085013595506040909401359392505050565b6000806040838503121561124757600080fd5b61125083611150565b915061125e60208401611150565b90509250929050565b6020808252600d908201526c2737ba103a34329027bbb732b960991b604082015260600190565b600181811c908216806112a257607f821691505b6020821081036112c257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610412576104126112c8565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b8082028115828204841417610412576104126112c8565b81810381811115610412576104126112c856fea26469706673582212204e539737a67bafd0abe7da65505f1c7bebad32ea580bdfb9053fd59fca713aeb64736f6c63430008180033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005534841525000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055348415250000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063a457c2d71161007c578063a457c2d7146102a2578063a9059cbb146102b5578063d46750f7146102c8578063dd62ed3e146102db578063ddb00dfc146102ee578063e64e93d11461030157600080fd5b8063715018a6146102555780638da5cb5b1461025d5780638f1783e31461026e57806395029f341461027657806395d89b4114610287578063a0712d681461028f57600080fd5b806323b872dd1161011557806323b872dd146101d6578063313ce567146101e957806339509351146101fe5780633d15dbd81461021157806342966c681461021957806370a082311461022c57600080fd5b8063025fb6621461015257806306fdde0314610177578063095ea7b31461018c57806318160ddd146101af5780631978c0b3146101c1575b600080fd5b61015a610314565b6040516001600160a01b0390911681526020015b60405180910390f35b61017f61036c565b60405161016e9190611101565b61019f61019a366004611167565b6103fe565b604051901515815260200161016e565b6006545b60405190815260200161016e565b6101d46101cf366004611191565b610418565b005b61019f6101e43660046111aa565b610489565b60055460405160ff909116815260200161016e565b61019f61020c366004611167565b6104c0565b61019f6104f9565b61019f610227366004611191565b610548565b6101b361023a3660046111e6565b6001600160a01b031660009081526009602052604090205490565b61019f6105f8565b6000546001600160a01b031661015a565b6008546101b3565b6001546001600160a01b031661015a565b61017f610677565b61019f61029d366004611191565b610686565b61019f6102b0366004611167565b6107cb565b61019f6102c3366004611167565b61086b565b61019f6102d6366004611201565b610881565b6101b36102e9366004611234565b610977565b6101d46102fc3660046111e6565b6109a2565b61019f61030f3660046111e6565b610a50565b600080546001600160a01b031633148061033757506000546001600160a01b0316155b61035c5760405162461bcd60e51b815260040161035390611267565b60405180910390fd5b506007546001600160a01b031690565b60606003805461037b9061128e565b80601f01602080910402602001604051908101604052809291908181526020018280546103a79061128e565b80156103f45780601f106103c9576101008083540402835291602001916103f4565b820191906000526020600020905b8154815290600101906020018083116103d757829003601f168201915b5050505050905090565b60003361040c818585610abe565b60019150505b92915050565b6000546001600160a01b031633148061043a57506000546001600160a01b0316155b6104565760405162461bcd60e51b815260040161035390611267565b600881905560405181907f686286f48ac4b2469a6e0d6f67ad000c05cf0e77b1b75a73fa80401d50df95d490600090a250565b6000610493610ad0565b3361049f858285610b27565b6104aa858585610b9c565b60019150506104b96001600255565b9392505050565b60006104ca610ad0565b336104ea8185856104db8383610977565b6104e591906112de565b610abe565b60019150506104126001600255565b60008061050e6000546001600160a01b031690565b9050610518610c37565b156105405761054081336001600160a01b038416600090815260096020526040902054610b9c565b600191505090565b600080546001600160a01b031633148061056b57506000546001600160a01b0316155b6105875760405162461bcd60e51b815260040161035390611267565b6006548211156105e55760405162461bcd60e51b8152602060048201526024808201527f4275726e20616d6f756e742067726561746572207468616e20746f6b656e20636044820152631bdd5b9d60e21b6064820152608401610353565b6105ef3383610cb0565b5060015b919050565b600080546001600160a01b031633148061061b57506000546001600160a01b0316155b6106375760405162461bcd60e51b815260040161035390611267565b600080546001600160a01b031916815560405133907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350600190565b60606004805461037b9061128e565b600080546001600160a01b03163314806106a957506000546001600160a01b0316155b6106c55760405162461bcd60e51b815260040161035390611267565b336106e25760405162461bcd60e51b8152600401610353906112f1565b60006106f683670de0b6b3a764000061131a565b90508060000361073f5760405162461bcd60e51b815260206004820152601460248201527343616e6e6f74206d696e74203020746f6b656e7360601b6044820152606401610353565b6c01431e0fae6d7217caa00000008160065461075b91906112de565b11156107b85760405162461bcd60e51b815260206004820152602660248201527f4d696e7420616d6f756e74206578636565647320746865206d6178696d756d20604482015265737570706c7960d01b6064820152608401610353565b6107c23382610d3d565b50600192915050565b60006107d5610ad0565b3360006107e28286610977565b90508381101561084e5760405162461bcd60e51b815260206004820152603160248201527f63757272656e7420616c6c6f77616e6365206973206c657373207468616e2072604482015270657175657374656420646563726561736560781b6064820152608401610353565b61085b8286868403610abe565b6001925050506104126001600255565b6000610875610ad0565b336104ea818585610b9c565b600061088b610ad0565b826000036108d25760405162461bcd60e51b815260206004820152601460248201527305472616e7366657220616d6f756e7420697320360641b6044820152606401610353565b6000546001600160a01b031633148015906108ee575060085415155b15610953576008548311156109535760405162461bcd60e51b815260206004820152602560248201527f416d6f756e742069732067726561746572207468616e207472616e73666572206044820152641b1a5b5a5d60da1b6064820152608401610353565b3361095f818686610b9c565b6007546104aa9082906001600160a01b031685610b9c565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6000546001600160a01b03163314806109c457506000546001600160a01b0316155b6109e05760405162461bcd60e51b815260040161035390611267565b6001600160a01b038116610a065760405162461bcd60e51b8152600401610353906112f1565b600780546001600160a01b0319166001600160a01b0383169081179091556040517f0af49e0905ac415ecca986c577b0410d2a83bf4790dc35b8902ffcf957a940be90600090a250565b600080546001600160a01b0316331480610a7357506000546001600160a01b0316155b610a8f5760405162461bcd60e51b815260040161035390611267565b6001600160a01b038216610ab55760405162461bcd60e51b8152600401610353906112f1565b6105ef82610d4d565b610acb8383836001610ddb565b505050565b6002805403610b215760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610353565b60028055565b6000610b338484610977565b90506000198114610b965781811015610b875760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b6044820152606401610353565b610b9684848484036000610ddb565b50505050565b6001600160a01b038316610be35760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21029b2b73232b960911b6044820152606401610353565b6001600160a01b038216610c2c5760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2102932b1b2b4bb32b960811b6044820152606401610353565b610acb838383610eea565b60015460009033906001600160a01b03168114610ca15760405162461bcd60e51b815260206004820152602260248201527f556e617574686f72697a6564206163636f756e7420666f72204f776e65727368604482015261069760f41b6064820152608401610353565b610caa81611086565b91505090565b6001600160a01b038216610cf75760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21029b2b73232b960911b6044820152606401610353565b610d0382600083610eea565b60405181906001600160a01b038416907fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca590600090a35050565b610d4960008383610eea565b5050565b6000546001600160a01b0316331480610d6f57506000546001600160a01b0316155b610d8b5760405162461bcd60e51b815260040161035390611267565b600180546001600160a01b0319166001600160a01b03831690811790915560405133919082907f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270090600090a35050565b6001600160a01b038416610e215760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21027bbb732b960991b6044820152606401610353565b6001600160a01b038316610e695760405162461bcd60e51b815260206004820152600f60248201526e24b73b30b634b21029b832b73232b960891b6044820152606401610353565b6001600160a01b038085166000908152600a602090815260408083209387168352929052208290558015610b9657826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610edc91815260200190565b60405180910390a350505050565b6001600160a01b038316610f15578060066000828254610f0a91906112de565b90915550610fdb9050565b6001600160a01b03831660009081526009602052604090205481811015610f755760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b6044820152606401610353565b81600003610fbc5760405162461bcd60e51b815260206004820152601460248201527343616e6e6f742073656e64203020746f6b656e7360601b6044820152606401610353565b6001600160a01b03841660009081526009602052604090209082900390555b6001600160a01b038216611006578060066000828254610ffb9190611331565b909155506110349050565b6001600160a01b0382166000908152600960205260408120805483929061102e9084906112de565b90915550505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161107991815260200190565b60405180910390a3505050565b600180546001600160a01b03191690556000806110ab6000546001600160a01b031690565b600080546001600160a01b0319166001600160a01b0386811691821783556040519394509092908416917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350600192915050565b60006020808352835180602085015260005b8181101561112f57858101830151858201604001528201611113565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146105f357600080fd5b6000806040838503121561117a57600080fd5b61118383611150565b946020939093013593505050565b6000602082840312156111a357600080fd5b5035919050565b6000806000606084860312156111bf57600080fd5b6111c884611150565b92506111d660208501611150565b9150604084013590509250925092565b6000602082840312156111f857600080fd5b6104b982611150565b60008060006060848603121561121657600080fd5b61121f84611150565b95602085013595506040909401359392505050565b6000806040838503121561124757600080fd5b61125083611150565b915061125e60208401611150565b90509250929050565b6020808252600d908201526c2737ba103a34329027bbb732b960991b604082015260600190565b600181811c908216806112a257607f821691505b6020821081036112c257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610412576104126112c8565b6020808252600f908201526e496e76616c6964206164647265737360881b604082015260600190565b8082028115828204841417610412576104126112c8565b81810381811115610412576104126112c856fea26469706673582212204e539737a67bafd0abe7da65505f1c7bebad32ea580bdfb9053fd59fca713aeb64736f6c63430008180033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000005534841525000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055348415250000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : tokenName (string): SHARP
Arg [1] : tokenSymbol (string): SHARP

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [3] : 5348415250000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [5] : 5348415250000000000000000000000000000000000000000000000000000000


Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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