Contract 0xde2b11b71ad892ac3e47ce99d107788d65fe764e

 

Contract Overview

Balance:
457.374978695961202214 Ether

EtherValue:
$56,261.70 (@ $123.01/ETH)
TxHash Block Age From To Value [TxFee]
0xc12f5b8aecf9670b3a20ff30322ee5aaa6b6fb8130f20658f12d42b7d6887f0172131033 days 6 hrs ago0x796d86a85b371c097700c54de2499a4cb01d0344  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.0001568484
0x3a06e26ff935bae9081c61dbc6e81ec23a1bda02d906dc73809f5cd98a70b19672130993 days 6 hrs ago0x796d86a85b371c097700c54de2499a4cb01d0344  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.00028845
0xd844f74f83e7393401974490c076470e8f20e1787faaf4c98009355f0b4def0672130973 days 6 hrs ago0x796d86a85b371c097700c54de2499a4cb01d0344  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000261414
0x24320543001117f225d3561dffb06998f13dddbbc2e266e1bc6d33c8604d6586715632015 days 6 hrs ago0x12f4cfc4607422648a569c8764ce2c4e6f1b61d0  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000174276
0x12af4ead89ab49136647e294c93bcde81c2b3e08705f68eeb941d92f8319f884715631415 days 6 hrs ago0x12f4cfc4607422648a569c8764ce2c4e6f1b61d0  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000192556
0x86f0b10d18b75f979f9de2437bda574b41a647909fa38078b6c23f725b4ba034712822720 days 22 hrs ago0x84ecb387395a1be65e133c75ff9e5fcc6f756db3  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.00011887
0x248384e60c66e00fdb02b4e8201cac96669b05d09594ba1907f20cd47d1ebd04705515134 days 12 hrs ago0xec31176d4df0509115abc8065a8a3f8275aaff2b  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000383803
0x06544124ba4d89cd61d66811d9a38ff9bb70fd60a9be8fbef5f08423070dcd6e704937435 days 12 hrs ago0x097254e687e480b914ef83fa9d5089ed83fa3319  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000522828
0x9856f13442b1a406071b98d7cab49489f04b3cb29e6c24bebe64ccdedc20b881704937035 days 12 hrs ago0x097254e687e480b914ef83fa9d5089ed83fa3319  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.00028845
0x9c3d83947a213387896b4183d7d7b7dc9716ecdfa768c6f790e0f829805ec8ee703586137 days 23 hrs ago0x2ca4f41f32093dd8faea49a63dab073123087d2c  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000327641072
0x16b4d45aea8ef3a478fb2260447fb0cc77f8a3da0358271b3739e6e7677b34cd703162438 days 17 hrs ago0x10edd43fced236ffd490fe60bd4331a912fbc93d  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000130707
0xedbc9f1b6bf9e1445a30a4bdcbc8e76bd246a1381e7c16001999d55d7c886e7f703161238 days 17 hrs ago0x10edd43fced236ffd490fe60bd4331a912fbc93d  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000144225
0x75f70a1d2a09b41775dcee65eb745607787ad624c642325c8f9dd7cf50258674702471939 days 22 hrs ago0xfea0904acc8df0f3288b6583f60b86c36ea52acd  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.00005707539
0x435b43879d8436e9510279c64460ea4121dd1b66e4d967624e0e65b09a905566701802141 days 3 hrs ago0xec31176d4df0509115abc8065a8a3f8275aaff2b  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000309064
0xe59b832f268ecb207cf866ef837daf96b8596a26e41e8eb5bda88f0c410abad5701378541 days 21 hrs ago0x978fe0cc6923af50b83f9a850206121160867419  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.0001045656
0x924ed5f57a4273c62ac027c50385697da0500d55b90aed625f50c127a551fc8a701378041 days 21 hrs ago0x978fe0cc6923af50b83f9a850206121160867419  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.00011538
0x8a6a32992840f25d4e8565485802ade1f6a934748d41468a85fe0ada1cce92f7700796642 days 22 hrs ago0x674a8fa194d3eb3e286cc10760d3a19caf3e4886  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000261414
0xb0cdd605f1edaf0facc2f52a4ef93dd684c23a9bcc78b01ace1962c3505eef90700795442 days 22 hrs ago0x674a8fa194d3eb3e286cc10760d3a19caf3e4886  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000288066
0x12757e20abf39bbf28ed6af359400115b868504513858dd00a32bee31c85f718700532843 days 10 hrs ago0x424a340e9192f5eb38be61a84aa5ea4a7dac43c0  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000087138
0x73ca05fda34c82c49acb26a59f81bf55acdbff3931d2ab47f85542a9eaafd199700532643 days 10 hrs ago0x424a340e9192f5eb38be61a84aa5ea4a7dac43c0  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000096278
0x9ce089b94758b18762e18a5ff0b638cd9e49f7d52da949c95cfd7df3a572c4e5699645944 days 23 hrs ago0x3e2d2031d1ec1a2c071b63bb1eca6ae04e881d6c  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000130707
0xd5c2bb2ae94847ac5c174a8069553591914060ee1eb3cadab0bbb47d5ddda10b699643544 days 23 hrs ago0x3e2d2031d1ec1a2c071b63bb1eca6ae04e881d6c  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000099225
0x6e5b03bc318f2770b051cb0570e01d96a67fa942c49d7fa4e2d20a5da8c437f4699642544 days 23 hrs ago0x3e2d2031d1ec1a2c071b63bb1eca6ae04e881d6c  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000174276
0x3810af6d012c4e54f32324965ee2e246682eb2bb31490d802e4424a4a18fda0a693841754 days 18 hrs ago0x10edd43fced236ffd490fe60bd4331a912fbc93d  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.000130707
0x45aae2926c54d109692d280aebc6ac80d0ef9600ca7c669b7fbd9156373c8e24691889158 days 2 hrs ago0xcb0c3b15505f8048849c1d4f32835bb98807a055  IN   0xde2b11b71ad892ac3e47ce99d107788d65fe764e0 Ether0.0003009
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xc12f5b8aecf9670b3a20ff30322ee5aaa6b6fb8130f20658f12d42b7d6887f0172131033 days 6 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x796d86a85b371c097700c54de2499a4cb01d03441.74858433154645414 Ether
0xd844f74f83e7393401974490c076470e8f20e1787faaf4c98009355f0b4def0672130973 days 6 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x796d86a85b371c097700c54de2499a4cb01d03440.231681030102702186 Ether
0x24320543001117f225d3561dffb06998f13dddbbc2e266e1bc6d33c8604d6586715632015 days 6 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x12f4cfc4607422648a569c8764ce2c4e6f1b61d03.159745705885699651 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.000912284616623404 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.001126284484418562 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.001126284484418562 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.001390483264492281 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.001390483264492281 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.001716656540735857 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.001716656540735857 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.00211933685397682 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.00211933685397682 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.002616475563936956 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.002616475563936956 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.003230230874666922 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.003230230874666922 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.003987959267169892 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.003987959267169892 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.004923422548786218 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.004923422548786218 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.006078325858624776 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.006078325858624776 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.007504129737476182 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0xde2b11b71ad892ac3e47ce99d107788d65fe764e0x53a39eef083c4a91e36145176cc9f52be29b72880.007504129737476182 Ether
0xa18f8651667f57599c3fa554e3e3f59563cfc7deac94036d57b3cdec7aaaf4ed712822420 days 22 hrs ago0x53a39eef083c4a91e36145176cc9f52be29b72880xde2b11b71ad892ac3e47ce99d107788d65fe764e0.009264379410081974 Ether
[ Download CSV Export 
Contract Source Code Verified (Exact Match)
Contract Name: FairExchange
Compiler Version: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
pragma solidity ^0.4.25;

/*
*
*  https://fairdapp.com/exchange/  https://fairdapp.com/exchange/   https://fairdapp.com/exchange/
*
*                _______     _       ______  _______ ______ ______  
*               (_______)   (_)     (______)(_______|_____ (_____ \ 
*                _____ _____ _  ____ _     _ _______ _____) )____) )
*               |  ___|____ | |/ ___) |   | |  ___  |  ____/  ____/ 
*               | |   / ___ | | |   | |__/ /| |   | | |    | |      
*               |_|   \_____|_|_|   |_____/ |_|   |_|_|    |_|      
*                                                                   
*                _______            _                               
*               (_______)          | |                              
*                _____   _   _ ____| |__  _____ ____   ____ _____   
*               |  ___) ( \ / ) ___)  _ \(____ |  _ \ / _  | ___ |  
*               | |_____ ) X ( (___| | | / ___ | | | ( (_| | ____|  
*               |_______|_/ \_)____)_| |_\_____|_| |_|\___ |_____)  
*                                                    (_____| 
*  Warning:
*     
*  This contract is intended to link DAPPs on the FairDAPP platform. 
*  All could be lost by sending anything to this contract address. 
*  All users are prohibited to interact with this contract if this 
*  contract is in conflict with user’s local regulations or laws.
*  
*  Original code by TEAM JUST
*  Original concept by Dr. Jochen Hoenicke
*  Modified by the FairDAPP community with more scalable and fairer settings. 
* 
*/

contract FairExchange {
    
    using NameFilter for string;
    /*=================================
    =            MODIFIERS            =
    =================================*/
    // only people with tokens
    modifier onlyBagholders() {
        require(myTokens() > 0);
        _;
    }
    
    // only people with profits
    modifier onlyStronghands() {
        require(myDividends(true) > 0);
        _;
    }
    
    // administrators can:
    // -> change the name of the contract
    // -> change the name of the token
    // -> Allow contracts to use transfer functions
    // they CANNOT:
    // -> take funds
    // -> disable withdrawals
    // -> kill the contract
    // -> change the price of tokens
    modifier onlyAdministrator(){
        address _customerAddress = msg.sender;
        require(administrators[keccak256(abi.encodePacked(_customerAddress))]);
        _;
    }
    
    modifier buyVerify(uint256 _amountOfEthereum){
        
        if((totalEthereumBalance() - _amountOfEthereum) < whaleBalanceLimit)
            require(tx.gasprice <= gaspriceMax);
        
        address _customerAddress = msg.sender;
        if(onlyAmbassadors && now <= startTime)
            require(ambassadors_[_customerAddress]);
        else{
            
            if(onlyAmbassadors)
                onlyAmbassadors = false;
                
            if((totalEthereumBalance() - _amountOfEthereum) < whaleBalanceLimit)
                require(_amountOfEthereum <= maxEarlyStake);
        }
        _;
    }
    
    
    /*==============================
    =            EVENTS            =
    ==============================*/
    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        address indexed referredBy
    );
    
    event onTokenSell(
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 ethereumEarned
    );
    
    event onReinvestment(
        address indexed customerAddress,
        uint256 ethereumReinvested,
        uint256 tokensMinted
    );
    
    event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );
    
    // ERC223
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 tokens,
        bytes data
    );
    
    
    /*=====================================
    =            CONFIGURABLES            =
    =====================================*/
    string public name = "FairExchange";
    string public symbol = "Fair";
    uint8 constant public decimals = 18;
    uint8 constant internal dividendFee_ = 10;
    uint256 constant internal tokenPriceInitial_ = 0.0001 ether;
    uint256 constant internal tokenPriceIncremental_ = 0.000000005 ether;
    uint256 constant internal magnitude = 2**64;
    
    uint256 public gaspriceMax = 20000000000;
    uint256 public startTime = 1539478800;
    
    /// @dev anti-early-whale
    uint256 public maxEarlyStake = 2.5 ether;
    uint256 public whaleBalanceLimit = 250 ether;


    // private offering program
    mapping(address => bool) internal ambassadors_;
    
    
   /*================================
    =            DATASETS            =
    ================================*/
    // amount of shares for each address (scaled number)
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal referralBalance_;
    mapping(address => int256) internal payoutsTo_;
    
    uint256 internal tokenSupply_ = 0;
    uint256 internal profitPerShare_;
    
    // administrator list (see above on what they can do)
    mapping(bytes32 => bool) public administrators;
    
    // when this is set to true, only ambassadors can purchase tokens (this prevents a whale premine, it ensures a fairly distributed upper pyramid)
    bool public onlyAmbassadors = true;
    
    mapping (address => bytes32) public register;
    mapping (bytes32 => address) public userName;
    mapping (address => bool) public user;
    


    /*=======================================
    =            PUBLIC FUNCTIONS            =
    =======================================*/
    /*
    * -- APPLICATION ENTRY POINTS --  
    */
    constructor()
        public
    {
        // add administrators here
        administrators[0x851d084c805eabf5ec90588a0f5cade287038d80d52c510eefe81f320e97cdcc] = true;
        
        // add the ambassadors here.
		// max 113 ETH, 40% to developer, 60% to limited quota private sales
        ambassadors_[0xbC817A495f0114755Da5305c5AA84fc5ca7ebaBd] = true;

    }
    
    function registered(string _userName)
        public
    {
        address _customerAddress = msg.sender;
        bytes32 _name = _userName.nameFilter();
        
        require (_customerAddress == tx.origin, "sender does not meet the rules");
        require(_name != bytes32(0), "name cannot be empty");
        require(userName[_name] == address(0), "this name has already been registered");
        require(register[_customerAddress] == bytes32(0), "please do not repeat registration");
        
        userName[_name] = _customerAddress;
        register[_customerAddress] = _name;
        
        if(!user[_customerAddress])
            user[_customerAddress] = true;
    }
     
    /**
     * Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any)
     */
    function buy(address _referredBy)
        buyVerify(msg.value)
        public
        payable
        returns(uint256)
    {
        purchaseTokens(msg.value, _referredBy);
    }
    
    /**
     * Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any)
     */
    function buyXname(string _referredName)
        buyVerify(msg.value)
        public
        payable
        returns(uint256)
    {
        purchaseTokens(msg.value, userName[_referredName.nameFilter()]);
    }
    
    /**
     * Fallback function to handle ethereum that was send straight to the contract
     * Unfortunately we cannot use a referral address this way.
     */
    function()
        buyVerify(msg.value)
        payable
        public
    {
        purchaseTokens(msg.value, 0x0);
    }
    
    /**
     * Converts all of caller's dividends to tokens.
     */
    function reinvest()
        onlyStronghands()
        public
    {
        // fetch dividends
        uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code
        
        // pay out the dividends virtually
        address _customerAddress = msg.sender;
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);
        
        // retrieve ref. bonus
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;
        
        // dispatch a buy order with the virtualized "withdrawn dividends"
        uint256 _tokens = purchaseTokens(_dividends, 0x0);
        
        // fire event
        emit onReinvestment(_customerAddress, _dividends, _tokens);
    }
    
    /**
     * Alias of sell() and withdraw().
     */
    function exit()
        public
    {
        // get token count for caller & sell them all
        address _customerAddress = msg.sender;
        uint256 _tokens = tokenBalanceLedger_[_customerAddress];
        if(_tokens > 0) sell(_tokens);
        
        // lambo delivery service
        withdraw();
    }

    /**
     * Withdraws all of the callers earnings.
     */
    function withdraw()
        onlyStronghands()
        public
    {
        // setup data
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false); // get ref. bonus later in the code
        
        // update dividend tracker
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);
        
        // add ref. bonus
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;
        
        // lambo delivery service
        _customerAddress.transfer(_dividends);
        
        // fire event
        emit onWithdraw(_customerAddress, _dividends);
    }
    
    /**
     * Liquifies tokens to ethereum.
     */
    function sell(uint256 _amountOfTokens)
        onlyBagholders()
        public
    {
        // setup data
        address _customerAddress = msg.sender;
        // russian hackers BTFO
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens = _amountOfTokens;
        uint256 _ethereum = tokensToEthereum_(_tokens);
        uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        
        // burn the sold tokens
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);
        
        // update dividends tracker
        int256 _updatedPayouts = (int256) (profitPerShare_ * _tokens + (_taxedEthereum * magnitude));
        payoutsTo_[_customerAddress] -= _updatedPayouts;       
        
        // dividing by zero is a bad idea
        if (tokenSupply_ > 0) {
            // update the amount of dividends per token
            profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        }
        
        // fire event
        emit onTokenSell(_customerAddress, _tokens, _taxedEthereum);
    }
    
    
    /**
     * ERC20 Transfer
     * Contract address is blocked from using the transfer function
     * Contact us to approve contracts for transfer
     * Contracts will not be a registered user by default
     * All contracts will be approved unless the contract is malicious
     */
    function transfer(address _toAddress, uint256 _amountOfTokens)
        onlyBagholders()
        public
        returns(bool)
    {
        // setup
        address _customerAddress = msg.sender;
        
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        require(user[_customerAddress]);
        
        // withdraw all outstanding dividends first
        if(myDividends(true) > 0) withdraw();

        // exchange tokens
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _amountOfTokens);
        
        // update dividend trackers
        payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _amountOfTokens);
        
        bytes memory _empty;
        uint256 codeLength;
        assembly {
            codeLength := extcodesize(_toAddress)
        }
        if(codeLength > 0){
            ERC223ReceivingContract receiver = ERC223ReceivingContract(_toAddress);
            receiver.tokenFallback(_customerAddress, _amountOfTokens, _empty);
        }
        
        // fire event
        emit Transfer(_customerAddress, _toAddress, _amountOfTokens, _empty);
        
        // ERC20
        return true;
    }
    
    /**
     * ERC223 Transfer
     * Contract address is blocked from using the transfer function
     * Contact us to approve contracts for transfer 
     * Contracts will not be a registered user by default
     * All contracts will be approved unless the contract is malicious
     */
    function transfer(address _toAddress, uint256 _amountOfTokens, bytes _data)
        onlyBagholders()
        public
        returns(bool)
    {
        // setup
        address _customerAddress = msg.sender;
        
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        require(user[_customerAddress]);
        
        // withdraw all outstanding dividends first
        if(myDividends(true) > 0) withdraw();
        
        // exchange tokens
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _amountOfTokens);
        
        // update dividend trackers
        payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _amountOfTokens);
        
        uint256 codeLength;
        assembly {
            codeLength := extcodesize(_toAddress)
        }
        if(codeLength > 0){
            ERC223ReceivingContract receiver = ERC223ReceivingContract(_toAddress);
            receiver.tokenFallback(_customerAddress, _amountOfTokens, _data);
        }
        
        // fire event
        emit Transfer(_customerAddress, _toAddress, _amountOfTokens, _data);
        
        // ERC223
        return true;  
    }
    
    /*----------  ADMINISTRATOR ONLY FUNCTIONS  ----------*/
    
    /**
     * In case one of us dies, we need to replace ourselves.
     */
    function setAdministrator(bytes32 _identifier, bool _status)
        onlyAdministrator()
        public
    {
        administrators[_identifier] = _status;
    }
    
    /**
     * If we want to rebrand, we can.
     */
    function setName(string _name)
        onlyAdministrator()
        public
    {
        name = _name;
    }
    
    /**
     * If we want to rebrand, we can.
     */
    function setSymbol(string _symbol)
        onlyAdministrator()
        public
    {
        symbol = _symbol;
    }
    
    /**
     * Change start time.
     */
    function setTimestamp(uint256 _timestamp)
        onlyAdministrator()
        public
    {
        require(now < 1541001600);
        startTime = _timestamp;
    }
    
    /**
     * Manually add a user to contract for transfer.
     */
    function setUser(address[] _userAddress)
        onlyAdministrator()
        public
    {
        uint256 _length = _userAddress.length;
        require(_length > 0);
        
        for(uint256 i = 0; i < _length; i++){
            
            if(!user[_userAddress[i]])
                user[_userAddress[i]] = true;
        }
    }

    
    /*----------  HELPERS AND CALCULATORS  ----------*/
    /**
     * Method to view the current Ethereum stored in the contract
     * Example: totalEthereumBalance()
     */
    function totalEthereumBalance()
        public
        view
        returns(uint)
    {
        return address(this).balance;
    }
    
    /**
     * Retrieve the total token supply.
     */
    function totalSupply()
        public
        view
        returns(uint256)
    {
        return tokenSupply_;
    }
    
    /**
     * Retrieve the tokens owned by the caller.
     */
    function myTokens()
        public
        view
        returns(uint256)
    {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress);
    }
    
    /**
     * Retrieve the dividends owned by the caller.
     * If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations.
     * The reason for this, is that in the frontend, we will want to get the total divs (global + ref)
     * But in the internal calculations, we want them separate. 
     */ 
    function myDividends(bool _includeReferralBonus) 
        public 
        view 
        returns(uint256)
    {
        address _customerAddress = msg.sender;
        return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ;
    }
    
    /**
     * Retrieve the token balance of any single address.
     */
    function balanceOf(address _customerAddress)
        view
        public
        returns(uint256)
    {
        return tokenBalanceLedger_[_customerAddress];
    }
    
    /**
     * Retrieve the dividend balance of any single address.
     */
    function dividendsOf(address _customerAddress)
        view
        public
        returns(uint256)
    {
        return (uint256) ((int256)(profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
    }
    
    /**
     * Return the buy price of 1 individual token.
     */
    function sellPrice() 
        public 
        view 
        returns(uint256)
    {
        // our calculation relies on the token supply, so we need supply. Doh.
        if(tokenSupply_ == 0){
            return tokenPriceInitial_ - tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div(_ethereum, dividendFee_  );
            uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }
    
    /**
     * Return the sell price of 1 individual token.
     */
    function buyPrice() 
        public 
        view 
        returns(uint256)
    {
        // our calculation relies on the token supply, so we need supply. Doh.
        if(tokenSupply_ == 0){
            return tokenPriceInitial_ + tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div(_ethereum, dividendFee_  );
            uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }
    
    /**
     * Function for the frontend to dynamically retrieve the price scaling of buy orders.
     */
    function calculateTokensReceived(uint256 _ethereumToSpend) 
        public 
        view 
        returns(uint256)
    {
        uint256 _dividends = SafeMath.div(_ethereumToSpend, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        
        return _amountOfTokens;
    }
    
    /**
     * Function for the frontend to dynamically retrieve the price scaling of sell orders.
     */
    function calculateEthereumReceived(uint256 _tokensToSell) 
        public 
        view 
        returns(uint256)
    {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum = tokensToEthereum_(_tokensToSell);
        uint256 _dividends = SafeMath.div(_ethereum, dividendFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }
    
    
    /*==========================================
    =            INTERNAL FUNCTIONS            =
    ==========================================*/
    function purchaseTokens(uint256 _incomingEthereum, address _referredBy)
        internal
        returns(uint256)
    {
        // data setup
        address _customerAddress = msg.sender;
        uint256 _undividedDividends = SafeMath.div(_incomingEthereum, dividendFee_);
        uint256 _referralBonus = SafeMath.div(_undividedDividends, 3);
        uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);
        uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _undividedDividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        uint256 _fee = _dividends * magnitude;
 
        require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));
        
        // is the user referred by a masternode?
        if(
            _referredBy != 0x0000000000000000000000000000000000000000 &&

            _referredBy != _customerAddress &&
        
            register[_referredBy] != bytes32(0)
        ){
            // wealth redistribution
            referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus);
        } else {
            // no ref purchase
            // add the referral bonus back to the global dividends cake
            _dividends = SafeMath.add(_dividends, _referralBonus);
            _fee = _dividends * magnitude;
        }
        
        // we can't give people infinite ethereum
        if(tokenSupply_ > 0){
            
            // add tokens to the pool
            tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
 
            // take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder
            profitPerShare_ += (_dividends * magnitude / (tokenSupply_));
            
            // calculate the amount of tokens the customer receives over his purchase 
            _fee = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_))));
        
        } else {
            // add tokens to the pool
            tokenSupply_ = _amountOfTokens;
        }
        
        // update circulating supply & the ledger address for the customer
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        
        // Tells the contract that the buyer doesn't deserve dividends for the tokens before they owned them;
        //really i know you think you do but you don't
        int256 _updatedPayouts = (int256) ((profitPerShare_ * _amountOfTokens) - _fee);
        payoutsTo_[_customerAddress] += _updatedPayouts;
        
        if(_customerAddress == tx.origin && !user[_customerAddress])
            user[_customerAddress] = true;
    
        // fire event
        emit onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens, _referredBy);
        
        return _amountOfTokens;
    }

    /**
     * Calculate Token price based on an amount of incoming ethereum
     * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
    function ethereumToTokens_(uint256 _ethereum)
        public
        view
        returns(uint256)
    {
        uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18;
        uint256 _tokensReceived = 
         (
            (
                // underflow attempts BTFO
                SafeMath.sub(
                    (sqrt
                        (
                            (_tokenPriceInitial**2)
                            +
                            (2*(tokenPriceIncremental_ * 1e18)*(_ethereum * 1e18))
                            +
                            (((tokenPriceIncremental_)**2)*(tokenSupply_**2))
                            +
                            (2*(tokenPriceIncremental_)*_tokenPriceInitial*tokenSupply_)
                        )
                    ), _tokenPriceInitial
                )
            )/(tokenPriceIncremental_)
        )-(tokenSupply_)
        ;
  
        return _tokensReceived;
    }
    
    /**
     * Calculate token sell value.
     * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
     function tokensToEthereum_(uint256 _tokens)
        internal
        view
        returns(uint256)
    {

        uint256 tokens_ = (_tokens + 1e18);
        uint256 _tokenSupply = (tokenSupply_ + 1e18);
        uint256 _etherReceived =
        (
            // underflow attempts BTFO
            SafeMath.sub(
                (
                    (
                        (
                            tokenPriceInitial_ +(tokenPriceIncremental_ * (_tokenSupply/1e18))
                        )-tokenPriceIncremental_
                    )*(tokens_ - 1e18)
                ),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2
            )
        /1e18);
        return _etherReceived;
    }
    
    function sqrt(uint x) internal pure returns (uint y) {
        uint z = (x + 1) / 2;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

contract ERC223ReceivingContract {
  function tokenFallback(address _from, uint256 _amountOfTokens, bytes _data) public returns (bool);
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws 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 Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

library NameFilter {
    
    function nameFilter(string _input)
        internal
        pure
        returns(bytes32)
    {
        bytes memory _temp = bytes(_input);
        uint256 _length = _temp.length;
        
        //sorry limited to 32 characters
        require (_length <= 32 && _length > 3, "string must be between 4 and 32 characters");
        // make sure first two characters are not 0x
        if (_temp[0] == 0x30)
        {
            require(_temp[1] != 0x78, "string cannot start with 0x");
            require(_temp[1] != 0x58, "string cannot start with 0X");
        }
        
        for (uint256 i = 0; i < _length; i++)
        {
            require
            (
                // OR uppercase A-Z
                (_temp[i] > 0x40 && _temp[i] < 0x5b) ||
                // OR lowercase a-z
                (_temp[i] > 0x60 && _temp[i] < 0x7b) ||
                // or 0-9
                (_temp[i] > 0x2f && _temp[i] < 0x3a),
                "string contains invalid characters"
            );
        }
        
        bytes32 _ret;
        assembly {
            _ret := mload(add(_temp, 32))
        }
        return (_ret);
    }
}

Contract ABI
[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gaspriceMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onlyAmbassadors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereum","type":"uint256"}],"name":"ethereumToTokens_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"register","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxEarlyStake","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_userName","type":"string"}],"name":"registered","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_referredName","type":"string"}],"name":"buyXname","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"user","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_identifier","type":"bytes32"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"whaleBalanceLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"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":"_timestamp","type":"uint256"}],"name":"setTimestamp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_userAddress","type":"address[]"}],"name":"setUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"userName","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Transfer","type":"event"}]

Contract Creation Code
60c0604052600c60808190527f4661697245786368616e6765000000000000000000000000000000000000000060a090815262000040916000919062000150565b506040805180820190915260048082527f46616972000000000000000000000000000000000000000000000000000000006020909201918252620000879160019162000150565b506404a817c800600255635bc295106003556722b1c8c1227a0000600455680d8d726b7177a800006005556000600a55600d805460ff19166001179055348015620000d157600080fd5b507fc4d602847c072c5746c8363cc08a314d51b7735cd5794f817bfe8d33f2adf4338054600160ff19918216811790925573bc817a495f0114755da5305c5aa84fc5ca7ebabd60005260066020527f4c89a3834a4170789301d95459391d36b427695fd847bcc6e3617dd57e330e5080549091169091179055620001f5565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019357805160ff1916838001178555620001c3565b82800160010185558215620001c3579182015b82811115620001c3578251825591602001919060010190620001a6565b50620001d1929150620001d5565b5090565b620001f291905b80821115620001d15760008155600101620001dc565b90565b61264f80620002056000396000f3006080604052600436106101cb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b811461028057806306fdde03146102b357806310d0ffdd1461033d578063139965321461035557806318160ddd1461036a578063226093731461037f57806327defa1f146103975780632a9121c7146103c0578063313ce567146103d8578063392efb52146104035780633ccfd60b1461041b5780634420e486146104325780634b75033414610453578063585bc281146104685780635d2d5c371461047d578063688abbf7146104d65780636b2f4632146104f057806370a082311461050557806378e97925146105265780637edebaf11461053b57806381e7e20e146105875780638620410b146105a857806389135ae9146105bd57806391e33107146105da578063949e8acd146105ef57806395d89b4114610604578063a0a2b57314610619578063a9059cbb14610631578063b84c824614610655578063b94bae91146106ae578063be45fd6214610703578063c47f00271461076c578063e4849b32146107c5578063e639dded146107dd578063e9fad8ee14610811578063f088d54714610826578063fdb5a03e1461083a575b346000600554826101da61084f565b0310156101f0576002543a11156101f057600080fd5b50600d54339060ff16801561020757506003544211155b1561023857600160a060020a03811660009081526006602052604090205460ff16151561023357600080fd5b610270565b600d5460ff161561024e57600d805460ff191690555b6005548261025a61084f565b0310156102705760045482111561027057600080fd5b61027b346000610855565b505050005b34801561028c57600080fd5b506102a1600160a060020a0360043516610af6565b60408051918252519081900360200190f35b3480156102bf57600080fd5b506102c8610b31565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034957600080fd5b506102a1600435610bbf565b34801561036157600080fd5b506102a1610bf4565b34801561037657600080fd5b506102a1610bfa565b34801561038b57600080fd5b506102a1600435610c00565b3480156103a357600080fd5b506103ac610c39565b604080519115158252519081900360200190f35b3480156103cc57600080fd5b506102a1600435610c42565b3480156103e457600080fd5b506103ed610cde565b6040805160ff9092168252519081900360200190f35b34801561040f57600080fd5b506103ac600435610ce3565b34801561042757600080fd5b50610430610cf8565b005b34801561043e57600080fd5b506102a1600160a060020a0360043516610dcb565b34801561045f57600080fd5b506102a1610ddd565b34801561047457600080fd5b506102a1610e32565b34801561048957600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610430943694929360249392840191908190840183828082843750949750610e389650505050505050565b3480156104e257600080fd5b506102a160043515156110a4565b3480156104fc57600080fd5b506102a161084f565b34801561051157600080fd5b506102a1600160a060020a03600435166110e7565b34801561053257600080fd5b506102a1611102565b6040805160206004803580820135601f81018490048402850184019095528484526102a19436949293602493928401919081908401838280828437509497506111089650505050505050565b34801561059357600080fd5b506103ac600160a060020a03600435166111df565b3480156105b457600080fd5b506102a16111f4565b3480156105c957600080fd5b50610430600435602435151561123d565b3480156105e657600080fd5b506102a1611322565b3480156105fb57600080fd5b506102a1611328565b34801561061057600080fd5b506102c861133b565b34801561062557600080fd5b50610430600435611395565b34801561063d57600080fd5b506103ac600160a060020a036004351660243561146f565b34801561066157600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261043094369492936024939284019190819084018382808284375094975061175f9650505050505050565b3480156106ba57600080fd5b5060408051602060048035808201358381028086018501909652808552610430953695939460249493850192918291850190849080828437509497506118369650505050505050565b34801561070f57600080fd5b50604080516020600460443581810135601f81018490048402850184019095528484526103ac948235600160a060020a03169460248035953695946064949201919081908401838280828437509497506119b19650505050505050565b34801561077857600080fd5b506040805160206004803580820135601f8101849004840285018401909552848452610430943694929360249392840191908190840183828082843750949750611c569650505050505050565b3480156107d157600080fd5b50610430600435611d2d565b3480156107e957600080fd5b506107f5600435611e84565b60408051600160a060020a039092168252519081900360200190f35b34801561081d57600080fd5b50610430611e9f565b6102a1600160a060020a0360043516611ecc565b34801561084657600080fd5b50610430611f7d565b30315b90565b6000338180808080808061086a8b600a612033565b9650610877876003612033565b9550610883878761204a565b945061088f8b8861204a565b935061089a84610c42565b925068010000000000000000850291506000831180156108c45750600a546108c2848261205c565b115b15156108cf57600080fd5b600160a060020a038a16158015906108f9575087600160a060020a03168a600160a060020a031614155b801561091c5750600160a060020a038a166000908152600e602052604090205415155b1561096257600160a060020a038a16600090815260086020526040902054610944908761205c565b600160a060020a038b1660009081526008602052604090205561097d565b61096c858761205c565b945068010000000000000000850291505b6000600a5411156109e157610994600a548461205c565b600a8190556801000000000000000086028115156109ae57fe5b600b8054929091049091019055600a546801000000000000000086028115156109d357fe5b0483028203820391506109e7565b600a8390555b600160a060020a038816600090815260076020526040902054610a0a908461205c565b600160a060020a038916600081815260076020908152604080832094909455600b5460099091529290208054928602859003928301905590915032148015610a6b5750600160a060020a03881660009081526010602052604090205460ff16155b15610a9457600160a060020a0388166000908152601060205260409020805460ff191660011790555b89600160a060020a031688600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58d86604051808381526020018281526020019250505060405180910390a350909998505050505050505050565b600160a060020a0316600090815260096020908152604080832054600790925290912054600b54680100000000000000009102919091030490565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b820191906000526020600020905b815481529060010190602001808311610b9a57829003601f168201915b505050505081565b6000808080610bcf85600a612033565b9250610bdb858461204a565b9150610be682610c42565b90508093505b505050919050565b60025481565b600a5490565b600080600080600a548511151515610c1757600080fd5b610c2085612072565b9250610c2d83600a612033565b9150610be6838361204a565b600d5460ff1681565b600a546000906d04ee2d6d415b85acef810000000090829064012a05f200610ccb610cc57301c06a5ec5433c60ddaa16406f5a400000000000880268015af1d78b58c400006002860a0201710b7abc627050305adf14a3d9e400000000008502017a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000016120df565b8561204a565b811515610cd457fe5b0403949350505050565b601281565b600c6020526000908152604090205460ff1681565b6000806000610d0760016110a4565b11610d1157600080fd5b339150610d1e60006110a4565b600160a060020a038316600081815260096020908152604080832080546801000000000000000087020190556008909152808220805490839055905193019350909183156108fc0291849190818181858888f19350505050158015610d87573d6000803e3d6000fd5b50604080518281529051600160a060020a038416917fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc919081900360200190a25050565b600e6020526000908152604090205481565b600080600080600a5460001415610dfc57655af1e6744e009350610e2c565b610e0d670de0b6b3a7640000612072565b9250610e1a83600a612033565b9150610e26838361204a565b90508093505b50505090565b60045481565b336000610e4483612114565b9050600160a060020a0382163214610ea6576040805160e560020a62461bcd02815260206004820152601e60248201527f73656e64657220646f6573206e6f74206d656574207468652072756c65730000604482015290519081900360640190fd5b801515610efd576040805160e560020a62461bcd02815260206004820152601460248201527f6e616d652063616e6e6f7420626520656d707479000000000000000000000000604482015290519081900360640190fd5b6000818152600f6020526040902054600160a060020a031615610f90576040805160e560020a62461bcd02815260206004820152602560248201527f74686973206e616d652068617320616c7265616479206265656e20726567697360448201527f7465726564000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382166000908152600e602052604090205415611024576040805160e560020a62461bcd02815260206004820152602160248201527f706c6561736520646f206e6f742072657065617420726567697374726174696f60448201527f6e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6000818152600f60209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0387169081179091558352600e8252808320849055601090915290205460ff16151561109f57600160a060020a0382166000908152601060205260409020805460ff191660011790555b505050565b600033826110ba576110b581610af6565b6110de565b600160a060020a0381166000908152600860205260409020546110dc82610af6565b015b91505b50919050565b600160a060020a031660009081526007602052604090205490565b60035481565b60003460006005548261111961084f565b03101561112f576002543a111561112f57600080fd5b50600d54339060ff16801561114657506003544211155b1561117757600160a060020a03811660009081526006602052604090205460ff16151561117257600080fd5b6111af565b600d5460ff161561118d57600d805460ff191690555b6005548261119961084f565b0310156111af576004548211156111af57600080fd5b610bec34600f60006111c088612114565b8152602081019190915260400160002054600160a060020a0316610855565b60106020526000908152604090205460ff1681565b600080600080600a546000141561121357655af43a8032009350610e2c565b611224670de0b6b3a7640000612072565b925061123183600a612033565b9150610e26838361205c565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106112b65780518252601f199092019160209182019101611297565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061130191505057600080fd5b506000918252600c6020526040909120805460ff1916911515919091179055565b60055481565b600033611334816110e7565b91505b5090565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610bb75780601f10610b8c57610100808354040283529160200191610bb7565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831061140e5780518252601f1990920191602091820191016113ef565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061145991505057600080fd5b635bd9d180421061146957600080fd5b50600355565b60008060606000806000611481611328565b1161148b57600080fd5b336000818152600760205260409020549094508611156114aa57600080fd5b600160a060020a03841660009081526010602052604090205460ff1615156114d157600080fd5b60006114dd60016110a4565b11156114eb576114eb610cf8565b600160a060020a03841660009081526007602052604090205461150e908761204a565b600160a060020a03808616600090815260076020526040808220939093559089168152205461153d908761205c565b600160a060020a03888116600081815260076020908152604080832095909555600b8054948a16835260099091528482208054948c0290940390935591549082529181208054928902909201909155873b925082111561169d57506040517fc0ee0b8a000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301908152602483018890526060604484019081528551606485015285518a949385169363c0ee0b8a9389938c938a9360840190602085019080838360005b8381101561162257818101518382015260200161160a565b50505050905090810190601f16801561164f5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561167057600080fd5b505af1158015611684573d6000803e3d6000fd5b505050506040513d602081101561169a57600080fd5b50505b86600160a060020a031684600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c1688866040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156117175781810151838201526020016116ff565b50505050905090810190601f1680156117445780820380516001836020036101000a031916815260200191505b50935050505060405180910390a35060019695505050505050565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106117d85780518252601f1990920191602091820191016117b9565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff161515925061182391505057600080fd5b815161109f906001906020850190612595565b6000806000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106118b25780518252601f199092019160209182019101611893565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff16151592506118fd91505057600080fd5b835192506000831161190e57600080fd5b600091505b828210156119ab5760106000858481518110151561192d57fe5b6020908102909101810151600160a060020a031682528101919091526040016000205460ff1615156119a057600160106000868581518110151561196d57fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff19169115159190911790555b600190910190611913565b50505050565b60008060008060006119c1611328565b116119cb57600080fd5b336000818152600760205260409020549093508611156119ea57600080fd5b600160a060020a03831660009081526010602052604090205460ff161515611a1157600080fd5b6000611a1d60016110a4565b1115611a2b57611a2b610cf8565b600160a060020a038316600090815260076020526040902054611a4e908761204a565b600160a060020a038085166000908152600760205260408082209390935590891681522054611a7d908761205c565b600160a060020a03888116600081815260076020908152604080832095909555600b8054948916835260099091528482208054948c0290940390935591549082529181208054928902909201909155873b9250821115611bdd57506040517fc0ee0b8a000000000000000000000000000000000000000000000000000000008152600160a060020a0383811660048301908152602483018890526060604484019081528751606485015287518a949385169363c0ee0b8a9388938c938c9360840190602085019080838360005b83811015611b62578181015183820152602001611b4a565b50505050905090810190601f168015611b8f5780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b158015611bb057600080fd5b505af1158015611bc4573d6000803e3d6000fd5b505050506040513d6020811015611bda57600080fd5b50505b86600160a060020a031683600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c168888604051808381526020018060200182810382528381815181526020019150805190602001908083836000838110156117175781810151838201526020016116ff565b6000339050600c6000826040516020018082600160a060020a0316600160a060020a03166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310611ccf5780518252601f199092019160209182019101611cb0565b51815160209384036101000a600019018019909216911617905260408051929094018290039091208652850195909552929092016000205460ff1615159250611d1a91505057600080fd5b815161109f906000906020850190612595565b6000806000806000806000611d40611328565b11611d4a57600080fd5b33600081815260076020526040902054909650871115611d6957600080fd5b869450611d7585612072565b9350611d8284600a612033565b9250611d8e848461204a565b9150611d9c600a548661204a565b600a55600160a060020a038616600090815260076020526040902054611dc2908661204a565b600160a060020a038716600090815260076020908152604080832093909355600b546009909152918120805492880268010000000000000000860201928390039055600a549192501015611e3857611e34600b54600a54680100000000000000008602811515611e2e57fe5b0461205c565b600b555b60408051868152602081018490528151600160a060020a038916927fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139928290030190a250505050505050565b600f60205260009081526040902054600160a060020a031681565b3360008181526007602052604081205490811115611ec057611ec081611d2d565b611ec8610cf8565b5050565b600034600060055482611edd61084f565b031015611ef3576002543a1115611ef357600080fd5b50600d54339060ff168015611f0a57506003544211155b15611f3b57600160a060020a03811660009081526006602052604090205460ff161515611f3657600080fd5b611f73565b600d5460ff1615611f5157600d805460ff191690555b60055482611f5d61084f565b031015611f7357600454821115611f7357600080fd5b610bec3485610855565b600080600080611f8d60016110a4565b11611f9757600080fd5b611fa160006110a4565b33600081815260096020908152604080832080546801000000000000000087020190556008909152812080549082905590920194509250611fe3908490610855565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b600080828481151561204157fe5b04949350505050565b60008282111561205657fe5b50900390565b60008282018381101561206b57fe5b9392505050565b600a54600090670de0b6b3a76400008381019181019083906120cc655af1e6744e0082850464012a05f20002018702600283670de0b6b3a763ffff1982890a8b9003010464012a05f200028115156120c657fe5b0461204a565b8115156120d557fe5b0495945050505050565b80600260018201045b818110156110e157809150600281828581151561210157fe5b040181151561210c57fe5b0490506120e8565b8051600090829082806020831180159061212e5750600383115b15156121aa576040805160e560020a62461bcd02815260206004820152602a60248201527f737472696e67206d757374206265206265747765656e203420616e642033322060448201527f6368617261637465727300000000000000000000000000000000000000000000606482015290519081900360840190fd5b8360008151811015156121b957fe5b90602001015160f860020a900460f860020a02600160f860020a031916603060f860020a0214156122fc578360018151811015156121f357fe5b90602001015160f860020a900460f860020a02600160f860020a031916607860f860020a0214151515612270576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030780000000000604482015290519081900360640190fd5b83600181518110151561227f57fe5b90602001015160f860020a900460f860020a02600160f860020a031916605860f860020a02141515156122fc576040805160e560020a62461bcd02815260206004820152601b60248201527f737472696e672063616e6e6f7420737461727420776974682030580000000000604482015290519081900360640190fd5b600091505b828210156125885783517f40000000000000000000000000000000000000000000000000000000000000009085908490811061233957fe5b90602001015160f860020a900460f860020a02600160f860020a0319161180156123ad575083517f5b000000000000000000000000000000000000000000000000000000000000009085908490811061238e57fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612457575083517f6000000000000000000000000000000000000000000000000000000000000000908590849081106123e357fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612457575083517f7b000000000000000000000000000000000000000000000000000000000000009085908490811061243857fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b80612501575083517f2f000000000000000000000000000000000000000000000000000000000000009085908490811061248d57fe5b90602001015160f860020a900460f860020a02600160f860020a031916118015612501575083517f3a00000000000000000000000000000000000000000000000000000000000000908590849081106124e257fe5b90602001015160f860020a900460f860020a02600160f860020a031916105b151561257d576040805160e560020a62461bcd02815260206004820152602260248201527f737472696e6720636f6e7461696e7320696e76616c696420636861726163746560448201527f7273000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600190910190612301565b5050506020015192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106125d657805160ff1916838001178555612603565b82800160010185558215612603579182015b828111156126035782518255916020019190600101906125e8565b50611337926108529250905b80821115611337576000815560010161260f5600a165627a7a72305820fa1e3d8583f022995a7e987566e75b84a988c7bb8df0a30abbbf9e69fe8fc8710029


   Swarm Source:
bzzr://fa1e3d8583f022995a7e987566e75b84a988c7bb8df0a30abbbf9e69fe8fc871
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.