ETH Price: $2,632.03 (+0.12%)
Gas: 2 Gwei

Token

WRD Exodus (WR2)
 

Overview

Max Total Supply

1,407,932,243.61287534 WR2

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
674,037,721.10482908 WR2

Value
$0.00
0x4ef91b644811b635bf2a78b7c5c15bd15f29a1fa
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:
WR2Token

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-04-01
*/

pragma solidity ^0.5.0;

/**
 * @title Roles
 * @dev Library for managing addresses assigned to a Role.
 */
library Roles {
    struct Role {
        mapping (address => bool) bearer;
    }

    /**
     * @dev give an account access to this role
     */
    function add(Role storage role, address account) internal {
        require(account != address(0));
        require(!has(role, account));

        role.bearer[account] = true;
    }

    /**
     * @dev remove an account's access to this role
     */
    function remove(Role storage role, address account) internal {
        require(account != address(0));
        require(has(role, account));

        role.bearer[account] = false;
    }

    /**
     * @dev check if an account has this role
     * @return bool
     */
    function has(Role storage role, address account) internal view returns (bool) {
        require(account != address(0));
        return role.bearer[account];
    }
}

/**
 * @title WhitelistAdminRole
 * @dev WhitelistAdmins are responsible for assigning and removing Whitelisted accounts.
 */
contract WhitelistAdminRole {
    using Roles for Roles.Role;

    event WhitelistAdminAdded(address indexed account);
    event WhitelistAdminRemoved(address indexed account);

    Roles.Role private _whitelistAdmins;

    constructor () internal {
        _addWhitelistAdmin(msg.sender);
    }

    modifier onlyWhitelistAdmin() {
        require(isWhitelistAdmin(msg.sender));
        _;
    }

    function isWhitelistAdmin(address account) public view returns (bool) {
        return _whitelistAdmins.has(account);
    }

    function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
        _addWhitelistAdmin(account);
    }

    function renounceWhitelistAdmin() public {
        _removeWhitelistAdmin(msg.sender);
    }

    function _addWhitelistAdmin(address account) internal {
        _whitelistAdmins.add(account);
        emit WhitelistAdminAdded(account);
    }

    function _removeWhitelistAdmin(address account) internal {
        _whitelistAdmins.remove(account);
        emit WhitelistAdminRemoved(account);
    }
}

/**
 * @title WhitelistedRole
 * @dev Whitelisted accounts have been approved by a WhitelistAdmin to perform certain actions (e.g. participate in a
 * crowdsale). This role is special in that the only accounts that can add it are WhitelistAdmins (who can also remove
 * it), and not Whitelisteds themselves.
 */
contract WhitelistedRole is WhitelistAdminRole {
    using Roles for Roles.Role;

    event WhitelistedAdded(address indexed account);
    event WhitelistedRemoved(address indexed account);

    Roles.Role private _whitelisteds;

    modifier onlyWhitelisted() {
        require(isWhitelisted(msg.sender));
        _;
    }

    function isWhitelisted(address account) public view returns (bool) {
        return _whitelisteds.has(account);
    }

    function addWhitelisted(address account) public onlyWhitelistAdmin {
        _addWhitelisted(account);
    }

    function removeWhitelisted(address account) public onlyWhitelistAdmin {
        _removeWhitelisted(account);
    }

    function renounceWhitelisted() public {
        _removeWhitelisted(msg.sender);
    }

    function _addWhitelisted(address account) internal {
        _whitelisteds.add(account);
        emit WhitelistedAdded(account);
    }

    function _removeWhitelisted(address account) internal {
        _whitelisteds.remove(account);
        emit WhitelistedRemoved(account);
    }
}

contract ERC20 {
  function totalSupply() public view returns (uint256);

  function balanceOf(address _who) public view returns (uint256);

  function allowance(address _owner, address _spender)
    public view returns (uint256);

  function transfer(address _to, uint256 _value) public returns (bool);

  function approve(address _spender, uint256 _value)
    public returns (bool);

  function transferFrom(address _from, address _to, uint256 _value)
    public returns (bool);

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

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

library SafeMath {

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (_a == 0) {
      return 0;
    }

    uint256 c = _a * _b;
    require(c / _a == _b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b > 0); // Solidity only automatically asserts when dividing by 0
    uint256 c = _a / _b;
    // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold

    return c;
  }

  /**
  * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b <= _a);
    uint256 c = _a - _b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
    uint256 c = _a + _b;
    require(c >= _a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}

library MathFixed {

  /**
  * @dev Multiplies two fixed_point numbers.
  */
  function mulFixed(uint256 a, uint256 b) internal pure returns (uint256) {
    return (((a * b) >> 95) + 1) >> 1;
  }

  /**
  * @dev return a^n with fixed_point a, unsinged integer n.
  * using exponentiation_by_squaring
  */
  function powFixed(uint256 a, uint256 n) internal pure returns (uint256){
    uint256 r = 79228162514264337593543950336; // 1.0  * 2^96
    while(n > 0){
      if(n&1 > 0){
        r = mulFixed(a, r);
      }
      a = mulFixed(a, a);
      n >>= 1;
    }
    return r;
  }
}

contract TokenBase is ERC20 {
  using SafeMath for uint256;

  mapping (address => mapping (address => uint256)) allowed;

  function allowance(
    address _owner,
    address _spender
   )
    public
    view
    returns (uint256)
  {
    return allowed[_owner][_spender];
  }

  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    emit Approval(msg.sender, _spender, _value);
    return true;
  }

  function increaseApproval(
    address _spender,
    uint256 _addedValue
  )
    public
    returns (bool)
  {
    allowed[msg.sender][_spender] = (
      allowed[msg.sender][_spender].add(_addedValue));
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval(
    address _spender,
    uint256 _subtractedValue
  )
    public
    returns (bool)
  {
    uint256 oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue >= oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

contract WR2Token is TokenBase {

    WiredToken public wiredToken;

    string public constant name = "WRD Exodus";
    string public constant symbol = "WR2";
    uint8 public constant decimals = 8;

    constructor() public {
        wiredToken = WiredToken(msg.sender);
        emit Transfer(address(0), address(this), 0);
    }

    function balanceOf(address _holder) public view returns (uint256) {
        return wiredToken.lookBalanceWR2(_holder);
    }

    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));

        wiredToken.transferWR2(msg.sender, _to, _value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= allowed[_from][msg.sender]);

        wiredToken.transferWR2(_from, _to, _value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    function totalSupply() public view returns (uint256) {
        return wiredToken.totalWR2();
    }

    function mint(address _holder, uint256 _value) external {
        require(msg.sender == address(wiredToken));
        wiredToken.mintWR2(_holder, _value);
        emit Transfer(address(0), _holder, _value);
    }

    function transferByAdmin(address _from, uint256 _value) external {
        require(wiredToken.isWhitelistAdmin(msg.sender));
        wiredToken.transferWR2(_from, msg.sender, _value);
        emit Transfer(_from, msg.sender, _value);
    }
}

contract WiredToken is WhitelistedRole, TokenBase {
    using SafeMath for uint256;
    using MathFixed for uint256;

    string public constant name = "WRD Genesis";
    string public constant symbol = "WRD";
    uint8 public constant decimals = 8;

    uint32 constant month = 30 days;
    uint256 public constant bonusWRDtoWR2 = 316912650057057350374175801; //0.4%
    uint256 public constant bonusWR2toWRD = 7922816251426433759354395; //0.01%
    uint256 public initialSupply = uint256(250000000000).mul(uint(10)**decimals);

    WR2Token public wr2Token;
    uint256 private totalWRD;
    uint256 public totalWR2;

    bool public listing = false;
    uint256 public launchTime = 9999999999999999999999;

    mapping(address => uint256) lastUpdate;
//    mapping(address => uint256) public startTime;
    mapping(address => uint256) WRDBalances;
    mapping(address => uint256) WRDDailyHoldBalances;
    mapping(address => uint256) WR2Balances;
    mapping(address => uint256) WR2DailyHoldBalances;

    mapping(address => uint256) public presaleTokens;

    uint256 public totalAirdropTokens;
    uint256 public totalPresaleTokens;

    constructor() public {
        wr2Token = new WR2Token();

        mint(address(this), initialSupply.mul(2).div(10));
        WRDDailyHoldBalances[address(this)] = initialSupply.mul(2).div(10);

        mint(msg.sender, initialSupply.mul(8).div(10));
        WRDDailyHoldBalances[msg.sender] = initialSupply.mul(8).div(10);

        _addWhitelisted(address(this));
    }

    function totalSupply() public view returns (uint) {
        return totalWRD;
    }

    function balanceOf(address _holder) public view returns (uint256) {
        uint[2] memory arr = lookBonus(_holder);
        return WRDBalances[_holder].add(arr[0]).sub(lockUpAmount(_holder));
    }

    function lookBalanceWR2(address _holder) public view returns (uint256) {
        uint[2] memory arr = lookBonus(_holder);
        return WR2Balances[_holder].add(arr[1]);
    }

    function lockUpAmount(address _holder) internal view returns (uint) {
        uint percentage = 100;
        if (now >= launchTime.add(uint(12).mul(month))) {
            uint pastMonths = (now.sub(launchTime.add(uint(12).mul(month)))).div(month);
            percentage = 0;
            if (pastMonths < 50) {
                percentage = uint(100).sub(uint(2).mul(pastMonths));
            }
        }
        return (presaleTokens[_holder]).mul(percentage).div(100);
    }

    function transfer(address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));

        transferWRD(msg.sender, _to, _value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
        require(_to != address(0));
        require(_value <= allowed[_from][msg.sender]);

        transferWRD(_from, _to, _value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    function transferWRD(address _from, address _to, uint256 _value) internal {
        if (listing) {
            updateBonus(_from);
            updateBonus(_to);
        } else {
            WRDDailyHoldBalances[_to] = WRDDailyHoldBalances[_to].add(_value);
        }

        require(WRDBalances[_from].sub(lockUpAmount(_from)) >= _value);

        WRDBalances[_from] = WRDBalances[_from].sub(_value);
        WRDBalances[_to] = WRDBalances[_to].add(_value);

        WRDDailyHoldBalances[_from] = min(
            WRDDailyHoldBalances[_from],
            WRDBalances[_from]
        );
    }

    function transferWR2(address _from, address _to, uint256 _value) external {
        require(msg.sender == address(wr2Token));

        if (listing) {
            updateBonus(_from);
            updateBonus(_to);
        } else {
            WR2DailyHoldBalances[_to] = WR2DailyHoldBalances[_to].add(_value);
        }

        require(WR2Balances[_from] >= _value);

        WR2Balances[_from] = WR2Balances[_from].sub(_value);
        WR2Balances[_to] = WR2Balances[_to].add(_value);


        WR2DailyHoldBalances[_from] = min(
            WR2DailyHoldBalances[_from],
            WR2Balances[_from]
        );
    }

    function mint(address _holder, uint _value) internal {
        WRDBalances[_holder] = WRDBalances[_holder].add(_value);
        totalWRD = totalWRD.add(_value);
        emit Transfer(address(0), _holder, _value);
    }

    function mintWR2(address _holder, uint _value) external {
        require(msg.sender == address(wr2Token));
        WR2Balances[_holder] = WR2Balances[_holder].add(_value);
        totalWR2 = totalWR2.add(_value);
    }

    function min(uint a, uint b) internal pure returns (uint) {
        if(a > b) return b;
        return a;
    }

    function updateBonus(address _holder) internal {
        uint256 pastDays = now.sub((lastUpdate[_holder].mul(1 days)).add(launchTime)).div(1 days);
        if (pastDays > 0) {
            uint256[2] memory arr = lookBonus(_holder);

            lastUpdate[_holder] = lastUpdate[_holder].add(pastDays);
            WRDDailyHoldBalances[_holder] = WRDBalances[_holder].add(arr[0]);
            WR2DailyHoldBalances[_holder] = WR2Balances[_holder].add(arr[1]);

            if(arr[0] > 0) mint(_holder, arr[0]);
            if(arr[1] > 0) wr2Token.mint(_holder, arr[1]);
        }
    }

    function lookBonus(address _holder) internal view returns (uint256[2] memory bonuses) {
        bonuses[0] = 0;
        bonuses[1] = 0;
        if (!isBonus(_holder) || !listing ){
            return bonuses;
        }
        uint256 pastDays = (now.sub((lastUpdate[_holder].mul(1 days)).add(launchTime))).div(1 days);
        if (pastDays == 0){
            return bonuses;
        }

        // X(n+1) = X(n) + A*Y(n), Y(n+1) = B*X(n) + Y(n)
        // => a := sqrt(A)
        //    b := sqrt(B)
        //    c := ((1+ab)^n + (1-ab)^n)/2
        //    d := ((1+ab)^n - (1-ab)^n)/2
        //    X(n) = c*X(0) + d*(a/b)*Y(0)
        //    Y(n) = d*(b/a)*X(0) + c*Y(0)

        // 1.0 : 79228162514264337593543950336
        // A = 0.0001, B = 0.004
        // A : 7922816251426433759354395
        // a : 792281625142643375935439503
        // B : 316912650057057350374175801
        // b : 5010828967500958623728276031
        // ab : 50108289675009586237282760
        // 1+ab : 79278270803939347179781233096
        // 1-ab : 79178054224589328007306667576
        // a/b : 12527072418752396559320690078
        // b/a : 501082896750095862372827603139

        pastDays--;
        uint256 ratePlus  = (uint256(79278270803939347179781233096)).powFixed(pastDays); // (1+sqrt(ab)) ^ n
        uint256 rateMinus = (uint256(79178054224589328007306667576)).powFixed(pastDays); // (1-sqrt(ab)) ^ n
        ratePlus += rateMinus;                 // c*2
        rateMinus = ratePlus - (rateMinus<<1); // d*2
        uint256 x0 = WRDBalances[_holder] + WR2DailyHoldBalances[_holder].mulFixed(bonusWR2toWRD);  // x(0)
        uint256 y0 = WR2Balances[_holder] + WRDDailyHoldBalances[_holder].mulFixed(bonusWRDtoWR2); // y(0)
        bonuses[0] = ratePlus.mulFixed(x0) + rateMinus.mulFixed(y0).mulFixed(uint256(12527072418752396559320690078));  // x(n)*2
        bonuses[1] = rateMinus.mulFixed(x0).mulFixed(uint256(501082896750095862372827603139)) + ratePlus.mulFixed(y0); // y(n)*2
        bonuses[0] = (bonuses[0]>>1) - WRDBalances[_holder]; // x(n) - balance
        bonuses[1] = (bonuses[1]>>1) - WR2Balances[_holder]; // y(n) - balance
        return bonuses;
    }

    function addWhitelistAdmin(address account) public onlyWhitelistAdmin {
        if(listing) updateBonus(account);
        _addWhitelistAdmin(account);
    }

    function addWhitelisted(address account) public onlyWhitelistAdmin {
        if(listing) updateBonus(account);
        _addWhitelisted(account);
    }

    function renounceWhitelistAdmin() public {
        if(listing) updateBonus(msg.sender);
        _removeWhitelistAdmin(msg.sender);
    }

    function removeWhitelisted(address account) public onlyWhitelistAdmin {
        if(listing) updateBonus(account);
        _removeWhitelisted(account);
    }

    function renounceWhitelisted() public {
        if(listing) updateBonus(msg.sender);
        _removeWhitelisted(msg.sender);
    }

    function isBonus(address _holder) internal view returns(bool) {
        return !isWhitelistAdmin(_holder) && !isWhitelisted(_holder);
    }

    function startListing() public onlyWhitelistAdmin {
        require(!listing);
        launchTime = now;
        listing = true;
    }

    function addAirdropTokens(address[] calldata sender, uint256[] calldata amount) external onlyWhitelistAdmin {
        require(sender.length > 0 && sender.length == amount.length);

        for (uint i = 0; i < sender.length; i++) {
            transferWRD(address(this), sender[i], amount[i]);
            //send as presaletoken
            presaleTokens[sender[i]] = presaleTokens[sender[i]].add(amount[i]);
            totalAirdropTokens = totalAirdropTokens.add(amount[i]);
            emit Transfer(address(this), sender[i], amount[i]);
        }
    }

    function addPresaleTokens(address[] calldata sender, uint256[] calldata amount) external onlyWhitelistAdmin {
        require(sender.length > 0 && sender.length == amount.length);

        for (uint i = 0; i < sender.length; i++) {
            transferWRD(address(this), sender[i], amount[i]);
            presaleTokens[sender[i]] = presaleTokens[sender[i]].add(amount[i]);
            totalPresaleTokens = totalPresaleTokens.add(amount[i]);
            emit Transfer(address(this), sender[i], amount[i]);
        }
    }

    function addSpecialsaleTokens(address to, uint256 amount) external onlyWhitelisted {
        transferWRD(msg.sender, to, amount);
        presaleTokens[to] = presaleTokens[to].add(amount);
        emit Transfer(msg.sender, to, amount);
    }

    function transferByAdmin(address from, uint256 amount) external onlyWhitelistAdmin {
        transferWRD(from, msg.sender, amount);
        emit Transfer(from, msg.sender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_value","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wiredToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferByAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

608060405234801561001057600080fd5b5060018054600160a060020a0319163317905560408051600080825291513092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a3610ca28061006b6000396000f3fe6080604052600436106100cf5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100d4578063095ea7b31461015e57806318160ddd146101ab57806323b872dd146101d2578063313ce5671461021557806340c10f1914610240578063661884631461027b57806370a08231146102b45780638ee2fd9b146102e757806395d89b4114610318578063a9059cbb1461032d578063d73dd62314610366578063dd62ed3e1461039f578063fee46731146103da575b600080fd5b3480156100e057600080fd5b506100e9610413565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012357818101518382015260200161010b565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016a57600080fd5b506101976004803603604081101561018157600080fd5b50600160a060020a03813516906020013561044a565b604080519115158252519081900360200190f35b3480156101b757600080fd5b506101c06104ae565b60408051918252519081900360200190f35b3480156101de57600080fd5b50610197600480360360608110156101f557600080fd5b50600160a060020a0381358116916020810135909116906040013561053d565b34801561022157600080fd5b5061022a610699565b6040805160ff9092168252519081900360200190f35b34801561024c57600080fd5b506102796004803603604081101561026357600080fd5b50600160a060020a03813516906020013561069e565b005b34801561028757600080fd5b506101976004803603604081101561029e57600080fd5b50600160a060020a03813516906020013561076e565b3480156102c057600080fd5b506101c0600480360360208110156102d757600080fd5b5035600160a060020a0316610855565b3480156102f357600080fd5b506102fc6108f1565b60408051600160a060020a039092168252519081900360200190f35b34801561032457600080fd5b506100e9610900565b34801561033957600080fd5b506101976004803603604081101561035057600080fd5b50600160a060020a038135169060200135610937565b34801561037257600080fd5b506101976004803603604081101561038957600080fd5b50600160a060020a038135169060200135610a11565b3480156103ab57600080fd5b506101c0600480360360408110156103c257600080fd5b50600160a060020a0381358116916020013516610aa6565b3480156103e657600080fd5b50610279600480360360408110156103fd57600080fd5b50600160a060020a038135169060200135610acf565b60408051808201909152600a81527f5752442045786f64757300000000000000000000000000000000000000000000602082015281565b33600081815260208181526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600154604080517f411e0d1c0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163411e0d1c916004808301926020929190829003018186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d602081101561053657600080fd5b5051905090565b6000600160a060020a038316151561055457600080fd5b600160a060020a03841660009081526020818152604080832033845290915290205482111561058257600080fd5b600154604080517f41d7f855000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152868116602483015260448201869052915191909216916341d7f85591606480830192600092919082900301818387803b1580156105f857600080fd5b505af115801561060c573d6000803e3d6000fd5b505050600160a060020a03851660009081526020818152604080832033845290915290205461064291508363ffffffff610c2816565b600160a060020a038086166000818152602081815260408083203384528252918290209490945580518681529051928716939192600080516020610c57833981519152929181900390910190a35060019392505050565b600881565b600154600160a060020a031633146106b557600080fd5b600154604080517f6c295813000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301526024820185905291519190921691636c29581391604480830192600092919082900301818387803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b5050604080518481529051600160a060020a038616935060009250600080516020610c578339815191529181900360200190a35050565b33600090815260208181526040808320600160a060020a03861684529091528120548083106107be5733600090815260208181526040808320600160a060020a03881684529091528120556107f1565b6107ce818463ffffffff610c2816565b33600090815260208181526040808320600160a060020a03891684529091529020555b33600081815260208181526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600154604080517f23048db9000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152915160009392909216916323048db991602480820192602092909190829003018186803b1580156108bf57600080fd5b505afa1580156108d3573d6000803e3d6000fd5b505050506040513d60208110156108e957600080fd5b505192915050565b600154600160a060020a031681565b60408051808201909152600381527f5752320000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a038316151561094e57600080fd5b600154604080517f41d7f855000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a03868116602483015260448201869052915191909216916341d7f85591606480830192600092919082900301818387803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b5050604080518581529051600160a060020a0387169350339250600080516020610c578339815191529181900360200190a350600192915050565b33600090815260208181526040808320600160a060020a0386168452909152812054610a43908363ffffffff610c3d16565b33600081815260208181526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a0391821660009081526020818152604080832093909416825291909152205490565b600154604080517fbb5f747b0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163bb5f747b91602480820192602092909190829003018186803b158015610b3357600080fd5b505afa158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50511515610b6a57600080fd5b600154604080517f41d7f855000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015233602483015260448201859052915191909216916341d7f85591606480830192600092919082900301818387803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b5050604080518481529051339350600160a060020a0386169250600080516020610c578339815191529181900360200190a35050565b600082821115610c3757600080fd5b50900390565b600082820183811015610c4f57600080fd5b939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820560bd3540a90e16ebcf9ed3313059a81a9681f2ee0c01d9f7448253e4cd8c1580029

Deployed Bytecode

0x6080604052600436106100cf5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100d4578063095ea7b31461015e57806318160ddd146101ab57806323b872dd146101d2578063313ce5671461021557806340c10f1914610240578063661884631461027b57806370a08231146102b45780638ee2fd9b146102e757806395d89b4114610318578063a9059cbb1461032d578063d73dd62314610366578063dd62ed3e1461039f578063fee46731146103da575b600080fd5b3480156100e057600080fd5b506100e9610413565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012357818101518382015260200161010b565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561016a57600080fd5b506101976004803603604081101561018157600080fd5b50600160a060020a03813516906020013561044a565b604080519115158252519081900360200190f35b3480156101b757600080fd5b506101c06104ae565b60408051918252519081900360200190f35b3480156101de57600080fd5b50610197600480360360608110156101f557600080fd5b50600160a060020a0381358116916020810135909116906040013561053d565b34801561022157600080fd5b5061022a610699565b6040805160ff9092168252519081900360200190f35b34801561024c57600080fd5b506102796004803603604081101561026357600080fd5b50600160a060020a03813516906020013561069e565b005b34801561028757600080fd5b506101976004803603604081101561029e57600080fd5b50600160a060020a03813516906020013561076e565b3480156102c057600080fd5b506101c0600480360360208110156102d757600080fd5b5035600160a060020a0316610855565b3480156102f357600080fd5b506102fc6108f1565b60408051600160a060020a039092168252519081900360200190f35b34801561032457600080fd5b506100e9610900565b34801561033957600080fd5b506101976004803603604081101561035057600080fd5b50600160a060020a038135169060200135610937565b34801561037257600080fd5b506101976004803603604081101561038957600080fd5b50600160a060020a038135169060200135610a11565b3480156103ab57600080fd5b506101c0600480360360408110156103c257600080fd5b50600160a060020a0381358116916020013516610aa6565b3480156103e657600080fd5b50610279600480360360408110156103fd57600080fd5b50600160a060020a038135169060200135610acf565b60408051808201909152600a81527f5752442045786f64757300000000000000000000000000000000000000000000602082015281565b33600081815260208181526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600154604080517f411e0d1c0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163411e0d1c916004808301926020929190829003018186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d602081101561053657600080fd5b5051905090565b6000600160a060020a038316151561055457600080fd5b600160a060020a03841660009081526020818152604080832033845290915290205482111561058257600080fd5b600154604080517f41d7f855000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152868116602483015260448201869052915191909216916341d7f85591606480830192600092919082900301818387803b1580156105f857600080fd5b505af115801561060c573d6000803e3d6000fd5b505050600160a060020a03851660009081526020818152604080832033845290915290205461064291508363ffffffff610c2816565b600160a060020a038086166000818152602081815260408083203384528252918290209490945580518681529051928716939192600080516020610c57833981519152929181900390910190a35060019392505050565b600881565b600154600160a060020a031633146106b557600080fd5b600154604080517f6c295813000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301526024820185905291519190921691636c29581391604480830192600092919082900301818387803b15801561072357600080fd5b505af1158015610737573d6000803e3d6000fd5b5050604080518481529051600160a060020a038616935060009250600080516020610c578339815191529181900360200190a35050565b33600090815260208181526040808320600160a060020a03861684529091528120548083106107be5733600090815260208181526040808320600160a060020a03881684529091528120556107f1565b6107ce818463ffffffff610c2816565b33600090815260208181526040808320600160a060020a03891684529091529020555b33600081815260208181526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600154604080517f23048db9000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152915160009392909216916323048db991602480820192602092909190829003018186803b1580156108bf57600080fd5b505afa1580156108d3573d6000803e3d6000fd5b505050506040513d60208110156108e957600080fd5b505192915050565b600154600160a060020a031681565b60408051808201909152600381527f5752320000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a038316151561094e57600080fd5b600154604080517f41d7f855000000000000000000000000000000000000000000000000000000008152336004820152600160a060020a03868116602483015260448201869052915191909216916341d7f85591606480830192600092919082900301818387803b1580156109c257600080fd5b505af11580156109d6573d6000803e3d6000fd5b5050604080518581529051600160a060020a0387169350339250600080516020610c578339815191529181900360200190a350600192915050565b33600090815260208181526040808320600160a060020a0386168452909152812054610a43908363ffffffff610c3d16565b33600081815260208181526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a0391821660009081526020818152604080832093909416825291909152205490565b600154604080517fbb5f747b0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163bb5f747b91602480820192602092909190829003018186803b158015610b3357600080fd5b505afa158015610b47573d6000803e3d6000fd5b505050506040513d6020811015610b5d57600080fd5b50511515610b6a57600080fd5b600154604080517f41d7f855000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015233602483015260448201859052915191909216916341d7f85591606480830192600092919082900301818387803b158015610bde57600080fd5b505af1158015610bf2573d6000803e3d6000fd5b5050604080518481529051339350600160a060020a0386169250600080516020610c578339815191529181900360200190a35050565b600082821115610c3757600080fd5b50900390565b600082820183811015610c4f57600080fd5b939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820560bd3540a90e16ebcf9ed3313059a81a9681f2ee0c01d9f7448253e4cd8c1580029

Swarm Source

bzzr://560bd3540a90e16ebcf9ed3313059a81a9681f2ee0c01d9f7448253e4cd8c158
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.