Sponsored:   [Largest VC Funded] TEMCO, millions sold out in seconds. Join TEMCO's last presale at CoinBene!
Contract Overview
Balance: 0.251931052814565244 Ether
Ether Value: $22.09 (@ $87.69/ETH)
Transactions: 306 txns
Token Tracker: EXCHANGE (SHARES)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x3db1e274bf36824cf655beddb92a90c04906e04bat txn 0x8466a30b1fc792c429e014f8065900cdc64c738d8abc140c612be26e1a30ecb1
 Latest 25 transactions from a total of 306 transactions

TxHash Age From To Value [TxFee]
0x2814374356a6c09780d093f0409ccf585ba447f9b2ce18ab0aa9474768a6ef666 days 12 hrs ago0x3db1e274bf36824cf655beddb92a90c04906e04b  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000353964
0xa5a8df33fb703e6b415ac23f83e720d13e6e4000a321f5a5ab0c37a0ad8d241629 days 20 hrs ago0x3db1e274bf36824cf655beddb92a90c04906e04b  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.00017899
0x522fc785a7fc3d48627fc6d5f03525079c8d0ef71a813239d26e0a07c6652de030 days 12 hrs ago0xbde81235bee4205d4e8b0da99eafb192faea1a6b  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000296785
0xef44be2bcc5f33cc0de00063f4c1748bbf22b9abb9fe355fe504062402139a8230 days 12 hrs ago0xbde81235bee4205d4e8b0da99eafb192faea1a6b  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.00016572
0x01a5aa22858452a6c0df61858bab502508feabde40dcf839fe9dcb9d2291a23430 days 12 hrs ago0xbde81235bee4205d4e8b0da99eafb192faea1a6b  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000296785
0x2e66076c7122aa07ccec3f29f6e68b4522215525fb75882e02523e94ce832c1432 days 13 hrs ago0x95096780efd48fa66483bc197677e89f37ca0cb5  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.0008735
0x51d0bf0476cabf66db48513fc8379e170aeb2a3811bb30f31edf07fb8c25958e33 days 59 mins ago0x95096780efd48fa66483bc197677e89f37ca0cb5  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470.01 Ether0.000322684
0xda146de5dc2aaab2956f6c8fd69a9961ee74a1e34a89ede4b155facd08d384d133 days 59 mins ago0x95096780efd48fa66483bc197677e89f37ca0cb5  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470.01 Ether0.000553355
0x8bda706e9f427658ea2de55534ee6cc897d50aacdcae5007981df487b614b7db33 days 19 hrs ago0xa98b310d566f0ed6cf3cda3e67b9579db369f2c3  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000286506
0x577270ae7eda961d87cdc86384ab750150f590b2c3d0a32f1bf058b0a5194c4d34 days 21 hrs ago0x46ea3d72ae731bb477a4c49b14a295be115de1c7  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000250875
0x3e06e3c75e77f4d75cd1d1146c2d32558857432efe4df8f91b688c45686326a734 days 21 hrs ago0x46ea3d72ae731bb477a4c49b14a295be115de1c7  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000070593
0x6a135ac88ea01108b179663225257f4844b066fce2e7b2d12601cc6699052bfc34 days 21 hrs ago0x46ea3d72ae731bb477a4c49b14a295be115de1c7  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.00035205
0x9d08b27a975a432a01b1693026609ca33e8d466050e6ab9e0acbf01abde21ac234 days 21 hrs ago0x46ea3d72ae731bb477a4c49b14a295be115de1c7  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000284862
0x0f814628ce054a6904a5400f873aa8761d2aff561e4e47bbfdc81f1d290cab7f35 days 2 hrs ago0x5f1088110edcba27fc206cdcc326b413b5867361  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000653631
0xa2d409810bb69002d63afcbe9bf5acf52062375d631d93c9c7b447935386852435 days 2 hrs ago0x5f1088110edcba27fc206cdcc326b413b5867361  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.00062073
0xaa814ac285f28a8d2cffdedd2ed47b0578dae037451c971adbbc5e64d4ad509035 days 3 hrs ago0x5f1088110edcba27fc206cdcc326b413b5867361  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.002200297
0xe3dc34c8330764781600a3fd917b7788559711181f2cba30f5cbde47a0eae52543 days 6 hrs ago0x5f1088110edcba27fc206cdcc326b413b5867361  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.001234402
0x5e2d89af2743353c350d9814f3ca1f826852e58ebf2d27860d9e01db5f39dc6d43 days 8 hrs ago0x46ea3d72ae731bb477a4c49b14a295be115de1c7  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.00047477
0x6b91633b25eb52f9cc4a888f272369c982a94b0112543804b9fb97794b7704c843 days 10 hrs ago0xeafe863757a2b2a2c5c3f71988b7d59329d09a78  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000356142
0x0c1af88eb7a4df5c6e5aa0fa1e9be3ff225beec9795b5bd2376966d9593abe8c43 days 10 hrs ago0xeafe863757a2b2a2c5c3f71988b7d59329d09a78  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000338286
0x5e9536b813adc39218c356f521476b1cc56c48ef7a311e63fda7ecb3b8bd873a46 days 3 hrs ago0x46ea3d72ae731bb477a4c49b14a295be115de1c7  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000379816
0x0df5ca4ec2859079b5a80a5f7b2f1924cfa893608c85bc6ad7f7ebe13b56fe2048 days 15 hrs ago0xd4cf0c62a3d287eb83d1c2b71f904479319fdff0  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000379816
0xa3a984e8115b361e7a809a8ed536cb718b59f35e2343f65c7b253e4edca31f3449 days 8 hrs ago0x46ea3d72ae731bb477a4c49b14a295be115de1c7  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000379816
0xfb567c2b91be7c54f3d83e477cf93e814d967eebe1c40081a58eecba70f83c9349 days 8 hrs ago0x46ea3d72ae731bb477a4c49b14a295be115de1c7  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.000379816
0x83d7e255dfd6e9876b41e6e35731f3729e5c4427e0ec86d500620ab2373ed19049 days 13 hrs ago0x5f1088110edcba27fc206cdcc326b413b5867361  IN   0xf99881fda3e24b16fa49b0d8359813b1e072a4470 Ether0.001044494
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x2814374356a6c09780d093f0409ccf585ba447f9b2ce18ab0aa9474768a6ef6668625586 days 12 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x3db1e274bf36824cf655beddb92a90c04906e04b0.017194576228554509 Ether
0xa5a8df33fb703e6b415ac23f83e720d13e6e4000a321f5a5ab0c37a0ad8d2416672095929 days 20 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x3db1e274bf36824cf655beddb92a90c04906e04b0.094087283768940032 Ether
0x522fc785a7fc3d48627fc6d5f03525079c8d0ef71a813239d26e0a07c6652de0671698430 days 12 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470xbde81235bee4205d4e8b0da99eafb192faea1a6b0.877235674125 Ether
0x01a5aa22858452a6c0df61858bab502508feabde40dcf839fe9dcb9d2291a234671697530 days 12 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470xbde81235bee4205d4e8b0da99eafb192faea1a6b0.003544981857827808 Ether
0x2e66076c7122aa07ccec3f29f6e68b4522215525fb75882e02523e94ce832c14670433032 days 13 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x95096780efd48fa66483bc197677e89f37ca0cb50.000019101986036833 Ether
0x8bda706e9f427658ea2de55534ee6cc897d50aacdcae5007981df487b614b7db669690633 days 19 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470xa98b310d566f0ed6cf3cda3e67b9579db369f2c30.005601885295356571 Ether
0x6a135ac88ea01108b179663225257f4844b066fce2e7b2d12601cc6699052bfc669017234 days 21 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x46ea3d72ae731bb477a4c49b14a295be115de1c70.010911383952276148 Ether
0x0f814628ce054a6904a5400f873aa8761d2aff561e4e47bbfdc81f1d290cab7f668888735 days 2 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x5f1088110edcba27fc206cdcc326b413b58673610.237307840950028028 Ether
0x6b91633b25eb52f9cc4a888f272369c982a94b0112543804b9fb97794b7704c8663808643 days 10 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470xeafe863757a2b2a2c5c3f71988b7d59329d09a780.155996066231353372 Ether
0x0eb3856d4c5e7dfb11cbea60876f959d879aa0aa9212fba937c054b028c1761f659484450 days 12 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x3db1e274bf36824cf655beddb92a90c04906e04b3.17490502893394617 Ether
0x34266af9136edc0a385a5621fb78a0d279bc47437527ce1858b65dbfed37252b658917551 days 10 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470xdb232978733812607b9e520a683e01275d474df40.010347537113473805 Ether
0x3b1586e7f9b7044dffb21c5288dcdc4247adf8ce6cf2822a4de51b315b50e6db658444752 days 5 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x5f1088110edcba27fc206cdcc326b413b58673610.044221819159203495 Ether
0xaed6a3964ef7cc8083a9c96d1c6ff91420e3265506dcde284aad1c180449c7ba658227452 days 14 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x1dff003e16e93823cdb91e20bfd1d31ad05b62240.570586510459887725 Ether
0xc47a4f60bf6b9da898dba09bcb9a9052fc48a2683856c4cf0d33a23b8dbebc15658214352 days 14 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x5abf99123904c0e4376d3c9ab5f2ee8c5b9f2f920.176636322807238777 Ether
0xc30e3d6a74ec4b71624b69ed6aee06caf27379489676d622cc1390c94f6629a0658203552 days 15 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x7a5c4caf90e9211d7d474918f764ebdc2f9ec1a30.182280974797321488 Ether
0xd70ea9499e31e17316ec5632435d2b340ffdc272fe214d91c2f30010209b19cf657202254 days 6 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x5f1088110edcba27fc206cdcc326b413b58673610.013083620144591506 Ether
0x31630529b571718010da468c8bb190c8c2ab0547f470ad5b78c9c75fe85d5a60656891754 days 18 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470xa98b310d566f0ed6cf3cda3e67b9579db369f2c30.022873017224085438 Ether
0x50a70c8a5522fe70eabf1cdee639b08fb920a8a7915483fb1fe315662415ba8c656877154 days 18 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x5abf99123904c0e4376d3c9ab5f2ee8c5b9f2f920.045698683813930484 Ether
0x50201f10a6560babc538793b6841f7fd3090cb2e7d62cce17021910733376556656441755 days 11 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x46ea3d72ae731bb477a4c49b14a295be115de1c70.351747167840363641 Ether
0xbec5d0a071655c00929b03af54337e41f4652fddf4d4363f31a1986a20e92712656316255 days 16 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x21572b6a855ee8b1392ed1003ecf3474fa83de3e0.014333172802011429 Ether
0xe23a8dc50503c70e63e38f20f3d81582533c9fcb6045167555339c4ac292ae7f656301755 days 17 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x21572b6a855ee8b1392ed1003ecf3474fa83de3e0.000621633822505664 Ether
0xb2f5de0d43c96e004b9a820365680124086c23a4126ad02f18d5aabd8def895f656292655 days 17 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470xa98b310d566f0ed6cf3cda3e67b9579db369f2c30.017713204155632055 Ether
0x715a4b99f8b81483fe8b23bf328665e26dc038acf0758faad895d20b7f1ee0c8656276155 days 18 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470xf92fb05a48462e62ce66a04d35a2dbbf7a1514210.210236809267918876 Ether
0x1535b6f2a63b378309655e16a19487d985e413d996ce9e3dc4967ee965cb1233656220855 days 20 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470xf92fb05a48462e62ce66a04d35a2dbbf7a1514210.043688871727023173 Ether
0x106337ded725f29d925f219cdc8cb4039ad0d22b9690e93389fb465a01aec3fb655863056 days 10 hrs ago0xf99881fda3e24b16fa49b0d8359813b1e072a4470x1dff003e16e93823cdb91e20bfd1d31ad05b62240.105026745105885384 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Exchange
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.24;

contract AcceptsExchange {
    Exchange public tokenContract;

    constructor(address _tokenContract) public {
        tokenContract = Exchange(_tokenContract);
    }

    modifier onlyTokenContract {
        require(msg.sender == address(tokenContract));
        _;
    }

    /**
    * @dev Standard ERC677 function that will handle incoming token transfers.
    *
    * @param _from  Token sender address.
    * @param _value Amount of tokens.
    * @param _data  Transaction metadata.
    */
    function tokenFallback(address _from, uint256 _value, bytes _data) external returns (bool);
}


contract Exchange {
    /*=================================
    =            MODIFIERS            =
    =================================*/
    // only people with tokens
    modifier onlyBagholders() {
        require(myTokens() > 0);
        _;
    }

    // only people with profits
    modifier onlyStronghands() {
        require(myDividends(true) > 0);
        _;
    }

    modifier notContract() {
      require (msg.sender == tx.origin);
      _;
    }

    // administrators can:
    // -> change the name of the contract
    // -> change the name of the token
    // -> change the PoS difficulty (How many tokens it costs to hold a masternode, in case it gets crazy high later)
    // they CANNOT:
    // -> take funds
    // -> disable withdrawals
    // -> kill the contract
    // -> change the price of tokens
    modifier onlyAdministrator(){
        address _customerAddress = msg.sender;
        require(administrators[_customerAddress]);
        _;
    }

    uint ACTIVATION_TIME = 1539302400;

    // ensures that the first tokens in the contract will be equally distributed
    // meaning, no divine dump will be ever possible
    // result: healthy longevity.
    modifier antiEarlyWhale(uint256 _amountOfEthereum){

        if (now >= ACTIVATION_TIME) {
            onlyAmbassadors = false;
        }

        // are we still in the vulnerable phase?
        // if so, enact anti early whale protocol
        if( onlyAmbassadors && ((totalEthereumBalance() - _amountOfEthereum) <= ambassadorQuota_ )){
            require(
                // is the customer in the ambassador list?
                ambassadors_[msg.sender] == true &&

                // does the customer purchase exceed the max ambassador quota?
                (ambassadorAccumulatedQuota_[msg.sender] + _amountOfEthereum) <= ambassadorMaxPurchase_

            );

            // updated the accumulated quota
            ambassadorAccumulatedQuota_[msg.sender] = SafeMath.add(ambassadorAccumulatedQuota_[msg.sender], _amountOfEthereum);

            // execute
            _;
        } else {
            // in case the ether count drops low, the ambassador phase won't reinitiate
            onlyAmbassadors = false;
            _;
        }

    }

    /*==============================
    =            EVENTS            =
    ==============================*/
    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        address indexed referredBy,
        bool isReinvest,
        uint timestamp,
        uint256 price
    );

    event onTokenSell(
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 ethereumEarned,
        uint timestamp,
        uint256 price
    );

    event onReinvestment(
        address indexed customerAddress,
        uint256 ethereumReinvested,
        uint256 tokensMinted
    );

    event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn,
        uint256 estimateTokens,
        bool isTransfer
    );

    // ERC20
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 tokens
    );


    /*=====================================
    =            CONFIGURABLES            =
    =====================================*/
    string public name = "EXCHANGE";
    string public symbol = "SHARES";
    uint8 constant public decimals = 18;

    uint8 constant internal entryFee_ = 20; // 20% dividend fee on each buy
    uint8 constant internal startExitFee_ = 40; // 40 % dividends for token selling
    uint8 constant internal finalExitFee_ = 20; // 20% dividends for token selling after step
    uint8 constant internal fundFee_ = 5; // 5% to stock game
    uint256 constant internal exitFeeFallDuration_ = 30 days; //Exit fee falls over period of 30 days

    uint256 constant internal tokenPriceInitial_ = 0.00000001 ether;
    uint256 constant internal tokenPriceIncremental_ = 0.000000001 ether;
    uint256 constant internal magnitude = 2**64;

    // Address to send the 5% Fee
    address public giveEthFundAddress = 0x0;
    bool public finalizedEthFundAddress = false;
    uint256 public totalEthFundRecieved; // total ETH charity recieved from this contract
    uint256 public totalEthFundCollected; // total ETH charity collected in this contract

    // proof of stake (defaults at 100 tokens)
    uint256 public stakingRequirement = 25e18;

    // ambassador program
    mapping(address => bool) internal ambassadors_;
    uint256 constant internal ambassadorMaxPurchase_ = 1 ether;
    uint256 constant internal ambassadorQuota_ = 7 ether;

   /*================================
    =            DATASETS            =
    ================================*/
    // amount of shares for each address (scaled number)
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal referralBalance_;
    mapping(address => int256) internal payoutsTo_;
    mapping(address => uint256) internal ambassadorAccumulatedQuota_;
    uint256 internal tokenSupply_ = 0;
    uint256 internal profitPerShare_;

    // administrator list (see above on what they can do)
    mapping(address => 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;

    // To whitelist game contracts on the platform
    mapping(address => bool) public canAcceptTokens_; // contracts, which can accept the exchanges tokens

    /*=======================================
    =            PUBLIC FUNCTIONS            =
    =======================================*/
    /*
    * -- APPLICATION ENTRY POINTS --
    */
    constructor()
        public
    {
        // add administrators here
        administrators[0x3db1e274bf36824cf655beddb92a90c04906e04b] = true;

        // add the ambassadors here - Tokens will be distributed to these addresses from main premine
        ambassadors_[0x3db1e274bf36824cf655beddb92a90c04906e04b] = true;
        ambassadors_[0x7191cbd8bbcacfe989aa60fb0be85b47f922fe21] = true;
        ambassadors_[0xEafE863757a2b2a2c5C3f71988b7D59329d09A78] = true;
        ambassadors_[0x5138240E96360ad64010C27eB0c685A8b2eDE4F2] = true;
        ambassadors_[0xC558895aE123BB02b3c33164FdeC34E9Fb66B660] = true;
        ambassadors_[0x4ffE17a2A72bC7422CB176bC71c04EE6D87cE329] = true;
        ambassadors_[0xEc31176d4df0509115abC8065A8a3F8275aafF2b] = true;
    }


    /**
     * Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any)
     */
    function buy(address _referredBy)
        public
        payable
        returns(uint256)
    {

        require(tx.gasprice <= 0.05 szabo);
        purchaseInternal(msg.value, _referredBy);
    }

    /**
     * Fallback function to handle ethereum that was send straight to the contract
     * Unfortunately we cannot use a referral address this way.
     */
    function()
        payable
        public
    {

        require(tx.gasprice <= 0.05 szabo);
        purchaseInternal(msg.value, 0x0);
    }

    function updateFundAddress(address _newAddress)
        onlyAdministrator()
        public
    {
        require(finalizedEthFundAddress == false);
        giveEthFundAddress = _newAddress;
    }

    function finalizeFundAddress(address _finalAddress)
        onlyAdministrator()
        public
    {
        require(finalizedEthFundAddress == false);
        giveEthFundAddress = _finalAddress;
        finalizedEthFundAddress = true;
    }

    function payFund() payable onlyAdministrator() public {
        uint256 ethToPay = SafeMath.sub(totalEthFundCollected, totalEthFundRecieved);
        require(ethToPay > 0);
        totalEthFundRecieved = SafeMath.add(totalEthFundRecieved, ethToPay);
        if(!giveEthFundAddress.call.value(ethToPay).gas(400000)()) {
          totalEthFundRecieved = SafeMath.sub(totalEthFundRecieved, ethToPay);
        }
    }

    /**
     * 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, true);

        // 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(false);
    }

    /**
     * Withdraws all of the callers earnings.
     */
    function withdraw(bool _isTransfer)
        onlyStronghands()
        public
    {
        // setup data
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false); // get ref. bonus later in the code

        uint256 _estimateTokens = calculateTokensReceived(_dividends);

        // 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, _estimateTokens, _isTransfer);
    }

    /**
     * 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(SafeMath.mul(_ethereum, exitFee()), 100);
        uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereum, fundFee_), 100);

        // Take out dividends and then _fundPayout
        uint256 _taxedEthereum =  SafeMath.sub(SafeMath.sub(_ethereum, _dividends), _fundPayout);

        // Add ethereum to send to fund
        totalEthFundCollected = SafeMath.add(totalEthFundCollected, _fundPayout);

        // 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, now, buyPrice());
    }


    /**
     * Transfer tokens from the caller to a new holder.
     * REMEMBER THIS IS 0% TRANSFER FEE
     */
    function transfer(address _toAddress, uint256 _amountOfTokens)
        onlyBagholders()
        public
        returns(bool)
    {
        // setup
        address _customerAddress = msg.sender;

        // make sure we have the requested tokens
        // also disables transfers until ambassador phase is over
        // ( we dont want whale premines )
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);

        // withdraw all outstanding dividends first
        if(myDividends(true) > 0) withdraw(true);

        // 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);


        // fire event
        emit Transfer(_customerAddress, _toAddress, _amountOfTokens);

        // ERC20
        return true;
    }

    /**
    * Transfer token to a specified address and forward the data to recipient
    * ERC-677 standard
    * https://github.com/ethereum/EIPs/issues/677
    * @param _to    Receiver address.
    * @param _value Amount of tokens that will be transferred.
    * @param _data  Transaction metadata.
    */
    function transferAndCall(address _to, uint256 _value, bytes _data) external returns (bool) {
      require(_to != address(0));
      require(canAcceptTokens_[_to] == true); // security check that contract approved by the exchange
      require(transfer(_to, _value)); // do a normal token transfer to the contract

      if (isContract(_to)) {
        AcceptsExchange receiver = AcceptsExchange(_to);
        require(receiver.tokenFallback(msg.sender, _value, _data));
      }

      return true;
    }

    /**
     * Additional check that the game address we are sending tokens to is a contract
     * assemble the given address bytecode. If bytecode exists then the _addr is a contract.
     */
     function isContract(address _addr) private constant returns (bool is_contract) {
       // retrieve the size of the code on target address, this needs assembly
       uint length;
       assembly { length := extcodesize(_addr) }
       return length > 0;
     }

    /*----------  ADMINISTRATOR ONLY FUNCTIONS  ----------*/
    /**

    /**
     * In case one of us dies, we need to replace ourselves.
     */
    function setAdministrator(address _identifier, bool _status)
        onlyAdministrator()
        public
    {
        administrators[_identifier] = _status;
    }

    /**
     * Precautionary measures in case we need to adjust the masternode rate.
     */
    function setStakingRequirement(uint256 _amountOfTokens)
        onlyAdministrator()
        public
    {
        stakingRequirement = _amountOfTokens;
    }

    /**
     * Add or remove game contract, which can accept tokens
     */
    function setCanAcceptTokens(address _address, bool _value)
      onlyAdministrator()
      public
    {
      canAcceptTokens_[_address] = _value;
    }

    /**
     * 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;
    }


    /*----------  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(SafeMath.mul(_ethereum, exitFee()), 100);
            uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereum, fundFee_), 100);
            uint256 _taxedEthereum = SafeMath.sub(SafeMath.sub(_ethereum, _dividends), _fundPayout);
            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(SafeMath.mul(_ethereum, entryFee_), 100);
            uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereum, fundFee_), 100);
            uint256 _taxedEthereum =  SafeMath.add(SafeMath.add(_ethereum, _dividends), _fundPayout);
            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(SafeMath.mul(_ethereumToSpend, entryFee_), 100);
        uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereumToSpend, fundFee_), 100);
        uint256 _taxedEthereum = SafeMath.sub(SafeMath.sub(_ethereumToSpend, _dividends), _fundPayout);
        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(SafeMath.mul(_ethereum, exitFee()), 100);
        uint256 _fundPayout = SafeMath.div(SafeMath.mul(_ethereum, fundFee_), 100);
        uint256 _taxedEthereum = SafeMath.sub(SafeMath.sub(_ethereum, _dividends), _fundPayout);
        return _taxedEthereum;
    }

    /**
     * Function for the frontend to show ether waiting to be send to fund in contract
     */
    function etherToSendFund()
        public
        view
        returns(uint256) {
        return SafeMath.sub(totalEthFundCollected, totalEthFundRecieved);
    }

    /**
     * Function for getting the current exitFee
     */
    function exitFee() public view returns (uint8) {
        if ( now < ACTIVATION_TIME) {
          return startExitFee_;
        }
        uint256 secondsPassed = now - ACTIVATION_TIME;
        if (secondsPassed >= exitFeeFallDuration_) {
            return finalExitFee_;
        }
        uint8 totalChange = startExitFee_ - finalExitFee_;
        uint8 currentChange = uint8(totalChange * secondsPassed / exitFeeFallDuration_);
        uint8 currentFee = startExitFee_- currentChange;
        return currentFee;
    }

    /*==========================================
    =            INTERNAL FUNCTIONS            =
    ==========================================*/

    // Make sure we will send back excess if user sends more then 2 ether before 80 ETH in contract
    function purchaseInternal(uint256 _incomingEthereum, address _referredBy)
      notContract()// no contracts allowed
      internal
      returns(uint256) {

      uint256 purchaseEthereum = _incomingEthereum;
      uint256 excess;
      if(purchaseEthereum > 2 ether) { // check if the transaction is over 2 ether
          if (SafeMath.sub(address(this).balance, purchaseEthereum) <= 80 ether) { // if so check the contract is less then 80 ether
              purchaseEthereum = 2 ether;
              excess = SafeMath.sub(_incomingEthereum, purchaseEthereum);
          }
      }

      purchaseTokens(purchaseEthereum, _referredBy, false);

      if (excess > 0) {
        msg.sender.transfer(excess);
      }
    }

    function purchaseTokens(uint256 _incomingEthereum, address _referredBy, bool _isReinvest)
        antiEarlyWhale(_incomingEthereum)
        internal
        returns(uint256)
    {
        // data setup
        uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingEthereum, entryFee_), 100);
        uint256 _referralBonus = SafeMath.div(_undividedDividends, 3);
        uint256 _fundPayout = SafeMath.div(SafeMath.mul(_incomingEthereum, fundFee_), 100);
        uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);
        uint256 _taxedEthereum = SafeMath.sub(SafeMath.sub(_incomingEthereum, _undividedDividends), _fundPayout);
        totalEthFundCollected = SafeMath.add(totalEthFundCollected, _fundPayout);

        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        uint256 _fee = _dividends * magnitude;

        // no point in continuing execution if OP is a poor russian hacker
        // prevents overflow in the case that the pyramid somehow magically starts being used by everyone in the world
        // (or hackers)
        // and yes we know that the safemath function automatically rules out the "greater then" equasion.
        require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));

        // is the user referred by a masternode?
        if(
            // is this a referred purchase?
            _referredBy != 0x0000000000000000000000000000000000000000 &&

            // no cheating!
            _referredBy != msg.sender &&

            // does the referrer have at least X whole tokens?
            // i.e is the referrer a godly chad masternode
            tokenBalanceLedger_[_referredBy] >= stakingRequirement
        ){
            // 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_[msg.sender] = SafeMath.add(tokenBalanceLedger_[msg.sender], _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_[msg.sender] += _updatedPayouts;

        // fire event
        emit onTokenPurchase(msg.sender, _incomingEthereum, _amountOfTokens, _referredBy, _isReinvest, now, buyPrice());

        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)
        internal
        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;
    }


    //This is where all your gas goes, sorry
    //Not sorry, you probably only paid 1 gwei
    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;
        }
    }
}

/**
 * @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;
    }
}

    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":"","type":"address"}],"name":"canAcceptTokens_","outputs":[{"name":"","type":"bool"}],"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":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newAddress","type":"address"}],"name":"updateFundAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"finalizedEthFundAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onlyAmbassadors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"},{"name":"_value","type":"bool"}],"name":"setCanAcceptTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"giveEthFundAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exitFee","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"etherToSendFund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_finalAddress","type":"address"}],"name":"finalizeFundAddress","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":"","type":"address"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthFundCollected","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"setStakingRequirement","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_identifier","type":"address"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"payFund","outputs":[],"payable":true,"stateMutability":"payable","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":true,"inputs":[],"name":"totalEthFundRecieved","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_isTransfer","type":"bool"}],"name":"withdraw","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":"_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":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"},{"indexed":false,"name":"isReinvest","type":"bool"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"}],"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"},{"indexed":false,"name":"timestamp","type":"uint256"},{"indexed":false,"name":"price","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"},{"indexed":false,"name":"estimateTokens","type":"uint256"},{"indexed":false,"name":"isTransfer","type":"bool"}],"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"}],"name":"Transfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
635bbfe40060005560c0604052600860808190527f45584348414e474500000000000000000000000000000000000000000000000060a090815262000048916001919062000241565b506040805180820190915260068082527f534841524553000000000000000000000000000000000000000000000000000060209092019182526200008f9160029162000241565b5060038054600160a860020a031916905568015af1d78b58c400006006556000600c55600f805460ff19166001179055348015620000cc57600080fd5b507f5c6a037d5d6ba2936dc5b92737e8235419ae33bc39d87271dd6a7d089366a3c98054600160ff19918216811790925560076020527f95aedd75a1698152fddadc31a4e754ac7f9aca3f5192fdf3e50fa2411cb87b1d80548216831790557f4400085a11d5345ecb7ffb8d6146cd6b56805a099b4038fae0493aa5d5ff949280548216831790557fee4f3b75173566d66339ab204b06b414ff8d49dc13ba73f7892dc532da90d1ad80548216831790557f16a55bc99b8b603284db3eba65476ac5533b1dff3e0facb21012fbfe05a5262c80548216831790557f0899e70f44b8eec4a20652c558018c8a49ef1920b54f4ed394159027353cccdc80548216831790557ff8a653c599e0caaaa5c4aefb2b3c0aaf5d11a775ecb371aa4b772f2f5a3db60d805482168317905573ec31176d4df0509115abc8065a8a3f8275aaff2b6000527f5ae9b9f093f7a795cfd9b85a750b54920f0bea68bd7d6930515b2ae25c95a6ab80549091169091179055620002e6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028457805160ff1916838001178555620002b4565b82800160010185558215620002b4579182015b82811115620002b457825182559160200191906001019062000297565b50620002c2929150620002c6565b5090565b620002e391905b80821115620002c25760008155600101620002cd565b90565b611c5880620002f66000396000f3006080604052600436106101d65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b81146101f657806306fdde03146102295780630f34dc16146102b357806310d0ffdd146102e857806318160ddd146103005780631d5459f71461031557806322609373146103385780632505c4451461035057806327defa1f14610365578063294205b41461037a578063313ce567146103a05780634000aea0146103cb5780634b750334146103fc57806356d399e8146104115780635e079aa5146104265780636284ae411461045757806366042e7a1461046c57806367d326ef14610481578063688abbf7146104a25780636b2f4632146104bc57806370a08231146104d157806376be1585146104f25780637ff276bd146105135780638328b610146105285780638620410b1461054057806387c95058146105555780638974372d1461057b578063949e8acd1461058357806395d89b4114610598578063a4d55686146105ad578063a810a54c146105c2578063a9059cbb146105dc578063b84c824614610600578063c47f002714610659578063e4849b32146106b2578063e9fad8ee146106ca578063f088d547146106df578063fdb5a03e146106f3575b640ba43b74003a11156101e857600080fd5b6101f3346000610708565b50005b34801561020257600080fd5b50610217600160a060020a03600435166107aa565b60408051918252519081900360200190f35b34801561023557600080fd5b5061023e6107e5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610278578181015183820152602001610260565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102bf57600080fd5b506102d4600160a060020a0360043516610872565b604080519115158252519081900360200190f35b3480156102f457600080fd5b50610217600435610887565b34801561030c57600080fd5b506102176108dc565b34801561032157600080fd5b50610336600160a060020a03600435166108e3565b005b34801561034457600080fd5b50610217600435610959565b34801561035c57600080fd5b506102d46109b9565b34801561037157600080fd5b506102d46109da565b34801561038657600080fd5b50610336600160a060020a036004351660243515156109e3565b3480156103ac57600080fd5b506103b5610a2d565b6040805160ff9092168252519081900360200190f35b3480156103d757600080fd5b506102d460048035600160a060020a0316906024803591604435918201910135610a32565b34801561040857600080fd5b50610217610b6c565b34801561041d57600080fd5b50610217610bda565b34801561043257600080fd5b5061043b610be0565b60408051600160a060020a039092168252519081900360200190f35b34801561046357600080fd5b506103b5610bef565b34801561047857600080fd5b50610217610c39565b34801561048d57600080fd5b50610336600160a060020a0360043516610c4e565b3480156104ae57600080fd5b506102176004351515610cf4565b3480156104c857600080fd5b50610217610d37565b3480156104dd57600080fd5b50610217600160a060020a0360043516610d3c565b3480156104fe57600080fd5b506102d4600160a060020a0360043516610d57565b34801561051f57600080fd5b50610217610d6c565b34801561053457600080fd5b50610336600435610d72565b34801561054c57600080fd5b50610217610d96565b34801561056157600080fd5b50610336600160a060020a03600435166024351515610dfc565b610336610e46565b34801561058f57600080fd5b50610217610ed4565b3480156105a457600080fd5b5061023e610ee7565b3480156105b957600080fd5b50610217610f3f565b3480156105ce57600080fd5b506103366004351515610f45565b3480156105e857600080fd5b506102d4600160a060020a0360043516602435611036565b34801561060c57600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526103369436949293602493928401919081908401838280828437509497506111679650505050505050565b34801561066557600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261033694369492936024939284019190819084018382808284375094975061119d9650505050505050565b3480156106be57600080fd5b506103366004356111ce565b3480156106d657600080fd5b50610336611366565b610217600160a060020a0360043516611391565b3480156106ff57600080fd5b506103366113af565b6000808033321461071857600080fd5b849150671bc16d674ec8000082111561075d576804563918244f400000610740303184611467565b1161075d57671bc16d674ec80000915061075a8583611467565b90505b61076982856000611479565b5060008111156107a257604051339082156108fc029083906000818181858888f193505050501580156107a0573d6000803e3d6000fd5b505b505092915050565b600160a060020a03166000908152600a6020908152604080832054600890925290912054600d54680100000000000000009102919091030490565b60018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561086a5780601f1061083f5761010080835404028352916020019161086a565b820191906000526020600020905b81548152906001019060200180831161084d57829003601f168201915b505050505081565b60106020526000908152604090205460ff1681565b6000808080806108a261089b876014611a0d565b6064611a3f565b93506108b261089b876005611a0d565b92506108c76108c18786611467565b84611467565b91506108d282611a56565b9695505050505050565b600c545b90565b336000818152600e602052604090205460ff16151561090157600080fd5b60035474010000000000000000000000000000000000000000900460ff161561092957600080fd5b506003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000806000806000600c54861115151561097257600080fd5b61097b86611ae8565b935061099461089b8561098c610bef565b60ff16611a0d565b92506109a461089b856005611a0d565b91506108d26109b38585611467565b83611467565b60035474010000000000000000000000000000000000000000900460ff1681565b600f5460ff1681565b336000818152600e602052604090205460ff161515610a0157600080fd5b50600160a060020a03919091166000908152601060205260409020805460ff1916911515919091179055565b601281565b600080600160a060020a0386161515610a4a57600080fd5b600160a060020a03861660009081526010602052604090205460ff161515600114610a7457600080fd5b610a7e8686611036565b1515610a8957600080fd5b610a9286611b52565b15610b6057506040517fc0ee0b8a000000000000000000000000000000000000000000000000000000008152336004820181815260248301879052606060448401908152606484018690528893600160a060020a0385169363c0ee0b8a9390928a928a928a929091608401848480828437820191505095505050505050602060405180830381600087803b158015610b2957600080fd5b505af1158015610b3d573d6000803e3d6000fd5b505050506040513d6020811015610b5357600080fd5b50511515610b6057600080fd5b50600195945050505050565b6000806000806000600c5460001415610b8c57640218711a009450610bd3565b610b9d670de0b6b3a7640000611ae8565b9350610bae61089b8561098c610bef565b9250610bbe61089b856005611a0d565b9150610bcd6109b38585611467565b90508094505b5050505090565b60065481565b600354600160a060020a031681565b60008060008060008054421015610c095760289450610bd3565b6000544203935062278d008410610c235760149450610bd3565b50505062278d0060149190910204602803919050565b6000610c49600554600454611467565b905090565b336000818152600e602052604090205460ff161515610c6c57600080fd5b60035474010000000000000000000000000000000000000000900460ff1615610c9457600080fd5b506003805474ff000000000000000000000000000000000000000019600160a060020a0390931673ffffffffffffffffffffffffffffffffffffffff19909116179190911674010000000000000000000000000000000000000000179055565b60003382610d0a57610d05816107aa565b610d2e565b600160a060020a038116600090815260096020526040902054610d2c826107aa565b015b91505b50919050565b303190565b600160a060020a031660009081526008602052604090205490565b600e6020526000908152604090205460ff1681565b60055481565b336000818152600e602052604090205460ff161515610d9057600080fd5b50600655565b6000806000806000600c5460001415610db65764028fa6ae009450610bd3565b610dc7670de0b6b3a7640000611ae8565b9350610dd761089b856014611a0d565b9250610de761089b856005611a0d565b9150610bcd610df68585611b5a565b83611b5a565b336000818152600e602052604090205460ff161515610e1a57600080fd5b50600160a060020a03919091166000908152600e60205260409020805460ff1916911515919091179055565b336000818152600e602052604081205490919060ff161515610e6757600080fd5b610e75600554600454611467565b915060008211610e8457600080fd5b610e9060045483611b5a565b600455600354604051600160a060020a039091169062061a809084906000818181858888f193505050501515610ed057610ecc60045483611467565b6004555b5050565b600033610ee081610d3c565b91505b5090565b6002805460408051602060018416156101000260001901909316849004601f8101849004840282018401909252818152929183018282801561086a5780601f1061083f5761010080835404028352916020019161086a565b60045481565b600080600080610f556001610cf4565b11610f5f57600080fd5b339250610f6c6000610cf4565b9150610f7782610887565b600160a060020a0384166000818152600a60209081526040808320805468010000000000000000890201905560099091528082208054908390559051950194929350909184156108fc0291859190818181858888f19350505050158015610fe2573d6000803e3d6000fd5b506040805183815260208101839052851515818301529051600160a060020a038516917f2c0790d4cb2a4cd6281eeb9a251fcfb577eacacbf422f94ff8a2888b924b167b919081900360600190a250505050565b6000806000611043610ed4565b1161104d57600080fd5b503360008181526008602052604090205483111561106a57600080fd5b60006110766001610cf4565b1115611086576110866001610f45565b600160a060020a0381166000908152600860205260409020546110a99084611467565b600160a060020a0380831660009081526008602052604080822093909355908616815220546110d89084611b5a565b600160a060020a03858116600081815260086020908152604080832095909555600d8054948716808452600a83528684208054968b02909603909555548383529185902080549289029092019091558351878152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3600191505b5092915050565b336000818152600e602052604090205460ff16151561118557600080fd5b8151611198906002906020850190611b9e565b505050565b336000818152600e602052604090205460ff1615156111bb57600080fd5b8151611198906001906020850190611b9e565b6000806000806000806000806111e2610ed4565b116111ec57600080fd5b3360008181526008602052604090205490975088111561120b57600080fd5b87955061121786611ae8565b945061122861089b8661098c610bef565b935061123861089b866005611a0d565b92506112476108c18686611467565b915061125560055484611b5a565b600555600c546112659087611467565b600c55600160a060020a03871660009081526008602052604090205461128b9087611467565b600160a060020a038816600090815260086020908152604080832093909355600d54600a909152918120805492890268010000000000000000860201928390039055600c549192501015611301576112fd600d54600c546801000000000000000087028115156112f757fe5b04611b5a565b600d555b86600160a060020a03167f8d3a0130073dbd54ab6ac632c05946df540553d3b514c9f8165b4ab7f2b1805e878442611337610d96565b604080519485526020850193909352838301919091526060830152519081900360800190a25050505050505050565b336000818152600860205260408120549081111561138757611387816111ce565b610ed06000610f45565b6000640ba43b74003a11156113a557600080fd5b610d313483610708565b6000806000806113bf6001610cf4565b116113c957600080fd5b6113d36000610cf4565b336000818152600a60209081526040808320805468010000000000000000870201905560099091528120805490829055909201945092506114179084906001611479565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b60008282111561147357fe5b50900390565b60008060008060008060008060008b6000544210151561149e57600f805460ff191690555b600f5460ff1680156114c15750676124fee993bc0000816114bd610d37565b0311155b1561179b573360009081526007602052604090205460ff16151560011480156115045750336000908152600b6020526040902054670de0b6b3a764000090820111155b151561150f57600080fd5b336000908152600b60205260409020546115299082611b5a565b336000908152600b602052604090205561154761089b8e6014611a0d565b9850611554896003611a3f565b975061156461089b8e6005611a0d565b96506115708989611467565b955061158561157f8e8b611467565b88611467565b945061159360055488611b5a565b60055561159f85611a56565b935068010000000000000000860292506000841180156115c95750600c546115c78582611b5a565b115b15156115d457600080fd5b600160a060020a038c16158015906115f55750600160a060020a038c163314155b801561161b5750600654600160a060020a038d1660009081526008602052604090205410155b1561166157600160a060020a038c166000908152600960205260409020546116439089611b5a565b600160a060020a038d1660009081526009602052604090205561167c565b61166b8689611b5a565b955068010000000000000000860292505b6000600c5411156116e057611693600c5485611b5a565b600c8190556801000000000000000087028115156116ad57fe5b600d8054929091049091019055600c546801000000000000000087028115156116d257fe5b0484028303830392506116e6565b600c8490555b336000908152600860205260409020546117009085611b5a565b33600081815260086020908152604080832094909455600d54600a90915292902080549287028690039283019055909250600160a060020a038d16907fc83715e038ec5bec49b994d2aad02d046a8bed3d70fd8213bb849e43e971fe728f878f42611769610d96565b6040805195865260208601949094529115158484015260608401526080830152519081900360a00190a38399506119fd565b600f805460ff191690556117b361089b8e6014611a0d565b98506117c0896003611a3f565b97506117d061089b8e6005611a0d565b96506117dc8989611467565b95506117eb61157f8e8b611467565b94506117f960055488611b5a565b60055561180585611a56565b9350680100000000000000008602925060008411801561182f5750600c5461182d8582611b5a565b115b151561183a57600080fd5b600160a060020a038c161580159061185b5750600160a060020a038c163314155b80156118815750600654600160a060020a038d1660009081526008602052604090205410155b156118c757600160a060020a038c166000908152600960205260409020546118a99089611b5a565b600160a060020a038d166000908152600960205260409020556118e2565b6118d18689611b5a565b955068010000000000000000860292505b6000600c541115611946576118f9600c5485611b5a565b600c81905568010000000000000000870281151561191357fe5b600d8054929091049091019055600c5468010000000000000000870281151561193857fe5b04840283038303925061194c565b600c8490555b336000908152600860205260409020546119669085611b5a565b33600081815260086020908152604080832094909455600d54600a90915292902080549287028690039283019055909250600160a060020a038d16907fc83715e038ec5bec49b994d2aad02d046a8bed3d70fd8213bb849e43e971fe728f878f426119cf610d96565b6040805195865260208601949094529115158484015260608401526080830152519081900360a00190a38399505b5050505050505050509392505050565b600080831515611a205760009150611160565b50828202828482811515611a3057fe5b0414611a3857fe5b9392505050565b6000808284811515611a4d57fe5b04949350505050565b600c546000906b204fce5e3e25026110000000908290633b9aca00611ad5611acf7259aedfc10d7279c5eed140164540000000000088026002850a670de0b6b3a764000002016f0f0bdc21abb48db201e86d40000000008502017704140c78940f6a24fdffc78873d4490d210000000000000001611b69565b85611467565b811515611ade57fe5b0403949350505050565b600c54600090670de0b6b3a7640000838101918101908390611b3f640218711a00828504633b9aca0002018702600283670de0b6b3a763ffff1982890a8b90030104633b9aca0002811515611b3957fe5b04611467565b811515611b4857fe5b0495945050505050565b6000903b1190565b600082820183811015611a3857fe5b80600260018201045b81811015610d31578091506002818285811515611b8b57fe5b0401811515611b9657fe5b049050611b72565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611bdf57805160ff1916838001178555611c0c565b82800160010185558215611c0c579182015b82811115611c0c578251825591602001919060010190611bf1565b50610ee3926108e09250905b80821115610ee35760008155600101611c185600a165627a7a7230582033936f61970caa59dd9e8ab159a7a77b6b27c24f692f1a73ebddee6bd9c276290029

   Swarm Source:
bzzr://33936f61970caa59dd9e8ab159a7a77b6b27c24f692f1a73ebddee6bd9c27629

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.