Token FunFair

 

Overview [ERC-20]

Price
$0.01 @ 0.000006 Eth (-0.49%)
Fully Diluted Market Cap
Max Total Supply:
10,962,808,529.3980255 FUN

Holders:
87,602 (0.00%)

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

FunFair is a decentralised gaming platform powered by Ethereum smart contracts

Profitability / Loss

Since Initial Offer Price
:$0.01 4.41%

Market

Volume (24H):$2,901,177.00
Market Capitalization:$77,330,527.00
Circulating Supply:10,598,879,189.00 FUN
Market Data Source: Coinmarketcap

ICO Information

ICO Start Date : Jun 22, 2017   
Total Cap : $26,000,000
ICO Price  : $0.007 
Country : UK

# Exchange Pair Price  24H Volume % Volume
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0xe2ace83f9acfc236bd95481045990bfa6b711e16

Contract Name:
Token

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-07-06
*/

pragma solidity >=0.4.4;

//from Zeppelin
contract SafeMath {
    function safeMul(uint a, uint b) internal returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function safeSub(uint a, uint b) internal returns (uint) {
        assert(b <= a);
        return a - b;
    }

    function safeAdd(uint a, uint b) internal returns (uint) {
        uint c = a + b;
        assert(c>=a && c>=b);
        return c;
    }

    function assert(bool assertion) internal {
        if (!assertion) throw;
    }
}

contract Owned {
    address public owner;

    function Owned() {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        if (msg.sender != owner) throw;
        _;
    }

    address newOwner;

    function changeOwner(address _newOwner) onlyOwner {
        newOwner = _newOwner;
    }

    function acceptOwnership() {
        if (msg.sender == newOwner) {
            owner = newOwner;
        }
    }
}

contract Finalizable is Owned {
    bool public finalized;

    function finalize() onlyOwner {
        finalized = true;
    }

    modifier notFinalized() {
        if (finalized) throw;
        _;
    }
}

contract IToken {
    function transfer(address _to, uint _value) returns (bool);
    function balanceOf(address owner) returns(uint);
}

contract TokenReceivable is Owned {
    event logTokenTransfer(address token, address to, uint amount);

    function claimTokens(address _token, address _to) onlyOwner returns (bool) {
        IToken token = IToken(_token);
        uint balance = token.balanceOf(this);
        if (token.transfer(_to, balance)) {
            logTokenTransfer(_token, _to, balance);
            return true;
        }
        return false;
    }
}

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

contract Token is Finalizable, TokenReceivable, SafeMath, EventDefinitions {

    string public name = "FunFair";
    uint8 public decimals = 8;
    string public symbol = "FUN";

    Controller controller;
    address owner;

    modifier onlyController() {
        assert(msg.sender == address(controller));
        _;
    }

    function setController(address _c) onlyOwner notFinalized {
        controller = Controller(_c);
    }

    function balanceOf(address a) constant returns (uint) {
        return controller.balanceOf(a);
    }

    function totalSupply() constant returns (uint) {
        return controller.totalSupply();
    }

    function allowance(address _owner, address _spender) constant returns (uint) {
        return controller.allowance(_owner, _spender);
    }

    function transfer(address _to, uint _value)
    onlyPayloadSize(2)
    returns (bool success) {
       success = controller.transfer(msg.sender, _to, _value);
        if (success) {
            Transfer(msg.sender, _to, _value);
        }
    }

    function transferFrom(address _from, address _to, uint _value)
    onlyPayloadSize(3)
    returns (bool success) {
       success = controller.transferFrom(msg.sender, _from, _to, _value);
        if (success) {
            Transfer(_from, _to, _value);
        }
    }

    function approve(address _spender, uint _value)
    onlyPayloadSize(2)
    returns (bool success) {
        //promote safe user behavior
        if (controller.allowance(msg.sender, _spender) > 0) throw;

        success = controller.approve(msg.sender, _spender, _value);
        if (success) {
            Approval(msg.sender, _spender, _value);
        }
    }

    function increaseApproval (address _spender, uint _addedValue)
    onlyPayloadSize(2)
    returns (bool success) {
        success = controller.increaseApproval(msg.sender, _spender, _addedValue);
        if (success) {
            uint newval = controller.allowance(msg.sender, _spender);
            Approval(msg.sender, _spender, newval);
        }
    }

    function decreaseApproval (address _spender, uint _subtractedValue)
    onlyPayloadSize(2)
    returns (bool success) {
        success = controller.decreaseApproval(msg.sender, _spender, _subtractedValue);
        if (success) {
            uint newval = controller.allowance(msg.sender, _spender);
            Approval(msg.sender, _spender, newval);
        }
    }

    modifier onlyPayloadSize(uint numwords) {
        assert(msg.data.length >= numwords * 32 + 4);
        _;
    }

    function burn(uint _amount) {
        controller.burn(msg.sender, _amount);
        Transfer(msg.sender, 0x0, _amount);
    }

    function controllerTransfer(address _from, address _to, uint _value)
    onlyController {
        Transfer(_from, _to, _value);
    }

    function controllerApprove(address _owner, address _spender, uint _value)
    onlyController {
        Approval(_owner, _spender, _value);
    }

    // multi-approve, multi-transfer

    bool public multilocked;

    modifier notMultilocked {
        assert(!multilocked);
        _;
    }

    //do we want lock permanent? I think so.
    function lockMultis() onlyOwner {
        multilocked = true;
    }

    // multi functions just issue events, to fix initial event history

    function multiTransfer(uint[] bits) onlyOwner notMultilocked {
        if (bits.length % 3 != 0) throw;
        for (uint i=0; i<bits.length; i += 3) {
            address from = address(bits[i]);
            address to = address(bits[i+1]);
            uint amount = bits[i+2];
            Transfer(from, to, amount);
        }
    }

    function multiApprove(uint[] bits) onlyOwner notMultilocked {
        if (bits.length % 3 != 0) throw;
        for (uint i=0; i<bits.length; i += 3) {
            address owner = address(bits[i]);
            address spender = address(bits[i+1]);
            uint amount = bits[i+2];
            Approval(owner, spender, amount);
        }
    }

    string public motd;
    event Motd(string message);
    function setMotd(string _m) onlyOwner {
        motd = _m;
        Motd(_m);
    }
}

contract Controller is Owned, Finalizable {
    Ledger public ledger;
    address public token;

    function setToken(address _token) onlyOwner {
        token = _token;
    }

    function setLedger(address _ledger) onlyOwner {
        ledger = Ledger(_ledger);
    }

    modifier onlyToken() {
        if (msg.sender != token) throw;
        _;
    }

    function totalSupply() constant returns (uint) {
        return ledger.totalSupply();
    }

    function balanceOf(address _a) onlyToken constant returns (uint) {
        return Ledger(ledger).balanceOf(_a);
    }

    function allowance(address _owner, address _spender)
    onlyToken constant returns (uint) {
        return ledger.allowance(_owner, _spender);
    }

    function transfer(address _from, address _to, uint _value)
    onlyToken
    returns (bool success) {
        return ledger.transfer(_from, _to, _value);
    }

    function transferFrom(address _spender, address _from, address _to, uint _value)
    onlyToken
    returns (bool success) {
        return ledger.transferFrom(_spender, _from, _to, _value);
    }

    function approve(address _owner, address _spender, uint _value)
    onlyToken
    returns (bool success) {
        return ledger.approve(_owner, _spender, _value);
    }

    function increaseApproval (address _owner, address _spender, uint _addedValue)
    onlyToken
    returns (bool success) {
        return ledger.increaseApproval(_owner, _spender, _addedValue);
    }

    function decreaseApproval (address _owner, address _spender, uint _subtractedValue)
    onlyToken
    returns (bool success) {
        return ledger.decreaseApproval(_owner, _spender, _subtractedValue);
    }


    function burn(address _owner, uint _amount) onlyToken {
        ledger.burn(_owner, _amount);
    }
}

contract Ledger is Owned, SafeMath, Finalizable {
    address public controller;
    mapping(address => uint) public balanceOf;
    mapping (address => mapping (address => uint)) public allowance;
    uint public totalSupply;

    function setController(address _controller) onlyOwner notFinalized {
        controller = _controller;
    }

    modifier onlyController() {
        if (msg.sender != controller) throw;
        _;
    }

    function transfer(address _from, address _to, uint _value)
    onlyController
    returns (bool success) {
        if (balanceOf[_from] < _value) return false;

        balanceOf[_from] = safeSub(balanceOf[_from], _value);
        balanceOf[_to] = safeAdd(balanceOf[_to], _value);
        return true;
    }

    function transferFrom(address _spender, address _from, address _to, uint _value)
    onlyController
    returns (bool success) {
        if (balanceOf[_from] < _value) return false;

        var allowed = allowance[_from][_spender];
        if (allowed < _value) return false;

        balanceOf[_to] = safeAdd(balanceOf[_to], _value);
        balanceOf[_from] = safeSub(balanceOf[_from], _value);
        allowance[_from][_spender] = safeSub(allowed, _value);
        return true;
    }

    function approve(address _owner, address _spender, uint _value)
    onlyController
    returns (bool success) {
        //require user to set to zero before resetting to nonzero
        if ((_value != 0) && (allowance[_owner][_spender] != 0)) {
            return false;
        }

        allowance[_owner][_spender] = _value;
        return true;
    }

    function increaseApproval (address _owner, address _spender, uint _addedValue)
    onlyController
    returns (bool success) {
        uint oldValue = allowance[_owner][_spender];
        allowance[_owner][_spender] = safeAdd(oldValue, _addedValue);
        return true;
    }

    function decreaseApproval (address _owner, address _spender, uint _subtractedValue)
    onlyController
    returns (bool success) {
        uint oldValue = allowance[_owner][_spender];
        if (_subtractedValue > oldValue) {
            allowance[_owner][_spender] = 0;
        } else {
            allowance[_owner][_spender] = safeSub(oldValue, _subtractedValue);
        }
        return true;
    }

    event LogMint(address indexed owner, uint amount);
    event LogMintingStopped();

    function mint(address _a, uint _amount) onlyOwner mintingActive {
        balanceOf[_a] += _amount;
        totalSupply += _amount;
        LogMint(_a, _amount);
    }

    bool public mintingStopped;

    function stopMinting() onlyOwner {
        mintingStopped = true;
        LogMintingStopped();
    }

    modifier mintingActive() {
        if (mintingStopped) throw;
        _;
    }

    function burn(address _owner, uint _amount) onlyController {
        balanceOf[_owner] = safeSub(balanceOf[_owner], _amount);
        totalSupply = safeSub(totalSupply, _amount);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"multilocked","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"bits","type":"uint256[]"}],"name":"multiApprove","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"motd","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_m","type":"string"}],"name":"setMotd","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"}],"name":"claimTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"a","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"lockMultis","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"controllerApprove","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_c","type":"address"}],"name":"setController","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"controllerTransfer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"bits","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"message","type":"string"}],"name":"Motd","type":"event"},{"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"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"logTokenTransfer","type":"event"}]

60a0604052600760608190527f46756e46616972000000000000000000000000000000000000000000000000006080908152620000409160029190620000b7565b506003805460ff19166008178155604080518082019091528181527f46554e00000000000000000000000000000000000000000000000000000000006020909101908152620000939160049190620000b7565b505b60008054600160a060020a03191633600160a060020a03161790555b62000161565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000fa57805160ff19168380011785556200012a565b828001600101855582156200012a579182015b828111156200012a5782518255916020019190600101906200010d565b5b50620001399291506200013d565b5090565b6200015e91905b8082111562000139576000815560010162000144565b5090565b90565b6118dd80620001716000396000f300606060405236156101435763ffffffff60e060020a60003504166306fdde038114610145578063095ea7b3146101d5578063138875921461020857806318160ddd1461022c57806323b872dd1461024e578063313ce5671461028757806342966c68146102ad5780634bb278f3146102c25780635a53fe20146102d45780635aab4ac8146103295780635fe59b9d146103b9578063661884631461041157806369ffa08a1461044457806370a082311461047a57806379ba5097146104a8578063870bfc75146104ba5780638da5cb5b146104cc5780638e339b66146104f857806392eefe9b1461051f57806395d89b411461053d5780639b504387146105cd578063a6f9dae1146105f4578063a9059cbb14610612578063b33fcc7a14610645578063b3f05b971461069a578063d73dd623146106be578063dd62ed3e146106f1575bfe5b341561014d57fe5b610155610725565b60408051602080825283518183015283519192839290830191850190808383821561019b575b80518252602083111561019b57601f19909201916020918201910161017b565b505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101dd57fe5b6101f4600160a060020a03600435166024356107b0565b604080519115158252519081900360200190f35b341561021057fe5b6101f4610922565b604080519115158252519081900360200190f35b341561023457fe5b61023c610932565b60408051918252519081900360200190f35b341561025657fe5b6101f4600160a060020a03600435811690602435166044356109b0565b604080519115158252519081900360200190f35b341561028f57fe5b610297610aa7565b6040805160ff9092168252519081900360200190f35b34156102b557fe5b6102c0600435610ab0565b005b34156102ca57fe5b6102c0610b60565b005b34156102dc57fe5b6102c0600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610ba495505050505050565b005b341561033157fe5b610155610ca1565b60408051602080825283518183015283519192839290830191850190808383821561019b575b80518252602083111561019b57601f19909201916020918201910161017b565b505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103c157fe5b6102c0600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843750949650610d2f95505050505050565b005b341561041957fe5b6101f4600160a060020a0360043516602435610e0a565b604080519115158252519081900360200190f35b341561044c57fe5b6101f4600160a060020a0360043581169060243516610f5c565b604080519115158252519081900360200190f35b341561048257fe5b61023c600160a060020a03600435166110de565b60408051918252519081900360200190f35b34156104b057fe5b6102c0611169565b005b34156104c257fe5b6102c06111b3565b005b34156104d457fe5b6104dc6111f7565b60408051600160a060020a039092168252519081900360200190f35b341561050057fe5b6102c0600160a060020a0360043581169060243516604435611206565b005b341561052757fe5b6102c0600160a060020a0360043516611261565b005b341561054557fe5b6101556112c3565b60408051602080825283518183015283519192839290830191850190808383821561019b575b80518252602083111561019b57601f19909201916020918201910161017b565b505050905090810190601f1680156101c75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156105d557fe5b6102c0600160a060020a0360043581169060243516604435611351565b005b34156105fc57fe5b6102c0600160a060020a03600435166113ac565b005b341561061a57fe5b6101f4600160a060020a03600435166024356113f5565b604080519115158252519081900360200190f35b341561064d57fe5b6102c06004808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506114e395505050505050565b005b34156106a257fe5b6101f46115e0565b604080519115158252519081900360200190f35b34156106c657fe5b6101f4600160a060020a03600435166024356115f0565b604080519115158252519081900360200190f35b34156106f957fe5b61023c600160a060020a0360043581169060243516611742565b60408051918252519081900360200190f35b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b820191906000526020600020905b81548152906001019060200180831161078b57829003601f168201915b505050505081565b600060026107c160443610156117c0565b6005546040805160006020918201819052825160e160020a636eb1769f028152600160a060020a033381166004830152898116602483015293519194939093169263dd62ed3e92604480830193919282900301818787803b151561082157fe5b6102c65a03f1151561082f57fe5b5050506040518051905011156108455760006000fd5b600554604080516000602091820181905282517fe1f21c67000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301528981166024830152604482018990529351939094169363e1f21c67936064808301949391928390030190829087803b15156108c257fe5b6102c65a03f115156108d057fe5b50506040515192505081156109195783600160a060020a031633600160a060020a0316600080516020611892833981519152856040518082815260200191505060405180910390a35b5b5b5092915050565b60065460a060020a900460ff1681565b600554604080516000602091820181905282517f18160ddd00000000000000000000000000000000000000000000000000000000815292519093600160a060020a0316926318160ddd92600480830193919282900301818787803b151561099557fe5b6102c65a03f115156109a357fe5b5050604051519150505b90565b600060036109c160643610156117c0565b600554604080516000602091820181905282517f15dacbea000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301528a81166024830152898116604483015260648201899052935193909416936315dacbea936084808301949391928390030190829087803b1515610a4657fe5b6102c65a03f11515610a5457fe5b5050604051519250508115610a9d5783600160a060020a031685600160a060020a0316600080516020611872833981519152856040518082815260200191505060405180910390a35b5b5b509392505050565b60035460ff1681565b600554604080517f9dc29fac000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301526024820185905291519190921691639dc29fac91604480830192600092919082900301818387803b1515610b1a57fe5b6102c65a03f11515610b2857fe5b505050600033600160a060020a0316600080516020611872833981519152836040518082815260200191505060405180910390a35b50565b60005433600160a060020a03908116911614610b7c5760006000fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b6000805481908190819033600160a060020a03908116911614610bc75760006000fd5b600654610bde9060a060020a900460ff16156117c0565b84516003905b0615610bf05760006000fd5b600093505b8451841015610c97578484815181101515610c0c57fe5b9060200190602002015192508484600101815181101515610c2957fe5b9060200190602002015191508484600201815181101515610c4657fe5b90602001906020020151905081600160a060020a031683600160a060020a0316600080516020611892833981519152836040518082815260200191505060405180910390a35b600384019350610bf5565b5b5b5b5050505050565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b820191906000526020600020905b81548152906001019060200180831161078b57829003601f168201915b505050505081565b60005433600160a060020a03908116911614610d4b5760006000fd5b8051610d5e9060079060208401906117d1565b507f6e7666d68b6b7c619b2fe5a2c3dd0564bf3e02b0508b217d7a28ce5805583eab816040518080602001828103825283818151815260200191508051906020019080838360008314610dcc575b805182526020831115610dcc57601f199092019160209182019101610dac565b505050905090810190601f168015610df85780820380516001836020036101000a031916815260200191505b509250505060405180910390a15b5b50565b6000806002610e1c60443610156117c0565b600554604080516000602091820181905282517ff019c267000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301528a81166024830152604482018a90529351939094169363f019c267936064808301949391928390030190829087803b1515610e9957fe5b6102c65a03f11515610ea757fe5b5050604051519350508215610f52576005546040805160006020918201819052825160e160020a636eb1769f028152600160a060020a0333811660048301528a811660248301529351939094169363dd62ed3e936044808301949391928390030190829087803b1515610f1657fe5b6102c65a03f11515610f2457fe5b505060405180519350600160a060020a03808816925033169060008051602061189283398151915290602090a35b5b5b505092915050565b600080548190819033600160a060020a03908116911614610f7d5760006000fd5b84915081600160a060020a03166370a08231306000604051602001526040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1515610fe057fe5b6102c65a03f11515610fee57fe5b50505060405180519050905081600160a060020a031663a9059cbb85836000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b151561106257fe5b6102c65a03f1151561107057fe5b5050604051511590506110d05760408051600160a060020a0380881682528616602082015280820183905290517f977a8f1bdcf5f444d404662ea2c090d707ebcef1be61b37fe6ce74d0c6288fb89181900360600190a160019250610f52565b600092505b5b505092915050565b600554604080516000602091820181905282517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301529351919493909316926370a0823192602480830193919282900301818787803b151561114c57fe5b6102c65a03f1151561115a57fe5b5050604051519150505b919050565b60015433600160a060020a0390811691161415610ba1576001546000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790555b5b565b60005433600160a060020a039081169116146111cf5760006000fd5b6006805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b600054600160a060020a031681565b6005546112219033600160a060020a039081169116146117c0565b81600160a060020a031683600160a060020a0316600080516020611892833981519152836040518082815260200191505060405180910390a35b5b505050565b60005433600160a060020a0390811691161461127d5760006000fd5b60015460a060020a900460ff16156112955760006000fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5b50565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156107a85780601f1061077d576101008083540402835291602001916107a8565b820191906000526020600020905b81548152906001019060200180831161078b57829003601f168201915b505050505081565b60055461136c9033600160a060020a039081169116146117c0565b81600160a060020a031683600160a060020a0316600080516020611872833981519152836040518082815260200191505060405180910390a35b5b505050565b60005433600160a060020a039081169116146113c85760006000fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b6000600261140660443610156117c0565b600554604080516000602091820181905282517fbeabacc8000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301528981166024830152604482018990529351939094169363beabacc8936064808301949391928390030190829087803b151561148357fe5b6102c65a03f1151561149157fe5b50506040515192505081156109195783600160a060020a031633600160a060020a0316600080516020611872833981519152856040518082815260200191505060405180910390a35b5b5b5092915050565b6000805481908190819033600160a060020a039081169116146115065760006000fd5b60065461151d9060a060020a900460ff16156117c0565b84516003905b061561152f5760006000fd5b600093505b8451841015610c9757848481518110151561154b57fe5b906020019060200201519250848460010181518110151561156857fe5b906020019060200201519150848460020181518110151561158557fe5b90602001906020020151905081600160a060020a031683600160a060020a0316600080516020611872833981519152836040518082815260200191505060405180910390a35b600384019350611534565b5b5b5b5050505050565b60015460a060020a900460ff1681565b600080600261160260443610156117c0565b600554604080516000602091820181905282517fbcdd6121000000000000000000000000000000000000000000000000000000008152600160a060020a0333811660048301528a81166024830152604482018a90529351939094169363bcdd6121936064808301949391928390030190829087803b1515610e9957fe5b6102c65a03f11515610ea757fe5b5050604051519350508215610f52576005546040805160006020918201819052825160e160020a636eb1769f028152600160a060020a0333811660048301528a811660248301529351939094169363dd62ed3e936044808301949391928390030190829087803b1515610f1657fe5b6102c65a03f11515610f2457fe5b505060405180519350600160a060020a03808816925033169060008051602061189283398151915290602090a35b5b5b505092915050565b6005546040805160006020918201819052825160e160020a636eb1769f028152600160a060020a038781166004830152868116602483015293519194939093169263dd62ed3e92604480830193919282900301818787803b15156117a257fe5b6102c65a03f115156117b057fe5b5050604051519150505b92915050565b801515610b5d5760006000fd5b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061181257805160ff191683800117855561183f565b8280016001018555821561183f579182015b8281111561183f578251825591602001919060010190611824565b5b5061184c929150611850565b5090565b6109ad91905b8082111561184c5760008155600101611856565b5090565b905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a165627a7a723058202954fbb4a98158ea14c57f4b31404ee09742ef579a9c6d09f0abb5b62e9c5da80029

Swarm Source

bzzr://2954fbb4a98158ea14c57f4b31404ee09742ef579a9c6d09f0abb5b62e9c5da8

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.