Sponsored Link:   Alt.Estate - ERC20 for Real Estate. Live Prototype in Japan, USA, EU.Buy ALT tokens. Endorsed by partners of PWC, Knight Frank.
Contract Overview
Balance: 112.858988636500053553 Ether
Ether Value: $64,880.38 (@ $574.88/ETH)
Transactions: 12621 txns
Token Contract: Proof of Trevon James (PoTJ)
 Latest 25 txns from a total Of 12621 transactions (+10 PendingTxns)
View All

TxHash Age From To Value [TxFee]
0x4ab16662117b1b170276ace07b0e878a55298f6dfab67d6c53142e63d4e8eff4(pending)0x8d52100632b3471caad510bb0f9facbccf42d338  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether(pending)
0xacafc0af0fd230ead7bd2c9459ee670fb5184c33bbea6112f545faaef15476b7(pending)0x8d52100632b3471caad510bb0f9facbccf42d338  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether(pending)
0xa087ad31e5e9ef1d8b39e4c32a01b192bb7dbc8a80413c1d25a84599d4ec3fb6(pending)0x8d52100632b3471caad510bb0f9facbccf42d338  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether(pending)
0x66225b5d192c46faf0c1f58c67da0f4ff3414ffb2f8b906142e115a1b0c1235a(pending)0x4556fa977b7918431f88887a1a20cbbb431ad069  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530.115 Ether(pending)
0x43426c708fa5240eca0e504b95c2a3785a0f445df722e79305cae8cfe9346ea1(pending)0x82ee1dd3529b28b6df2b7a1f05513e72e4623817  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530.001 Ether(pending)
0xcb9c76c602344c6f7a9a92e78869e7b8dc5a6baaa67dad541688d6f682aaced2(pending)0xa756b0224aaeabb665c4569cd0d6c156b8793bb6  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether(pending)
0xc3b0b12217cafbe225aaa6b4de59afd067c7924130c36b85b987b4b4f2e11006(pending)0x0f5071a72d819a4dc1a03122cd8bb05d02884db3  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530.2 Ether(pending)
0xdf861c93ea51388c7b5c12e3299e6fbc0ac79fa348668819452402abd99ff990(pending)0x0f21d37eda174aac3d5f98537983304c0705fdda  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether(pending)
0xaad8c17f8cb4472a51e761a71b2f3005269bcabf255b73f5a65ea0f0fcbffc62(pending)0x2073128ac8e95662013070c58d77d46019d0e312  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether(pending)
0x01fce08f850ef863c6af163652087414381cfe79b411ef40f2404d2f4ec0e288(pending)0x2581a5d917d568364d3d55f9152356f4afb30ab6  IN  0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether(pending)
0x4a182bd7e46be180659cfe7ccd306daa8fc2376b0f5d4d093943b797dd0a663144 mins ago0xf8383fbf5611ec71a9eaac0e7e3e5e827b4c7a02  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530.095 Ether0.0004075776
0xddcc3c50e030bbe07bfa9e1ae28fd3e7a878abe5959b01d22e00fddf08456df43 hrs 27 mins ago0x5864745720a6c4b577f07ac3fe5d39ea20f050b1  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.00031278
0x555423ae583ee9917e358e8a76c2e768568a8a0cf51c1d01b50c24f732760ada3 hrs 42 mins ago0x869dba8174776a5d0df672f4ae144c46a07f395c  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.000217295
0x0af50e7f37ae827833b432f4794652699a277354e75d73766496a763a3069c7a3 hrs 45 mins ago0xf0d598ca964bc7679449cdeac9fe821dfbbf35b4  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.000390975
0x1a6404707950b4103d61047a7468278ce11e3086b9a8d9d6c3bb868e8861a6854 hrs 17 mins ago0xaa7a7c2decb180f68f11e975e6d92b5dc06083a6  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.000217295
0x93cfb38d3b60ed48b696acc919c64edb2fddeb4800e390700230d6b51ee598484 hrs 22 mins ago0x24b23bb643082026227e945c7833b81426057b10  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.000390975
0x32372a2369a56b9c6e5e65b9df9ce6f71199a588399b5e1966351a6c7384ee304 hrs 32 mins ago0x404015fb24d90ee668e65798b821bfcd3b8e8f10  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.00043459
0x28728d25660b34a472027bdfa72b68098fca5248aefac61fb0226c13e9ceb0254 hrs 34 mins ago0x404015fb24d90ee668e65798b821bfcd3b8e8f10  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.00049661
0x1f7b206022302fa8a7add13bd837ccffa157b4fd259414338971a58d0a52c1ab4 hrs 46 mins ago0x869dba8174776a5d0df672f4ae144c46a07f395c  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.000198644
0x7ba37fa03ad367787101373b17d4d629102180db8d5867249672d80ba6f33c6c5 hrs 50 mins ago0x24b23bb643082026227e945c7833b81426057b10  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.00046917
0xfc762d1771e3535acf477e8f9f1faf5ef1dde893d2ff9d6a43a812a8cadf6e196 hrs 16 mins ago0x88795661e658c739ceab3c4d3f191cfe8312b5e0  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.00043459
0xd313e216407aab12e0f07b44f487c4d54b209acfb815f81129b45c09f9afb4b36 hrs 18 mins ago0x88795661e658c739ceab3c4d3f191cfe8312b5e0  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.00049661
0xd4e1c10ce4d773c6f1aa1dec2b397dfb666a1508ce1be30173b72741b43bcc1f6 hrs 32 mins ago0x168efa40108330c4f85f0191be36169b53daa719  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.000271523
0xc405e4b32658b9c2fcf554f9fac7db290a919b0f85697c7aa49f2a6798d6e6026 hrs 38 mins ago0x168efa40108330c4f85f0191be36169b53daa719  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530.0145 Ether0.000708183
0x3d4c42cb00a561fa75619ae0d68d55667fc4dc9d3ab43e24a8f723fc4a535c976 hrs 43 mins ago0x904c2761a450dd3c483076ea9559475e6467ca3d  IN   0xc28e860c9132d55a184f9af53fc85e90aa3a01530 Ether0.000086918
[ 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
0x555423ae583ee9917e358e8a76c2e768568a8a0cf51c1d01b50c24f732760ada56841883 hrs 42 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x869dba8174776a5d0df672f4ae144c46a07f395c0.051248574322340266 Ether
0x1a6404707950b4103d61047a7468278ce11e3086b9a8d9d6c3bb868e8861a68556840574 hrs 17 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530xaa7a7c2decb180f68f11e975e6d92b5dc06083a60.007572823124899427 Ether
0x32372a2369a56b9c6e5e65b9df9ce6f71199a588399b5e1966351a6c7384ee3056840104 hrs 32 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x404015fb24d90ee668e65798b821bfcd3b8e8f100.455088717120555094 Ether
0xfc762d1771e3535acf477e8f9f1faf5ef1dde893d2ff9d6a43a812a8cadf6e1956836106 hrs 16 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x88795661e658c739ceab3c4d3f191cfe8312b5e00.031018509361127179 Ether
0x3d4c42cb00a561fa75619ae0d68d55667fc4dc9d3ab43e24a8f723fc4a535c9756834986 hrs 43 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x904c2761a450dd3c483076ea9559475e6467ca3d0.007156995500349679 Ether
0x6aabbe0385e1a458f40a410227ab142f0edfd9010fcd818800e9882dace2aa0156829179 hrs 8 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530xe34f13405be9d46cdf1aa0dbeee0c4888d18c27d0.017201509452287303 Ether
0x01aa35a2197cc5f5791b2f99ac15c2b5f372b787708c9f0ca3232993fabab72d568240911 hrs 15 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x659b50b7f3ddd3d0df1727bc3fff02e016a7e91d0.225432183011510743 Ether
0x8b5ecb8468e9eb0648ea1a76b1d1723aa3c49ba47918f6a3344dad8a82d02f3d568239811 hrs 17 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x4711b485be9179553e5df3b04684ef1f103d3fc70.172785808914586906 Ether
0x1aa3365fefa88c67a9c14b84ffd7517e7c14b6919795e7adb31c726dc2b35dd2568236111 hrs 26 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x37919e453d9aa34c4fb6f656d61c6e8a0bd5f2dc0.005695866317139968 Ether
0xb0201b42ad7e99654c9c607f66c20d519b9f8a7d947d56b307d4b1af3588c231568233311 hrs 33 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x38299f853e7b3f3aeed835d72ae45af86765a58e0.003310982925120537 Ether
0x55e5091754322a7db983d5763f0b1716546043f2fa5c8c3798a8bd190f1bf13c568163914 hrs 36 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x24b23bb643082026227e945c7833b81426057b100.013327704631034201 Ether
0x171a0887514d17f276238300ed495513bd12f5fa5b64321e112dda9673db457e568160114 hrs 45 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x5ec92834a6bc25fe70de9483f6f4b1051fcc0c960.004128988201221275 Ether
0x19ac1aa8e60d78eed2a450fd05e9452ac1b3a604fd6e31d2ded8ffe028c62b2e568144415 hrs 30 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x5864745720a6c4b577f07ac3fe5d39ea20f050b10.142104215370765489 Ether
0xc90948f0db2e4c5d8b1565e6edc50bb47c5794f2b3df731988700148635e62b1568142415 hrs 34 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x404015fb24d90ee668e65798b821bfcd3b8e8f100.004258562991540525 Ether
0x61c05c736772185c2f7f8c7ff9dca05f4855f1a1a7f13e03c9a1ce4d6ad98eb6568142315 hrs 34 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530xaa7a7c2decb180f68f11e975e6d92b5dc06083a60.003705299728710951 Ether
0x751fe657b21de8caded65eeeb90500a453318866e766c5541ac3bb04f7f707ef568124116 hrs 21 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x131d1f6ee445fbef3eb2fc44f069c981030185c60.242955306326815399 Ether
0xcd32dc39420f917f704dbb190bed37a773d210957d17941baecdd0c8179f784f568112616 hrs 48 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x95b39bdc4f63b5b093a62991ad1adca27c58b8360.003487183247587703 Ether
0xa337c4097738ff4a27ff8b17399c536b74a72b387a4a427419c1f325eb6cfc9f568103717 hrs 11 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530xaa7a7c2decb180f68f11e975e6d92b5dc06083a60.004143586367408743 Ether
0xcf2417bfe482ad46a95e994c5dbaf0925ddb37d0bc6aa39ac6a4b0b2e010a7c0568092917 hrs 38 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x882a7ea694c2e369a95423fdd355a3a9652a27f30.321865403942569085 Ether
0x3729b95d0d7b13ce8709697e93e475cabb543345e3e162af02aaa5028ff136b8568084018 hrs 1 min ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530xf5d317a9cb064c29a004aad9d90030a5ee76efda0.011515648687433021 Ether
0xca047e2261acd334e896161089f2260213623cebe4a4265834aab415939314fe568075118 hrs 21 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x869dba8174776a5d0df672f4ae144c46a07f395c0.006884169527969901 Ether
0x3c37c3266efc5f372eca100b40f22006a6d0db0634ddd44bea756e1256bbb2dd568051619 hrs 23 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x49742b4c4d4f358e96173272d952ac3a4352001e0.020480498333788473 Ether
0x830249e4d7e9319ae2117a4cdc97b245b3cb1f7742b14ad548eb8a2226cb35f9568041619 hrs 46 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x77fcfc21e7d62c5a8df712bbc070804c1a97472c0.026523953101685633 Ether
0xd13cb2ca4268a40ee18cb4e746c44e21094223913338217fe3ef3960a7b3779a567970122 hrs 38 mins ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530xa8d41bd33dd28592d3f9a133e9b3e7b0ec6f0fd50.005899405602789837 Ether
0x9b4e90103a811022d50c7a17c793d8698a19b17722aedec81f51cea2e4f8cc5956789371 day 1 hr ago0xc28e860c9132d55a184f9af53fc85e90aa3a01530x24923d57aea45648762c5fd1a9fba42a732e54830.038747094863459516 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: POTJ
Compiler Version: v0.4.20+commit.3155dd80
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.20;

/*
* Trevon James Presents....
* https://potj.me/
* https://discord.gg/8FdGtS8
* Twitter: https://twitter.com/BitcoinTre
* YouTube: https://www.youtube.com/channel/UCWZbtMeOAb_qpEVUl551l7w
* 
* 
*
* Proof of Trevon James
* Don't Talk To Me Unless It's About Intangible Coins.
*
* -> What?
* Incorporated the strong points of different POW{x}, best config:
* [✓] 20% dividends for token purchase, shared among all token holders.
* [✓] 10% dividends for token transfer, shared among all token holders.
* [✓] 25% dividends for token selling.
* [✓] 7% dividends is given to referrer.
* [✓] 50 tokens to activate Masternodes.
*
*/

contract POTJ {


    /*=================================
    =            MODIFIERS            =
    =================================*/

    /// @dev Only people with tokens
    modifier onlyBagholders {
        require(myTokens() > 0);
        _;
    }

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


    /*==============================
    =            EVENTS            =
    ==============================*/

    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        address indexed referredBy,
        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
    );

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


    /*=====================================
    =            CONFIGURABLES            =
    =====================================*/

    string public name = "Proof of Trevon James";
    string public symbol = "PoTJ";
    uint8 constant public decimals = 18;

    /// @dev 15% dividends for token purchase
    uint8 constant internal entryFee_ = 20;

    /// @dev 10% dividends for token transfer
    uint8 constant internal transferFee_ = 10;

    /// @dev 25% dividends for token selling
    uint8 constant internal exitFee_ = 25;

    /// @dev 35% of entryFee_ (i.e. 7% dividends) is given to referrer
    uint8 constant internal refferalFee_ = 35;

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

    /// @dev proof of stake (defaults at 50 tokens)
    uint256 public stakingRequirement = 50e18;


   /*=================================
    =            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_;
    uint256 internal profitPerShare_;


    /*=======================================
    =            PUBLIC FUNCTIONS           =
    =======================================*/

    /// @dev 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) {
        purchaseTokens(msg.value, _referredBy);
    }

    /**
     * @dev Fallback function to handle ethereum that was send straight to the contract
     *  Unfortunately we cannot use a referral address this way.
     */
    function() payable public {
        purchaseTokens(msg.value, 0x0);
    }

    /// @dev 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
        onReinvestment(_customerAddress, _dividends, _tokens);
    }

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

    /// @dev 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
        onWithdraw(_customerAddress, _dividends);
    }

    /// @dev 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 _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
        onTokenSell(_customerAddress, _tokens, _taxedEthereum, now, buyPrice());
    }


    /**
     * @dev Transfer tokens from the caller to a new holder.
     *  Remember, there's a 15% fee here as well.
     */
    function transfer(address _toAddress, uint256 _amountOfTokens) onlyBagholders public returns (bool) {
        // setup
        address _customerAddress = msg.sender;

        // make sure we have the requested tokens
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);

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

        // liquify 10% of the tokens that are transfered
        // these are dispersed to shareholders
        uint256 _tokenFee = SafeMath.div(SafeMath.mul(_amountOfTokens, transferFee_), 100);
        uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee);
        uint256 _dividends = tokensToEthereum_(_tokenFee);

        // burn the fee tokens
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee);

        // exchange tokens
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);

        // update dividend trackers
        payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _taxedTokens);

        // disperse dividends among holders
        profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);

        // fire event
        Transfer(_customerAddress, _toAddress, _taxedTokens);

        // ERC20
        return true;
    }


    /*=====================================
    =      HELPERS AND CALCULATORS        =
    =====================================*/

    /**
     * @dev Method to view the current Ethereum stored in the contract
     *  Example: totalEthereumBalance()
     */
    function totalEthereumBalance() public view returns (uint256) {
        return this.balance;
    }

    /// @dev Retrieve the total token supply.
    function totalSupply() public view returns (uint256) {
        return tokenSupply_;
    }

    /// @dev Retrieve the tokens owned by the caller.
    function myTokens() public view returns (uint256) {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress);
    }

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

    /// @dev Retrieve the token balance of any single address.
    function balanceOf(address _customerAddress) public view returns (uint256) {
        return tokenBalanceLedger_[_customerAddress];
    }

    /// @dev Retrieve the dividend balance of any single address.
    function dividendsOf(address _customerAddress) public view returns (uint256) {
        return (uint256) ((int256) (profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
    }

    /// @dev Return the sell 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 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);

            return _taxedEthereum;
        }
    }

    /// @dev Return the buy 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 _taxedEthereum = SafeMath.add(_ethereum, _dividends);

            return _taxedEthereum;
        }
    }

    /// @dev 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 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);

        return _amountOfTokens;
    }

    /// @dev 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 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }


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

    /// @dev Internal function to actually purchase the tokens.
    function purchaseTokens(uint256 _incomingEthereum, address _referredBy) internal returns (uint256) {
        // data setup
        address _customerAddress = msg.sender;
        uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingEthereum, entryFee_), 100);
        uint256 _referralBonus = SafeMath.div(SafeMath.mul(_undividedDividends, refferalFee_), 100);
        uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);
        uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _undividedDividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        uint256 _fee = _dividends * magnitude;

        // no point in continuing execution if OP is a poorfag 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 != _customerAddress &&

            // 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_[_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;

        // fire event
        onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens, _referredBy, now, buyPrice());

        return _amountOfTokens;
    }

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

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

    /// @dev This is where all your gas goes.
    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 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":"_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":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","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":false,"inputs":[],"name":"withdraw","outputs":[],"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":"_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":"buyPrice","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":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"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"},{"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":"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"}],"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
606060405260408051908101604052601581527f50726f6f66206f6620547265766f6e204a616d65730000000000000000000000602082015260009080516200004d929160200190620000b7565b5060408051908101604052600481527f506f544a000000000000000000000000000000000000000000000000000000006020820152600190805162000097929160200190620000b7565b506802b5e3af16b18800006002553415620000b157600080fd5b6200015c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000fa57805160ff19168380011785556200012a565b828001600101855582156200012a579182015b828111156200012a5782518255916020019190600101906200010d565b50620001389291506200013c565b5090565b6200015991905b8082111562000138576000815560010162000143565b90565b610f8d806200016c6000396000f3006060604052600436106101105763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b811461011e57806306fdde031461014f57806310d0ffdd146101d957806318160ddd146101ef5780632260937314610202578063313ce567146102185780633ccfd60b146102415780634b7503341461025657806356d399e814610269578063688abbf71461027c5780636b2f46321461029457806370a08231146102a75780638620410b146102c6578063949e8acd146102d957806395d89b41146102ec578063a9059cbb146102ff578063e4849b3214610335578063e9fad8ee1461034b578063f088d5471461035e578063fdb5a03e14610372575b61011b346000610385565b50005b341561012957600080fd5b61013d600160a060020a03600435166105ed565b60405190815260200160405180910390f35b341561015a57600080fd5b610162610628565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561019e578082015183820152602001610186565b50505050905090810190601f1680156101cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101e457600080fd5b61013d6004356106c6565b34156101fa57600080fd5b61013d6106f9565b341561020d57600080fd5b61013d6004356106ff565b341561022357600080fd5b61022b61073b565b60405160ff909116815260200160405180910390f35b341561024c57600080fd5b610254610740565b005b341561026157600080fd5b61013d61080c565b341561027457600080fd5b61013d610863565b341561028757600080fd5b61013d6004351515610869565b341561029f57600080fd5b61013d6108ac565b34156102b257600080fd5b61013d600160a060020a03600435166108ba565b34156102d157600080fd5b61013d6108d5565b34156102e457600080fd5b61013d610920565b34156102f757600080fd5b610162610932565b341561030a57600080fd5b610321600160a060020a036004351660243561099d565b604051901515815260200160405180910390f35b341561034057600080fd5b610254600435610b48565b341561035657600080fd5b610254610cc4565b61013d600160a060020a0360043516610cfb565b341561037d57600080fd5b610254610d07565b600033818080808080806103a461039d8c6014610dc2565b6064610df8565b96506103b461039d886023610dc2565b95506103c08787610e0f565b94506103cc8b88610e0f565b93506103d784610e21565b9250680100000000000000008502915060008311801561040157506006546103ff8482610eb3565b115b151561040c57600080fd5b600160a060020a038a1615801590610436575087600160a060020a03168a600160a060020a031614155b801561045c5750600254600160a060020a038b1660009081526003602052604090205410155b156104a257600160a060020a038a166000908152600460205260409020546104849087610eb3565b600160a060020a038b166000908152600460205260409020556104bd565b6104ac8587610eb3565b945068010000000000000000850291505b60006006541115610521576104d460065484610eb3565b60068190556801000000000000000086028115156104ee57fe5b6007805492909104909101905560065468010000000000000000860281151561051357fe5b048302820382039150610527565b60068390555b600160a060020a03881660009081526003602052604090205461054a9084610eb3565b600160a060020a03808a166000818152600360209081526040808320959095556007546005909152939020805493870286900393840190559192508b16907f8032875b28d82ddbd303a9e4e5529d047a14ecb6290f80012a81b7e6227ff1ab8d86426105b46108d5565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a350909998505050505050505050565b600160a060020a0316600090815260056020908152604080832054600390925290912054600754680100000000000000009102919091030490565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106be5780601f10610693576101008083540402835291602001916106be565b820191906000526020600020905b8154815290600101906020018083116106a157829003601f168201915b505050505081565b60008080806106d961039d866014610dc2565b92506106e58584610e0f565b91506106f082610e21565b95945050505050565b60065490565b600080600080600654851115151561071657600080fd5b61071f85610ec2565b925061072f61039d846019610dc2565b91506106f08383610e0f565b601281565b600080600061074f6001610869565b1161075957600080fd5b3391506107666000610869565b600160a060020a0383166000818152600560209081526040808320805468010000000000000000870201905560049091528082208054929055920192509082156108fc0290839051600060405180830381858888f1935050505015156107cb57600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b6000806000806006546000141561082a57640218711a00935061085d565b61083b670de0b6b3a7640000610ec2565b925061084b61039d846019610dc2565b91506108578383610e0f565b90508093505b50505090565b60025481565b6000338261087f5761087a816105ed565b6108a3565b600160a060020a0381166000908152600460205260409020546108a1826105ed565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a031660009081526003602052604090205490565b600080600080600654600014156108f35764028fa6ae00935061085d565b610904670de0b6b3a7640000610ec2565b925061091461039d846014610dc2565b91506108578383610eb3565b60003361092c816108ba565b91505090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106be5780601f10610693576101008083540402835291602001916106be565b6000806000806000806109ae610920565b116109b857600080fd5b33600160a060020a0381166000908152600360205260409020549094508611156109e157600080fd5b60006109ed6001610869565b11156109fb576109fb610740565b610a0961039d87600a610dc2565b9250610a158684610e0f565b9150610a2083610ec2565b9050610a2e60065484610e0f565b600655600160a060020a038416600090815260036020526040902054610a549087610e0f565b600160a060020a038086166000908152600360205260408082209390935590891681522054610a839083610eb3565b600160a060020a0388811660008181526003602090815260408083209590955560078054948a16835260059091528482208054948c02909403909355825491815292909220805492850290920190915554600654610af79190680100000000000000008402811515610af157fe5b04610eb3565b600755600160a060020a038088169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b6000806000806000806000610b5b610920565b11610b6557600080fd5b33600160a060020a038116600090815260036020526040902054909650871115610b8e57600080fd5b869450610b9a85610ec2565b9350610baa61039d856019610dc2565b9250610bb68484610e0f565b9150610bc460065486610e0f565b600655600160a060020a038616600090815260036020526040902054610bea9086610e0f565b600160a060020a0387166000908152600360209081526040808320939093556007546005909152918120805492880268010000000000000000860201928390039055600654919250901115610c5b57610c57600754600654680100000000000000008602811515610af157fe5b6007555b85600160a060020a03167f8d3a0130073dbd54ab6ac632c05946df540553d3b514c9f8165b4ab7f2b1805e868442610c916108d5565b6040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050565b33600160a060020a03811660009081526003602052604081205490811115610cef57610cef81610b48565b610cf7610740565b5050565b60006108a63483610385565b600080600080610d176001610869565b11610d2157600080fd5b610d2b6000610869565b33600160a060020a038116600090815260056020908152604080832080546801000000000000000087020190556004909152812080549082905590920194509250610d77908490610385565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b600080831515610dd55760009150610df1565b50828202828482811515610de557fe5b0414610ded57fe5b8091505b5092915050565b6000808284811515610e0657fe5b04949350505050565b600082821115610e1b57fe5b50900390565b6006546000906b204fce5e3e25026110000000908290633b9aca00610ea0610e9a7259aedfc10d7279c5eed140164540000000000088026002850a670de0b6b3a764000002016f0f0bdc21abb48db201e86d40000000008502017704140c78940f6a24fdffc78873d4490d210000000000000001610f2c565b85610e0f565b811515610ea957fe5b0403949350505050565b600082820183811015610ded57fe5b600654600090670de0b6b3a7640000838101918101908390610f19640218711a00828504633b9aca0002018702600283670de0b6b3a763ffff1982890a8b90030104633b9aca0002811515610f1357fe5b04610e0f565b811515610f2257fe5b0495945050505050565b80600260018201045b818110156108a6578091506002818285811515610f4e57fe5b0401811515610f5957fe5b049050610f355600a165627a7a72305820ae4b88f50b406a7a09a38f04fa4be89df8d2f5bf3e029f8320e56dcf651469010029

   Swarm Source:
bzzr://ae4b88f50b406a7a09a38f04fa4be89df8d2f5bf3e029f8320e56dcf65146901

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.