ETH Price: $3,474.77 (+0.31%)

Token

SHIRLEY THE ROT (SHIRLEY)
 

Overview

Max Total Supply

10,000,000 SHIRLEY

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
107.051896956043886087 SHIRLEY

Value
$0.00
0x61C98F7110DdcE29680CD7EB6E1cd77a81D7587A
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AutoRewardToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 10 : AutoRewardToken.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.7.0;

import '@solidstate/contracts/contracts/token/ERC20/ERC20.sol';
import '@solidstate/contracts/contracts/token/ERC20/ERC20MetadataStorage.sol';

import './AutoRewardTokenStorage.sol';

/**
 * @title Fee-on-transfer token with frictionless distribution to holders
 * @author Nick Barry
 */
contract AutoRewardToken is ERC20 {
  using ERC20MetadataStorage for ERC20MetadataStorage.Layout;

  uint private constant BP_DIVISOR = 10000;
  uint private constant REWARD_SCALAR = 1e36;

  constructor (
    string memory name,
    string memory symbol,
    uint supply,
    uint fee
  ) {
    require(fee <= BP_DIVISOR, 'AutoRewardToken: fee must not exceed 10000 bp');

    {
      ERC20MetadataStorage.Layout storage l = ERC20MetadataStorage.layout();
      l.setName(name);
      l.setSymbol(symbol);
      l.setDecimals(18);
    }

    AutoRewardTokenStorage.layout().fee = fee;

    _mint(msg.sender, supply);
  }

  /**
   * @notice return network fee
   * @return fee in basis points
   */
  function getFee () external view returns (uint) {
    return AutoRewardTokenStorage.layout().fee;
  }

  /**
   * @inheritdoc ERC20Base
   */
  function balanceOf (
    address account
  ) override public view returns (uint) {
    return super.balanceOf(account) + rewardsOf(account);
  }

  /**
   * @notice get pending rewards pending distribution to given account
   * @param account owner of rewards
   * @return quantity of rewards
   */
  function rewardsOf (
    address account
  ) public view returns (uint) {
    AutoRewardTokenStorage.Layout storage l = AutoRewardTokenStorage.layout();
    return (
      super.balanceOf(account) * l.cumulativeRewardPerToken
      + l.rewardsReserved[account]
      - l.rewardsExcluded[account]
    ) / REWARD_SCALAR;
  }

  /**
   * @inheritdoc ERC20Base
   * @notice override of _transfer function to include call to _afterTokenTransfer
   */
  function _transfer (
    address sender,
    address recipient,
    uint amount
  ) override internal {
    super._transfer(sender, recipient, amount);
    _afterTokenTransfer(sender, recipient, amount);
  }

  /**
   * @notice ERC20 hook: apply fees and distribute rewards on transfer
   * @inheritdoc ERC20Base
   */
  function _beforeTokenTransfer (
    address from,
    address to,
    uint amount
  ) override internal {
    super._beforeTokenTransfer(from, to, amount);

    if (from == address(0) || to == address(0)) {
      return;
    }

    AutoRewardTokenStorage.Layout storage l = AutoRewardTokenStorage.layout();

    uint fee = amount * l.fee / BP_DIVISOR;

    // update internal balances to include rewards

    uint rewardsFrom = rewardsOf(from);
    ERC20BaseStorage.layout().balances[from] += rewardsFrom;
    delete l.rewardsReserved[from];

    uint rewardsTo = rewardsOf(to);    
    ERC20BaseStorage.layout().balances[to] += rewardsTo;
    
    delete l.rewardsReserved[to];

    // track exclusions from future rewards

    l.rewardsExcluded[from] = (super.balanceOf(from) - amount) * l.cumulativeRewardPerToken;
    l.rewardsExcluded[to] = (super.balanceOf(to) + amount - fee) * l.cumulativeRewardPerToken;
    
    // distribute rewards globally

    l.cumulativeRewardPerToken += (fee * REWARD_SCALAR) / (totalSupply() - fee);

    // simulate transfers
    emit Transfer(from, address(0), fee);
    emit Transfer(address(0), from, rewardsFrom);
    emit Transfer(address(0), to, rewardsTo);
  }

  /**
   * @notice ERC20 hook: remove fee from recipient
   * @param to recipient address
   * @param amount quantity transferred
   */
  function _afterTokenTransfer (
    address,
    address to,
    uint amount
  ) private {
    _burnFee(to, amount * AutoRewardTokenStorage.layout().fee / BP_DIVISOR);

  }
}

File 2 of 10 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import './ERC20Base.sol';
import './ERC20Extended.sol';
import './ERC20Metadata.sol';

abstract contract ERC20 is ERC20Base, ERC20Extended, ERC20Metadata {}

File 3 of 10 : ERC20MetadataStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

library ERC20MetadataStorage {
  bytes32 internal constant STORAGE_SLOT = keccak256(
    'solidstate.contracts.storage.ERC20Metadata'
  );

  struct Layout {
    string name;
    string symbol;
    uint8 decimals;
  }

  function layout () internal pure returns (Layout storage l) {
    bytes32 slot = STORAGE_SLOT;
    assembly { l.slot := slot }
  }

  function setName (
    Layout storage l,
    string memory name
  ) internal {
    l.name = name;
  }

  function setSymbol (
    Layout storage l,
    string memory symbol
  ) internal {
    l.symbol = symbol;
  }

  function setDecimals (
    Layout storage l,
    uint8 decimals
  ) internal {
    l.decimals = decimals;
  }
}

File 4 of 10 : AutoRewardTokenStorage.sol
// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.7.0;

library AutoRewardTokenStorage {
  bytes32 internal constant STORAGE_SLOT = keccak256(
    'solidstate.contracts.storage.AutoRewardToken'
  );

  struct Layout {
    uint fee;
    uint cumulativeRewardPerToken;
    mapping (address => uint) rewardsExcluded;
    mapping (address => uint) rewardsReserved;
  }

  function layout () internal pure returns (Layout storage l) {
    bytes32 slot = STORAGE_SLOT;
    assembly { l.slot := slot }
  }
}

File 5 of 10 : ERC20Base.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import '../../utils/SafeMath.sol';
import './IERC20.sol';
import './ERC20BaseStorage.sol';

abstract contract ERC20Base is IERC20 {
  using SafeMath for uint;

  function totalSupply () override virtual public view returns (uint) {
    return ERC20BaseStorage.layout().totalSupply;
  }

  function balanceOf (
    address account
  ) override virtual public view returns (uint) {
    return ERC20BaseStorage.layout().balances[account];
  }

  function allowance (
    address holder,
    address spender
  ) override virtual public view returns (uint) {
    return ERC20BaseStorage.layout().allowances[holder][spender];
  }

  function transfer (
    address recipient,
    uint amount
  ) override virtual public returns (bool) {
    _transfer(msg.sender, recipient, amount);
    return true;
  }

  function transferFrom (
    address sender,
    address recipient,
    uint amount
  ) override virtual public returns (bool) {
    _approve(sender, msg.sender, ERC20BaseStorage.layout().allowances[sender][msg.sender].sub(amount, 'ERC20: transfer amount exceeds allowance'));
    _transfer(sender, recipient, amount);
    return true;
  }

  function approve (
    address spender,
    uint amount
  ) override virtual public returns (bool) {
    _approve(msg.sender, spender, amount);
    return true;
  }

  function _mint (
    address account,
    uint amount
  ) virtual internal {
    require(account != address(0), 'ERC20: mint to the zero address');

    _beforeTokenTransfer(address(0), account, amount);

    ERC20BaseStorage.Layout storage l = ERC20BaseStorage.layout();
    l.totalSupply = l.totalSupply.add(amount);
    l.balances[account] = l.balances[account].add(amount);

    emit Transfer(address(0), account, amount);
  }

  function _burn (
    address account,
    uint amount
  ) virtual internal {
    require(account != address(0), 'ERC20: burn from the zero address');

    _beforeTokenTransfer(account, address(0), amount);

    ERC20BaseStorage.Layout storage l = ERC20BaseStorage.layout();
    l.balances[account] = l.balances[account].sub(amount);
    l.totalSupply = l.totalSupply.sub(amount);

    emit Transfer(account, address(0), amount);
  }

   function _burnFee (
    address account,
    uint amount
  ) virtual internal {
    require(account != address(0), 'ERC20: burn from the zero address');

    _beforeTokenTransfer(account, address(0), amount);

    ERC20BaseStorage.Layout storage l = ERC20BaseStorage.layout();
    l.balances[account] = l.balances[account].sub(amount);
    //l.totalSupply = l.totalSupply.sub(amount);

    //emit Transfer(account, address(0), amount);
  }

  function _transfer (
    address sender,
    address recipient,
    uint amount
  ) virtual internal {
    require(sender != address(0), 'ERC20: transfer from the zero address');
    require(recipient != address(0), 'ERC20: transfer to the zero address');

    _beforeTokenTransfer(sender, recipient, amount);

    ERC20BaseStorage.Layout storage l = ERC20BaseStorage.layout();
    l.balances[sender] = l.balances[sender].sub(amount, 'ERC20: transfer amount exceeds balance');
    l.balances[recipient] = l.balances[recipient].add(amount);

    emit Transfer(sender, recipient, amount);
  }

  function _approve (
    address holder,
    address spender,
    uint amount
  ) virtual internal {
    require(holder != address(0), 'ERC20: approve from the zero address');
    require(spender != address(0), 'ERC20: approve to the zero address');

    ERC20BaseStorage.layout().allowances[holder][spender] = amount;

    emit Approval(holder, spender, amount);
  }

  function _beforeTokenTransfer (
    address from,
    address to,
    uint amount
  ) virtual internal {}
}

File 6 of 10 : ERC20Extended.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import '../../utils/SafeMath.sol';
import './ERC20Base.sol';

abstract contract ERC20Extended is ERC20Base {
  using SafeMath for uint;

  function increaseAllowance (address spender, uint amount) virtual public returns (bool) {
    _approve(msg.sender, spender, ERC20BaseStorage.layout().allowances[msg.sender][spender].add(amount));
    return true;
  }

  function decreaseAllowance (address spender, uint amount) virtual public returns (bool) {
    _approve(msg.sender, spender, ERC20BaseStorage.layout().allowances[msg.sender][spender].sub(amount));
    return true;
  }
}

File 7 of 10 : ERC20Metadata.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

import './ERC20Base.sol';
import './ERC20MetadataStorage.sol';

abstract contract ERC20Metadata is ERC20Base {
  function name () virtual public view returns (string memory) {
    return ERC20MetadataStorage.layout().name;
  }

  function symbol () virtual public view returns (string memory) {
    return ERC20MetadataStorage.layout().symbol;
  }

  function decimals () virtual public view returns (uint8) {
    return ERC20MetadataStorage.layout().decimals;
  }
}

File 8 of 10 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev derived from https://github.com/OpenZeppelin/openzeppelin-contracts (MIT license)
 */
library SafeMath {
  function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
    uint256 c = a + b;
    if (c < a) return (false, 0);
    return (true, c);
  }

  function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
    if (b > a) return (false, 0);
    return (true, a - b);
  }

  function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
    if (a == 0) return (true, 0);
    uint256 c = a * b;
    if (c / a != b) return (false, 0);
    return (true, c);
  }

  function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
    if (b == 0) return (false, 0);
    return (true, a / b);
  }

  function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
    if (b == 0) return (false, 0);
    return (true, a % b);
  }

  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) {
    require(b <= a, "SafeMath: subtraction overflow");
    return a - b;
  }

  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    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) {
    require(b > 0, "SafeMath: division by zero");
    return a / b;
  }

  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
      require(b > 0, "SafeMath: modulo by zero");
    return a % b;
  }

  function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
      require(b <= a, errorMessage);
    return a - b;
  }

  function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
      require(b > 0, errorMessage);
    return a / b;
  }

  function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
      require(b > 0, errorMessage);
    return a % b;
  }
}

File 9 of 10 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

interface IERC20 {
  event Transfer(
    address indexed from,
    address indexed to,
    uint256 value
  );

  event Approval(
    address indexed owner,
    address indexed spender,
    uint256 value
  );

  function totalSupply () external view returns (uint256);

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

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

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

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

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

File 10 of 10 : ERC20BaseStorage.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.7.0;

library ERC20BaseStorage {
  bytes32 internal constant STORAGE_SLOT = keccak256(
    'solidstate.contracts.storage.ERC20Base'
  );

  struct Layout {
    mapping (address => uint) balances;
    mapping (address => mapping (address => uint)) allowances;
    uint totalSupply;
  }

  function layout () internal pure returns (Layout storage l) {
    bytes32 slot = STORAGE_SLOT;
    assembly { l.slot := slot }
  }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"uint256","name":"fee","type":"uint256"}],"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":"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":"holder","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"rewardsOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200188938038062001889833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b50604090815260208201519101519092509050612710811115620001ee5760405162461bcd60e51b815260040180806020018281038252602d8152602001806200185c602d913960400191505060405180910390fd5b6000620002056200028460201b6200061b1760201c565b9050620002218582620002a860201b6200063f1790919060201c565b6200023b8482620002c160201b620006561790919060201c565b62000256601282620002d860201b6200066b1790919060201c565b50806200026d620002f160201b620006841760201c565b556200027a338362000315565b50505050620008b0565b7f2967a798b92539a1b9eefe4d8eb931f96b68d27665e276f1bee2d5db7f74304790565b8051620002bc908390602084019062000804565b505050565b8051620002bc906001840190602084019062000804565b600291909101805460ff191660ff909216919091179055565b7f5e6e5da2b20a0fb05fc8fe0e6a606c507b965fcedc3075b687dbfd62da8f8e0a90565b6001600160a01b03821662000371576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6200037f6000838362000431565b600062000396620006a460201b620006a81760201c565b9050620003b6828260020154620006c860201b620006cc1790919060201c565b60028201556001600160a01b03831660009081526020828152604090912054620003eb918490620006cc620006c8821b17901c565b6001600160a01b0384166000818152602084815260408083209490945583518681529351929391926000805160206200183c8339815191529281900390910190a3505050565b62000449838383620002bc60201b620006511760201c565b6001600160a01b03831615806200046757506001600160a01b038216155b156200047357620002bc565b60006200048a620002f160201b620006841760201c565b905060006127108260000154840281620004a057fe5b0490506000620004b0866200072a565b905080620004c8620006a460201b620006a81760201c565b6001600160a01b03881660009081526020918252604080822080549094019093556003860190915290812081905562000501866200072a565b90508062000519620006a460201b620006a81760201c565b6001600160a01b038816600090815260209182526040808220805490940190935560038701825291822091909155600185015490869062000565908a906200072d620007ad821b17901c565b0302846002016000896001600160a01b03166001600160a01b031681526020019081526020016000208190555083600101548386620005af89620007ad60201b6200072d1760201c565b6001600160a01b038a166000908152600289016020526040902091019190910391909102905582620005e0620007e4565b036ec097ce7bc90715b34b9f1000000000840281620005fb57fe5b600186018054929091049190910190556040805184815290516000916001600160a01b038a16916000805160206200183c8339815191529181900360200190a36040805183815290516001600160a01b038916916000916000805160206200183c8339815191529181900360200190a36040805182815290516001600160a01b038816916000916000805160206200183c8339815191529181900360200190a350505050505050565b7fc991b2e918acaba8e5721668ed0b1982684e5a8692a621bcd2d7ef326bb015b490565b60008282018381101562000723576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60008062000742620002f160201b620006841760201c565b6001600160a01b038416600090815260028201602090815260408083205460038501835292205460018401549394506ec097ce7bc90715b34b9f10000000009390916200079a9088906200072d620007ad821b17901c565b02010381620007a557fe5b049392505050565b6000620007c4620006a460201b620006a81760201c565b6001600160a01b0392909216600090815260209290925250604090205490565b6000620007fb620006a460201b620006a81760201c565b60020154905090565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200083c576000855562000887565b82601f106200085757805160ff191683800117855562000887565b8280016001018555821562000887579182015b82811115620008875782518255916020019190600101906200086a565b506200089592915062000899565b5090565b5b808211156200089557600081556001016200089a565b610f7c80620008c06000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063479ba7ae1161008c578063a457c2d711610066578063a457c2d71461027f578063a9059cbb146102ab578063ced72f87146102d7578063dd62ed3e146102df576100cf565b8063479ba7ae1461022b57806370a082311461025157806395d89b4114610277576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab578063313ce567146101e157806339509351146101ff575b600080fd5b6100dc61030d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b0381351690602001356103a5565b604080519115158252519081900360200190f35b6101996103bb565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b038135811691602081013590911690604001356103ce565b6101e9610443565b6040805160ff9092168252519081900360200190f35b61017d6004803603604081101561021557600080fd5b506001600160a01b038135169060200135610459565b6101996004803603602081101561024157600080fd5b50356001600160a01b031661049a565b6101996004803603602081101561026757600080fd5b50356001600160a01b0316610502565b6100dc61051d565b61017d6004803603604081101561029557600080fd5b506001600160a01b038135169060200135610583565b61017d600480360360408110156102c157600080fd5b506001600160a01b0381351690602001356105c4565b6101996105d1565b610199600480360360408110156102f557600080fd5b506001600160a01b03813581169160200135166105e1565b606061031761061b565b805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561039b5780601f106103705761010080835404028352916020019161039b565b820191906000526020600020905b81548152906001019060200180831161037e57829003601f168201915b5050505050905090565b60006103b2338484610757565b50600192915050565b60006103c56106a8565b60020154905090565b600061042e843361042985604051806060016040528060288152602001610e95602891396103fa6106a8565b6001600160a01b038b166000908152600191909101602090815260408083203384529091529020549190610856565b610757565b6104398484846108ed565b5060019392505050565b600061044d61061b565b6002015460ff16905090565b60006103b233846104298561046c6106a8565b336000908152600191909101602090815260408083206001600160a01b038c168452909152902054906106cc565b6000806104a5610684565b6001600160a01b0384166000908152600282016020908152604080832054600385019092529091205460018301549293506ec097ce7bc90715b34b9f1000000000926104f08761072d565b020103816104fa57fe5b049392505050565b600061050d8261049a565b6105168361072d565b0192915050565b606061052761061b565b60019081018054604080516020600295841615610100026000190190931694909404601f81018390048302850183019091528084529083018282801561039b5780601f106103705761010080835404028352916020019161039b565b60006103b23384610429856105966106a8565b336000908152600191909101602090815260408083206001600160a01b038c16845290915290205490610903565b60006103b23384846108ed565b60006105db610684565b54905090565b60006105eb6106a8565b6001600160a01b039384166000908152600191909101602090815260408083209490951682529290925250205490565b7f2967a798b92539a1b9eefe4d8eb931f96b68d27665e276f1bee2d5db7f74304790565b80516106519083906020840190610d88565b505050565b80516106519060018401906020840190610d88565b600291909101805460ff191660ff909216919091179055565b7f5e6e5da2b20a0fb05fc8fe0e6a606c507b965fcedc3075b687dbfd62da8f8e0a90565b7fc991b2e918acaba8e5721668ed0b1982684e5a8692a621bcd2d7ef326bb015b490565b600082820183811015610726576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006107376106a8565b6001600160a01b0392909216600090815260209290925250604090205490565b6001600160a01b03831661079c5760405162461bcd60e51b8152600401808060200182810382526024815260200180610f236024913960400191505060405180910390fd5b6001600160a01b0382166107e15760405162461bcd60e51b8152600401808060200182810382526022815260200180610e4d6022913960400191505060405180910390fd5b806107ea6106a8565b6001600160a01b03808616600081815260019390930160209081526040808520938816808652938252938490209490945582518581529251919390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a3505050565b600081848411156108e55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108aa578181015183820152602001610892565b50505050905090810190601f1680156108d75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6108f8838383610960565b610651838383610ab6565b60008282111561095a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b0383166109a55760405162461bcd60e51b8152600401808060200182810382526025815260200180610efe6025913960400191505060405180910390fd5b6001600160a01b0382166109ea5760405162461bcd60e51b8152600401808060200182810382526023815260200180610e2a6023913960400191505060405180910390fd5b6109f5838383610ad5565b60006109ff6106a8565b9050610a3e82604051806060016040528060268152602001610e6f602691396001600160a01b0387166000908152602085905260409020549190610856565b6001600160a01b038086166000908152602084905260408082209390935590851681522054610a6d90836106cc565b6001600160a01b03808516600081815260208581526040918290209490945580518681529051919392881692600080516020610ebd83398151915292918290030190a350505050565b61065182612710610ac5610684565b54840281610acf57fe5b04610ce6565b610ae0838383610651565b6001600160a01b0383161580610afd57506001600160a01b038216155b15610b0757610651565b6000610b11610684565b905060006127108260000154840281610b2657fe5b0490506000610b348661049a565b905080610b3f6106a8565b6001600160a01b038816600090815260209182526040808220805490940190935560038601909152908120819055610b768661049a565b905080610b816106a8565b6001600160a01b03881660009081526020918252604080822080549094019093556003870190915290812055600184015485610bbc8961072d565b6001600160a01b038a166000908152600288016020526040902091900391909102905560018401548386610bef8961072d565b010302846002016000886001600160a01b03166001600160a01b031681526020019081526020016000208190555082610c266103bb565b036ec097ce7bc90715b34b9f1000000000840281610c4057fe5b600186018054929091049190910190556040805184815290516000916001600160a01b038a1691600080516020610ebd8339815191529181900360200190a36040805183815290516001600160a01b03891691600091600080516020610ebd8339815191529181900360200190a36040805182815290516001600160a01b03881691600091600080516020610ebd8339815191529181900360200190a350505050505050565b6001600160a01b038216610d2b5760405162461bcd60e51b8152600401808060200182810382526021815260200180610edd6021913960400191505060405180910390fd5b610d3782600083610ad5565b6000610d416106a8565b6001600160a01b038416600090815260208290526040902054909150610d679083610903565b6001600160a01b039093166000908152602091909152604090209190915550565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282610dbe5760008555610e04565b82601f10610dd757805160ff1916838001178555610e04565b82800160010185558215610e04579182015b82811115610e04578251825591602001919060010190610de9565b50610e10929150610e14565b5090565b5b80821115610e105760008155600101610e1556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a26469706673582212206f191e6a620cab606f74e47670379317a73da62a3e86efb9ffd97b33edb22a3164736f6c63430007060033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4175746f526577617264546f6b656e3a20666565206d757374206e6f7420657863656564203130303030206270000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000084595161401484a000000000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000000f534849524c45592054484520524f5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007534849524c455900000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063479ba7ae1161008c578063a457c2d711610066578063a457c2d71461027f578063a9059cbb146102ab578063ced72f87146102d7578063dd62ed3e146102df576100cf565b8063479ba7ae1461022b57806370a082311461025157806395d89b4114610277576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab578063313ce567146101e157806339509351146101ff575b600080fd5b6100dc61030d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b0381351690602001356103a5565b604080519115158252519081900360200190f35b6101996103bb565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b038135811691602081013590911690604001356103ce565b6101e9610443565b6040805160ff9092168252519081900360200190f35b61017d6004803603604081101561021557600080fd5b506001600160a01b038135169060200135610459565b6101996004803603602081101561024157600080fd5b50356001600160a01b031661049a565b6101996004803603602081101561026757600080fd5b50356001600160a01b0316610502565b6100dc61051d565b61017d6004803603604081101561029557600080fd5b506001600160a01b038135169060200135610583565b61017d600480360360408110156102c157600080fd5b506001600160a01b0381351690602001356105c4565b6101996105d1565b610199600480360360408110156102f557600080fd5b506001600160a01b03813581169160200135166105e1565b606061031761061b565b805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561039b5780601f106103705761010080835404028352916020019161039b565b820191906000526020600020905b81548152906001019060200180831161037e57829003601f168201915b5050505050905090565b60006103b2338484610757565b50600192915050565b60006103c56106a8565b60020154905090565b600061042e843361042985604051806060016040528060288152602001610e95602891396103fa6106a8565b6001600160a01b038b166000908152600191909101602090815260408083203384529091529020549190610856565b610757565b6104398484846108ed565b5060019392505050565b600061044d61061b565b6002015460ff16905090565b60006103b233846104298561046c6106a8565b336000908152600191909101602090815260408083206001600160a01b038c168452909152902054906106cc565b6000806104a5610684565b6001600160a01b0384166000908152600282016020908152604080832054600385019092529091205460018301549293506ec097ce7bc90715b34b9f1000000000926104f08761072d565b020103816104fa57fe5b049392505050565b600061050d8261049a565b6105168361072d565b0192915050565b606061052761061b565b60019081018054604080516020600295841615610100026000190190931694909404601f81018390048302850183019091528084529083018282801561039b5780601f106103705761010080835404028352916020019161039b565b60006103b23384610429856105966106a8565b336000908152600191909101602090815260408083206001600160a01b038c16845290915290205490610903565b60006103b23384846108ed565b60006105db610684565b54905090565b60006105eb6106a8565b6001600160a01b039384166000908152600191909101602090815260408083209490951682529290925250205490565b7f2967a798b92539a1b9eefe4d8eb931f96b68d27665e276f1bee2d5db7f74304790565b80516106519083906020840190610d88565b505050565b80516106519060018401906020840190610d88565b600291909101805460ff191660ff909216919091179055565b7f5e6e5da2b20a0fb05fc8fe0e6a606c507b965fcedc3075b687dbfd62da8f8e0a90565b7fc991b2e918acaba8e5721668ed0b1982684e5a8692a621bcd2d7ef326bb015b490565b600082820183811015610726576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006107376106a8565b6001600160a01b0392909216600090815260209290925250604090205490565b6001600160a01b03831661079c5760405162461bcd60e51b8152600401808060200182810382526024815260200180610f236024913960400191505060405180910390fd5b6001600160a01b0382166107e15760405162461bcd60e51b8152600401808060200182810382526022815260200180610e4d6022913960400191505060405180910390fd5b806107ea6106a8565b6001600160a01b03808616600081815260019390930160209081526040808520938816808652938252938490209490945582518581529251919390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a3505050565b600081848411156108e55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156108aa578181015183820152602001610892565b50505050905090810190601f1680156108d75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6108f8838383610960565b610651838383610ab6565b60008282111561095a576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b0383166109a55760405162461bcd60e51b8152600401808060200182810382526025815260200180610efe6025913960400191505060405180910390fd5b6001600160a01b0382166109ea5760405162461bcd60e51b8152600401808060200182810382526023815260200180610e2a6023913960400191505060405180910390fd5b6109f5838383610ad5565b60006109ff6106a8565b9050610a3e82604051806060016040528060268152602001610e6f602691396001600160a01b0387166000908152602085905260409020549190610856565b6001600160a01b038086166000908152602084905260408082209390935590851681522054610a6d90836106cc565b6001600160a01b03808516600081815260208581526040918290209490945580518681529051919392881692600080516020610ebd83398151915292918290030190a350505050565b61065182612710610ac5610684565b54840281610acf57fe5b04610ce6565b610ae0838383610651565b6001600160a01b0383161580610afd57506001600160a01b038216155b15610b0757610651565b6000610b11610684565b905060006127108260000154840281610b2657fe5b0490506000610b348661049a565b905080610b3f6106a8565b6001600160a01b038816600090815260209182526040808220805490940190935560038601909152908120819055610b768661049a565b905080610b816106a8565b6001600160a01b03881660009081526020918252604080822080549094019093556003870190915290812055600184015485610bbc8961072d565b6001600160a01b038a166000908152600288016020526040902091900391909102905560018401548386610bef8961072d565b010302846002016000886001600160a01b03166001600160a01b031681526020019081526020016000208190555082610c266103bb565b036ec097ce7bc90715b34b9f1000000000840281610c4057fe5b600186018054929091049190910190556040805184815290516000916001600160a01b038a1691600080516020610ebd8339815191529181900360200190a36040805183815290516001600160a01b03891691600091600080516020610ebd8339815191529181900360200190a36040805182815290516001600160a01b03881691600091600080516020610ebd8339815191529181900360200190a350505050505050565b6001600160a01b038216610d2b5760405162461bcd60e51b8152600401808060200182810382526021815260200180610edd6021913960400191505060405180910390fd5b610d3782600083610ad5565b6000610d416106a8565b6001600160a01b038416600090815260208290526040902054909150610d679083610903565b6001600160a01b039093166000908152602091909152604090209190915550565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282610dbe5760008555610e04565b82601f10610dd757805160ff1916838001178555610e04565b82800160010185558215610e04579182015b82811115610e04578251825591602001919060010190610de9565b50610e10929150610e14565b5090565b5b80821115610e105760008155600101610e1556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a26469706673582212206f191e6a620cab606f74e47670379317a73da62a3e86efb9ffd97b33edb22a3164736f6c63430007060033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000084595161401484a000000000000000000000000000000000000000000000000000000000000000000012c000000000000000000000000000000000000000000000000000000000000000f534849524c45592054484520524f5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007534849524c455900000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): SHIRLEY THE ROT
Arg [1] : symbol (string): SHIRLEY
Arg [2] : supply (uint256): 10000000000000000000000000
Arg [3] : fee (uint256): 300

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 000000000000000000000000000000000000000000084595161401484a000000
Arg [3] : 000000000000000000000000000000000000000000000000000000000000012c
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [5] : 534849524c45592054484520524f540000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [7] : 534849524c455900000000000000000000000000000000000000000000000000


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