Contract 0xBd73E675e1Fa3d60a302C797dF5C82E558dA7ce1

 

TxHash Block Age From To Value [TxFee]
0xc9c06e9bb4a87c47f09a1a409153143df15610dbdc8604e32ec636a0aa83ead4724184740 mins ago0x8b625faad1e3dad266c4e33020d1be0277018b6c IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000351612
0x77d759badaa6ad33e05fefe533b4f3c2bb47d1eefbf09ac3fcc3abeb63341151724184042 mins ago0x8b625faad1e3dad266c4e33020d1be0277018b6c IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000798552
0x1b20f3d463bc25dfe82a3019e9f9e3d76d91bc95823b84e42f7e7235f192d0ab72412094 hrs 23 mins ago0x4f7df2685bf6deaf5332045250ad72d402dd5a92 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.00115062
0x24d6c509e95e08e88823bc2a51178693042a345b5e92d7167f051475f9e884dd72404918 hrs 27 mins ago0x57b803e31941c6138e716615f8e33710be5bb30e IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10.55 Ether0.000692504
0xf61b13e5401ec3f559911ccd74a4bd010f31b4040f415094be876804d8b3710672404498 hrs 41 mins ago0x3308408147c2607114f23987e05b46bebd9c4843 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.001254348
0x0451df8e7970c5f87748ab90bf16615ef5c5ea69b8461ec61123f4774e9884c272404208 hrs 49 mins ago0x3e3ea9d65b53741bf6e052a3392d2c168ef935e0 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.001142364
0x5f4312bbb555d366c5abab6114faeaa8a87e13172198e712c0ce21c8445042af72403249 hrs 22 mins ago0xf178c83b071710dcb4c49ec6925291663e589493 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000234222
0x94759afda788521e84d55cf8cebf6929463ea8bad1c3c88d62a7bc122904ef2872403179 hrs 24 mins ago0xf178c83b071710dcb4c49ec6925291663e589493 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000398124
0xbc1ede93f193c181fa96e0512ee0ad50dd7be3f640f823559334254f8f8ecae372403099 hrs 26 mins ago0xf178c83b071710dcb4c49ec6925291663e589493 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000398124
0xe39d8692a2d2f45411c2eddbddea61d6d714fdb5b077a96d81669bcfa26887e872402849 hrs 34 mins ago0xf178c83b071710dcb4c49ec6925291663e589493 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.00040709
0xbdc6b6b88225b57d309f16910c4c82277c3440084efea26a795bf4ffc94cd9a072402739 hrs 38 mins ago0xf178c83b071710dcb4c49ec6925291663e589493 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000195185
0x297cee26be85c9d30fb27958d28803ebd406ec26ec74903ae3c7a4c974ff618a72402639 hrs 42 mins ago0xf178c83b071710dcb4c49ec6925291663e589493 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.00011458
0x85409ae67c17a3443da68bd26ae09c1f71dd130b0234e15ba622e81ce9fd162572402409 hrs 49 mins ago0xf178c83b071710dcb4c49ec6925291663e589493 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000274992
0x1f867136bd32b51c9f975231234a601c159615db01d0ee91c57abc59d471152b72402369 hrs 50 mins ago0xf178c83b071710dcb4c49ec6925291663e589493 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.00022916
0x19780ae9464379912e389c8a4b2580fc4c12486c5afe6bd0262682da0a7f086e72402299 hrs 53 mins ago0xf178c83b071710dcb4c49ec6925291663e589493 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000137496
0xb89751029f803f671a81546a6e36ebe8dfbebf8780284f1a965b3c6907f0145772402219 hrs 55 mins ago0x99df5807db77ac14ce477f82a8d1653e841d6872 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000295776
0xc7d8892d735c259bf6a494186a90ac04e1284fec6aecbbc2c0666827174c6fc0724015110 hrs 15 mins ago0xfe2a12dfad83ade200a3322de94d98f444384a2a IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000468444
0xf68d7af0cf46990a8839ff7acc3f19dd4d1724a5e6be2d05c94b74f8f00aa6b1724014710 hrs 16 mins ago0xfe2a12dfad83ade200a3322de94d98f444384a2a IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000797016
0x5bc7ccfb1e59cc0eff50d75467421d819cbb79724e2a5dd98b50cec7e2eb6aa3724014210 hrs 18 mins ago0xfe2a12dfad83ade200a3322de94d98f444384a2a IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000274992
0xf885177185eefa06834cf14283b1a6eb1b0080957c9f6e86fa8950edd80aedd0723999711 hrs ago0xb40b412800e28ab51b2f1527d3e768e42dc8de13 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000872193
0x7717afa204ee5c4685bd2ef9d410e19bc888cc83a29a94c41b8f2f82cc673ea4723996511 hrs 12 mins ago0x42b8d8004dfa442770a1721575ff3ff4354c18c0 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000468444
0x4171058520facc23825fdee9f84f54d082adef63344e9bdc929f7b8b82e7ad11723989611 hrs 38 mins ago0x0ec2b42fd4f97019479d45ca4c2447bf3cf529d7 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.00022852
0x27d949f88d2c83ae002ef45761c572e34cc53b2ffbb3cd32a7c05603886f8812723974112 hrs 36 mins ago0x1db82c7b0917d80ba0c8dbbac29e04904c6ca7a0 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000468444
0x6c72ca2a2a59ffaf71be9d8056a179273c85794b662b00f14aaafd6e80aaa16b723953613 hrs 39 mins ago0xf11a444b88dfb4f98c310a3521d37b6f234b4371 IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.001254348
0x8e338a30414b223507dee3c09071221b9455854876a27ba82f71deabd56e4fd9723937814 hrs 37 mins ago0xd37195268a8b7678322cc3cf6a429c0f3e050fea IN  0xbd73e675e1fa3d60a302c797df5c82e558da7ce10 Ether0.000468444
[ Download CSV Export 

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

Parent TxHash Block Age From To Value
0xc9c06e9bb4a87c47f09a1a409153143df15610dbdc8604e32ec636a0aa83ead4724184740 mins ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x8b625faad1e3dad266c4e33020d1be0277018b6c0.208917987638538131 Ether
0x5f4312bbb555d366c5abab6114faeaa8a87e13172198e712c0ce21c8445042af72403249 hrs 22 mins ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10xf178c83b071710dcb4c49ec6925291663e5894930.26694081778759143 Ether
0xbdc6b6b88225b57d309f16910c4c82277c3440084efea26a795bf4ffc94cd9a072402739 hrs 38 mins ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10xf178c83b071710dcb4c49ec6925291663e5894930.006081032543747874 Ether
0xc7d8892d735c259bf6a494186a90ac04e1284fec6aecbbc2c0666827174c6fc0724015110 hrs 15 mins ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10xfe2a12dfad83ade200a3322de94d98f444384a2a1.448997093449654838 Ether
0x7717afa204ee5c4685bd2ef9d410e19bc888cc83a29a94c41b8f2f82cc673ea4723996511 hrs 12 mins ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x42b8d8004dfa442770a1721575ff3ff4354c18c013.146167609202958362 Ether
0x27d949f88d2c83ae002ef45761c572e34cc53b2ffbb3cd32a7c05603886f8812723974112 hrs 36 mins ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x1db82c7b0917d80ba0c8dbbac29e04904c6ca7a01.029051802128787366 Ether
0x8e338a30414b223507dee3c09071221b9455854876a27ba82f71deabd56e4fd9723937814 hrs 37 mins ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10xd37195268a8b7678322cc3cf6a429c0f3e050fea4.192056014765221243 Ether
0x663f422fe9cc7253bbae607d08f65ef414ec53794f7fe23a4f34591e8311c9e1723933614 hrs 49 mins ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x4f7386e985f118ff40dc7bc63fac4c15086375060.000374807578615355 Ether
0xb27c7f337db3b6578822b88955cee86f3a3493f1d21c1e581b2744a12279cd9e723924015 hrs 17 mins ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x6ed3c871f905acaad159e9f23ce2dc47ed39c2c51.449935402281319239 Ether
0x407c21ec67182667c59255e5017fa7a18905f912153ffe5890e138d37de3c00f72374561 day 1 hr ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x188cc7286af105be6f7a11585e2f3ae2f23d27ca0.551509521265534264 Ether
0xe4b14564f42dcf93a6b7ab9ecf45df091f3ce64d4c1b87f9243d61195795ee2b72367911 day 5 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x3255db93b4f78950fa7be34a3013739d255db5e30.008113756084636451 Ether
0x9717532a55c60a791e191d919ef0592bd67446ee447c7058dce36efd1c62f42572365431 day 6 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x9b48c98790f05a9c3a8808e1828a6d89e0a9710913.379689683004637535 Ether
0x2490940cbd9a2c4aaed447b6c0ea11237839b338738c1268ffacd35c9f26f8f472363201 day 7 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x6e0e66f846300a9e00062af27c3e190c95ccd2a60.103069382769765756 Ether
0xfe8e2ab477455ae8f86134ef647bcfc8e0b79c29d3c86acfa6308dd3f4e549fb72361391 day 8 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x19b84c79fa69c3ccd8159fb1265cf0fe8d23f5132.600521142736106509 Ether
0xaada47686d929f7296bc57ded2a0b74be3188b4858a6a426d8de1cea510475ae72353201 day 13 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10xe193bbb83f65a1ed8e2235d0baf7de1fd0a89ff533.340123011168609702 Ether
0xd8ce4699e4968e12a075ef9e12c30f3f148a0f36fa29f6ef479ae2c67752a8e772315632 days 11 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x6193fb412e7349d48155eb20c53541adce24c9340.055986360094296066 Ether
0x8c76f8880eac601d4f90ae2c9d7dafc7e298e09b89df091b57c66714604145de72313642 days 12 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x29d3da5feb053db3933930f404c71753bca5297d12.902052371508596306 Ether
0x658b33d7f01fa367b54bbc4ad2807078f019614b3f9d78d999874af5617155e772287303 days 3 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x02c73d7c23800d61f1fecafa94b90f41ab95fef50.961970981508233132 Ether
0xfa7e1c90a5a2be5bd13cb2aaa50821cd590821a0353727d4774ba1932fe1d92872284983 days 4 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10xd3205db794b05cbbbc7aff9c2a603d6f7be9e0240.454602435677606918 Ether
0x4973f7f11213b412c0d4df895d1576b419731aa5e61064445c62a09f65ab4ede72276723 days 9 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10xb37522063947c692de09821081bf19c51e4513b90.03685372249608364 Ether
0xeaae1d724ac9297a77cf88d3dcc84080e73775aeb46e92db424e60df1e92699672276613 days 9 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10xb37522063947c692de09821081bf19c51e4513b92.470610431087428208 Ether
0xb23b4681e1655707241c75ec6b19bc2e297ee25431e3ca36e19f959c272b961c72274323 days 10 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10xb37522063947c692de09821081bf19c51e4513b90.004337940296615339 Ether
0x73fa8cb02228fc74c80c9ec79cff6ca755736cf6718715fbc86e0c869b5b27fa72272313 days 11 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x16861ea2715129898542d789c4d4921d145825600.572408257410154086 Ether
0xcf1c1ad4e646c744d5a494953e4df65fcc231085014b68fd968892f580e6118672242784 days 4 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x2da7cf0b36a01fdd16b201b0fac08a45bf09c40a4.218364912826249431 Ether
0x2854854b25b8a6ee4d38c86bb2f46016e764b12650b6bc64dbc0208776b54fdf72239744 days 6 hrs ago0xbd73e675e1fa3d60a302c797df5c82e558da7ce10x49c3dd65dab49f9b0260e6aa503f7116c57e29130.025635494070665788 Ether
[ Download CSV Export 
Contract Source Code Verified (Exact Match)
Contract Name: PantheonEcoSystem
Compiler Version: v0.4.25+commit.59dbf8f1
Optimization Enabled: No
Runs (Optimizer):  200


Contract Source Code
pragma solidity 0.4.25;

contract PantheonEcoSystem {

    struct UserRecord {
        address referrer;
        uint tokens;
        uint gained_funds;
        uint ref_funds;
        // this field can be negative
        int funds_correction;
    }

    using SafeMath for uint;
    using SafeMathInt for int;
    using Fee for Fee.fee;
    using ToAddress for bytes;

    // ERC20
    string constant public name = "Pantheon Ecosystem";
    string constant public symbol = "PAN";
    uint8 constant public decimals = 18;

    // Fees
    Fee.fee private fee_purchase = Fee.fee(1, 10); // 10%
    Fee.fee private fee_selling  = Fee.fee(1, 20); // 5%
    Fee.fee private fee_transfer = Fee.fee(1, 100); // 1%
    Fee.fee private fee_referral = Fee.fee(33, 100); // 33%

    // Minimal amount of tokens to be an participant of referral program
    uint constant private minimal_stake = 10e18;

    // Factor for converting eth <-> tokens with required precision of calculations
    uint constant private precision_factor = 1e18;

    // Pricing policy
    //  - if user buy 1 token, price will be increased by "price_offset" value
    //  - if user sell 1 token, price will be decreased by "price_offset" value
    // For details see methods "fundsToTokens" and "tokensToFunds"
    uint private price = 1e29; // 100 Gwei * precision_factor
    uint constant private price_offset = 1e28; // 10 Gwei * precision_factor

    // Total amount of tokens
    uint private total_supply = 0;

    // Total profit shared between token's holders. It's not reflect exactly sum of funds because this parameter
    // can be modified to keep the real user's dividends when total supply is changed
    // For details see method "dividendsOf" and using "funds_correction" in the code
    uint private shared_profit = 0;

    // Map of the users data
    mapping(address => UserRecord) private user_data;

    // ==== Modifiers ==== //

    modifier onlyValidTokenAmount(uint tokens) {
        require(tokens > 0, "Amount of tokens must be greater than zero");
        require(tokens <= user_data[msg.sender].tokens, "You have not enough tokens");
        _;
    }

    // ==== Public API ==== //

    // ---- Write methods ---- //

    function () public payable {
        buy(msg.data.toAddr());
    }

    /*
    * @dev Buy tokens from incoming funds
    */
    function buy(address referrer) public payable {

        // apply fee
        (uint fee_funds, uint taxed_funds) = fee_purchase.split(msg.value);
        require(fee_funds != 0, "Incoming funds is too small");

        // update user's referrer
        //  - you cannot be a referrer for yourself
        //  - user and his referrer will be together all the life
        UserRecord storage user = user_data[msg.sender];
        if (referrer != 0x0 && referrer != msg.sender && user.referrer == 0x0) {
            user.referrer = referrer;
        }

        // apply referral bonus
        if (user.referrer != 0x0) {
            fee_funds = rewardReferrer(msg.sender, user.referrer, fee_funds, msg.value);
            require(fee_funds != 0, "Incoming funds is too small");
        }

        // calculate amount of tokens and change price
        (uint tokens, uint _price) = fundsToTokens(taxed_funds);
        require(tokens != 0, "Incoming funds is too small");
        price = _price;

        // mint tokens and increase shared profit
        mintTokens(msg.sender, tokens);
        shared_profit = shared_profit.add(fee_funds);

        emit Purchase(msg.sender, msg.value, tokens, price / precision_factor, now);
    }

    /*
    * @dev Sell given amount of tokens and get funds
    */
    function sell(uint tokens) public onlyValidTokenAmount(tokens) {

        // calculate amount of funds and change price
        (uint funds, uint _price) = tokensToFunds(tokens);
        require(funds != 0, "Insufficient tokens to do that");
        price = _price;

        // apply fee
        (uint fee_funds, uint taxed_funds) = fee_selling.split(funds);
        require(fee_funds != 0, "Insufficient tokens to do that");

        // burn tokens and add funds to user's dividends
        burnTokens(msg.sender, tokens);
        UserRecord storage user = user_data[msg.sender];
        user.gained_funds = user.gained_funds.add(taxed_funds);

        // increase shared profit
        shared_profit = shared_profit.add(fee_funds);

        emit Selling(msg.sender, tokens, funds, price / precision_factor, now);
    }

    /*
    * @dev Transfer given amount of tokens from sender to another user
    * ERC20
    */
    function transfer(address to_addr, uint tokens) public onlyValidTokenAmount(tokens) returns (bool success) {

        require(to_addr != msg.sender, "You cannot transfer tokens to yourself");

        // apply fee
        (uint fee_tokens, uint taxed_tokens) = fee_transfer.split(tokens);
        require(fee_tokens != 0, "Insufficient tokens to do that");

        // calculate amount of funds and change price
        (uint funds, uint _price) = tokensToFunds(fee_tokens);
        require(funds != 0, "Insufficient tokens to do that");
        price = _price;

        // burn and mint tokens excluding fee
        burnTokens(msg.sender, tokens);
        mintTokens(to_addr, taxed_tokens);

        // increase shared profit
        shared_profit = shared_profit.add(funds);

        emit Transfer(msg.sender, to_addr, tokens);
        return true;
    }

    /*
    * @dev Reinvest all dividends
    */
    function reinvest() public {

        // get all dividends
        uint funds = dividendsOf(msg.sender);
        require(funds > 0, "You have no dividends");

        // make correction, dividents will be 0 after that
        UserRecord storage user = user_data[msg.sender];
        user.funds_correction = user.funds_correction.add(int(funds));

        // apply fee
        (uint fee_funds, uint taxed_funds) = fee_purchase.split(funds);
        require(fee_funds != 0, "Insufficient dividends to do that");

        // apply referral bonus
        if (user.referrer != 0x0) {
            fee_funds = rewardReferrer(msg.sender, user.referrer, fee_funds, funds);
            require(fee_funds != 0, "Insufficient dividends to do that");
        }

        // calculate amount of tokens and change price
        (uint tokens, uint _price) = fundsToTokens(taxed_funds);
        require(tokens != 0, "Insufficient dividends to do that");
        price = _price;

        // mint tokens and increase shared profit
        mintTokens(msg.sender, tokens);
        shared_profit = shared_profit.add(fee_funds);

        emit Reinvestment(msg.sender, funds, tokens, price / precision_factor, now);
    }

    /*
    * @dev Withdraw all dividends
    */
    function withdraw() public {

        // get all dividends
        uint funds = dividendsOf(msg.sender);
        require(funds > 0, "You have no dividends");

        // make correction, dividents will be 0 after that
        UserRecord storage user = user_data[msg.sender];
        user.funds_correction = user.funds_correction.add(int(funds));

        // send funds
        msg.sender.transfer(funds);

        emit Withdrawal(msg.sender, funds, now);
    }

    /*
    * @dev Sell all tokens and withraw dividends
    */
    function exit() public {

        // sell all tokens
        uint tokens = user_data[msg.sender].tokens;
        if (tokens > 0) {
            sell(tokens);
        }

        withdraw();
    }

    /*
    * @dev CAUTION! This method distributes all incoming funds between token's holders and gives you nothing
    * It will be used by another contracts/addresses from our ecosystem in future
    * But if you want to donate, you're welcome :)
    */
    function donate() public payable {
        shared_profit = shared_profit.add(msg.value);
        emit Donation(msg.sender, msg.value, now);
    }

    // ---- Read methods ---- //

    /*
    * @dev Total amount of tokens
    * ERC20
    */
    function totalSupply() public view returns (uint) {
        return total_supply;
    }

    /*
    * @dev Amount of user's tokens
    * ERC20
    */
    function balanceOf(address addr) public view returns (uint) {
        return user_data[addr].tokens;
    }

    /*
    * @dev Amount of user's dividends
    */
    function dividendsOf(address addr) public view returns (uint) {

        UserRecord memory user = user_data[addr];

        // gained funds from selling tokens + bonus funds from referrals
        // int because "user.funds_correction" can be negative
        int d = int(user.gained_funds.add(user.ref_funds));
        require(d >= 0);

        // avoid zero divizion
        if (total_supply > 0) {
            // profit is proportional to stake
            d = d.add(int(shared_profit.mul(user.tokens) / total_supply));
        }

        // correction
        // d -= user.funds_correction
        if (user.funds_correction > 0) {
            d = d.sub(user.funds_correction);
        }
        else if (user.funds_correction < 0) {
            d = d.add(-user.funds_correction);
        }

        // just in case
        require(d >= 0);

        // total sum must be positive uint
        return uint(d);
    }

    /*
    * @dev Amount of tokens can be gained from given amount of funds
    */
    function expectedTokens(uint funds, bool apply_fee) public view returns (uint) {
        if (funds == 0) {
            return 0;
        }
        if (apply_fee) {
            (,uint _funds) = fee_purchase.split(funds);
            funds = _funds;
        }
        (uint tokens,) = fundsToTokens(funds);
        return tokens;
    }

    /*
    * @dev Amount of funds can be gained from given amount of tokens
    */
    function expectedFunds(uint tokens, bool apply_fee) public view returns (uint) {
        // empty tokens in total OR no tokens was sold
        if (tokens == 0 || total_supply == 0) {
            return 0;
        }
        // more tokens than were mined in total, just exclude unnecessary tokens from calculating
        else if (tokens > total_supply) {
            tokens = total_supply;
        }
        (uint funds,) = tokensToFunds(tokens);
        if (apply_fee) {
            (,uint _funds) = fee_selling.split(funds);
            funds = _funds;
        }
        return funds;
    }

    /*
    * @dev Purchase price of next 1 token
    */
    function buyPrice() public view returns (uint) {
        return price / precision_factor;
    }

    /*
    * @dev Selling price of next 1 token
    */
    function sellPrice() public view returns (uint) {
        return price.sub(price_offset) / precision_factor;
    }

    // ==== Private API ==== //

    /*
    * @dev Mint given amount of tokens to given user
    */
    function mintTokens(address addr, uint tokens) internal {

        UserRecord storage user = user_data[addr];

        bool not_first_minting = total_supply > 0;

        // make correction to keep dividends the rest of the users
        if (not_first_minting) {
            shared_profit = shared_profit.mul(total_supply.add(tokens)) / total_supply;
        }

        // add tokens
        total_supply = total_supply.add(tokens);
        user.tokens = user.tokens.add(tokens);

        // make correction to keep dividends of user
        if (not_first_minting) {
            user.funds_correction = user.funds_correction.add(int(tokens.mul(shared_profit) / total_supply));
        }
    }

    /*
    * @dev Burn given amout of tokens from given user
    */
    function burnTokens(address addr, uint tokens) internal {

        UserRecord storage user = user_data[addr];

        // keep current dividents of user if last tokens will be burned
        uint dividends_from_tokens = 0;
        if (total_supply == tokens) {
            dividends_from_tokens = shared_profit.mul(user.tokens) / total_supply;
        }

        // make correction to keep dividends the rest of the users
        shared_profit = shared_profit.mul(total_supply.sub(tokens)) / total_supply;

        // sub tokens
        total_supply = total_supply.sub(tokens);
        user.tokens = user.tokens.sub(tokens);

        // make correction to keep dividends of the user
        // if burned not last tokens
        if (total_supply > 0) {
            user.funds_correction = user.funds_correction.sub(int(tokens.mul(shared_profit) / total_supply));
        }
        // if burned last tokens
        else if (dividends_from_tokens != 0) {
            user.funds_correction = user.funds_correction.sub(int(dividends_from_tokens));
        }
    }

    /*
     * @dev Rewards the referrer from given amount of funds
     */
    function rewardReferrer(address addr, address referrer_addr, uint funds, uint full_funds) internal returns (uint funds_after_reward) {
        UserRecord storage referrer = user_data[referrer_addr];
        if (referrer.tokens >= minimal_stake) {
            (uint reward_funds, uint taxed_funds) = fee_referral.split(funds);
            referrer.ref_funds = referrer.ref_funds.add(reward_funds);
            emit ReferralReward(addr, referrer_addr, full_funds, reward_funds, now);
            return taxed_funds;
        }
        else {
            return funds;
        }
    }

    /*
    * @dev Calculate tokens from funds
    *
    * Given:
    *   a[1] = price
    *   d = price_offset
    *   sum(n) = funds
    * Here is used arithmetic progression's equation transformed to a quadratic equation:
    *   a * n^2 + b * n + c = 0
    * Where:
    *   a = d
    *   b = 2 * a[1] - d
    *   c = -2 * sum(n)
    * Solve it and first root is what we need - amount of tokens
    * So:
    *   tokens = n
    *   price = a[n+1]
    *
    * For details see method below
    */
    function fundsToTokens(uint funds) internal view returns (uint tokens, uint _price) {
        uint b = price.mul(2).sub(price_offset);
        uint D = b.mul(b).add(price_offset.mul(8).mul(funds).mul(precision_factor));
        uint n = D.sqrt().sub(b).mul(precision_factor) / price_offset.mul(2);
        uint anp1 = price.add(price_offset.mul(n) / precision_factor);
        return (n, anp1);
    }

    /*
    * @dev Calculate funds from tokens
    *
    * Given:
    *   a[1] = sell_price
    *   d = price_offset
    *   n = tokens
    * Here is used arithmetic progression's equation (-d because of d must be negative to reduce price):
    *   a[n] = a[1] - d * (n - 1)
    *   sum(n) = (a[1] + a[n]) * n / 2
    * So:
    *   funds = sum(n)
    *   price = a[n]
    *
    * For details see method above
    */
    function tokensToFunds(uint tokens) internal view returns (uint funds, uint _price) {
        uint sell_price = price.sub(price_offset);
        uint an = sell_price.add(price_offset).sub(price_offset.mul(tokens) / precision_factor);
        uint sn = sell_price.add(an).mul(tokens) / precision_factor.mul(2);
        return (sn / precision_factor, an);
    }

    // ==== Events ==== //

    event Purchase(address indexed addr, uint funds, uint tokens, uint price, uint time);
    event Selling(address indexed addr, uint tokens, uint funds, uint price, uint time);
    event Reinvestment(address indexed addr, uint funds, uint tokens, uint price, uint time);
    event Withdrawal(address indexed addr, uint funds, uint time);
    event Donation(address indexed addr, uint funds, uint time);
    event ReferralReward(address indexed referral_addr, address indexed referrer_addr, uint funds, uint reward_funds, uint time);

    //ERC20
    event Transfer(address indexed from_addr, address indexed to_addr, uint tokens);

}

library SafeMath {

    /**
    * @dev Multiplies two numbers
    */
    function mul(uint a, uint b) internal pure returns (uint) {
        if (a == 0) {
            return 0;
        }
        uint c = a * b;
        require(c / a == b, "mul failed");
        return c;
    }

    /**
    * @dev Subtracts two numbers
    */
    function sub(uint a, uint b) internal pure returns (uint) {
        require(b <= a, "sub failed");
        return a - b;
    }

    /**
    * @dev Adds two numbers
    */
    function add(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        require(c >= a, "add failed");
        return c;
    }

    /**
     * @dev Gives square root from number
     */
    function sqrt(uint x) internal pure returns (uint y) {
        uint z = add(x, 1) / 2;
        y = x;
        while (z < y) {
            y = z;
            z = add(x / z, z) / 2;
        }
    }
}

library SafeMathInt {

    /**
    * @dev Subtracts two numbers
    */
    function sub(int a, int b) internal pure returns (int) {
        int c = a - b;
        require(c <= a, "sub failed");
        return c;
    }

    /**
    * @dev Adds two numbers
    */
    function add(int a, int b) internal pure returns (int) {
        int c = a + b;
        require(c >= a, "add failed");
        return c;
    }
}

library Fee {

    using SafeMath for uint;

    struct fee {
        uint num;
        uint den;
    }

    /*
    * @dev Splits given value to two parts: tax itself and taxed value
    */
    function split(fee memory f, uint value) internal pure returns (uint tax, uint taxed_value) {
        if (value == 0) {
            return (0, 0);
        }
        tax = value.mul(f.num) / f.den;
        taxed_value = value.sub(tax);
    }

    /*
    * @dev Returns only tax part
    */
    function get_tax(fee memory f, uint value) internal pure returns (uint tax) {
        if (value == 0) {
            return 0;
        }
        tax = value.mul(f.num) / f.den;
    }
}

library ToAddress {

    /*
    * @dev Transforms bytes to address
    */
    function toAddr(bytes source) internal pure returns (address addr) {
        assembly {
            addr := mload(add(source, 0x14))
        }
        return addr;
    }
}

Contract ABI
[{"constant":true,"inputs":[{"name":"addr","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":"totalSupply","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":"addr","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":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to_addr","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokens","type":"uint256"},{"name":"apply_fee","type":"bool"}],"name":"expectedFunds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"funds","type":"uint256"},{"name":"apply_fee","type":"bool"}],"name":"expectedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokens","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":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"referrer","type":"address"}],"name":"buy","outputs":[],"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":"addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Purchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Selling","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"},{"indexed":false,"name":"price","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Reinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Withdrawal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"Donation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"referral_addr","type":"address"},{"indexed":true,"name":"referrer_addr","type":"address"},{"indexed":false,"name":"funds","type":"uint256"},{"indexed":false,"name":"reward_funds","type":"uint256"},{"indexed":false,"name":"time","type":"uint256"}],"name":"ReferralReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from_addr","type":"address"},{"indexed":true,"name":"to_addr","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"}]

Contract Creation Code
6080604052604080519081016040528060018152602001600a81525060008082015181600001556020820151816001015550506040805190810160405280600181526020016014815250600260008201518160000155602082015181600101555050604080519081016040528060018152602001606481525060046000820151816000015560208201518160010155505060408051908101604052806021815260200160648152506006600082015181600001556020820151816001015550506c01431e0fae6d7217caa000000060085560006009556000600a553480156100e657600080fd5b506125b8806100f66000396000f3006080604052600436106100f0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461013657806306fdde031461018d57806318160ddd1461021d578063313ce567146102485780633ccfd60b146102795780634b7503341461029057806370a08231146102bb5780638620410b1461031257806395d89b411461033d578063a9059cbb146103cd578063be2eaad414610432578063c5f606201461047f578063e4849b32146104cc578063e9fad8ee146104f9578063ed88c68e14610510578063f088d5471461051a578063fdb5a03e14610550575b61013461012f6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050610567565b610578565b005b34801561014257600080fd5b50610177600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610978565b6040518082815260200191505060405180910390f35b34801561019957600080fd5b506101a2610b32565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101e25780820151818401526020810190506101c7565b50505050905090810190601f16801561020f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022957600080fd5b50610232610b6b565b6040518082815260200191505060405180910390f35b34801561025457600080fd5b5061025d610b75565b604051808260ff1660ff16815260200191505060405180910390f35b34801561028557600080fd5b5061028e610b7a565b005b34801561029c57600080fd5b506102a5610d01565b6040518082815260200191505060405180910390f35b3480156102c757600080fd5b506102fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3c565b6040518082815260200191505060405180910390f35b34801561031e57600080fd5b50610327610d88565b6040518082815260200191505060405180910390f35b34801561034957600080fd5b50610352610da5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610392578082015181840152602081019050610377565b50505050905090810190601f1680156103bf5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103d957600080fd5b50610418600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dde565b604051808215151515815260200191505060405180910390f35b34801561043e57600080fd5b50610469600480360381019080803590602001909291908035151590602001909291905050506111e9565b6040518082815260200191505060405180910390f35b34801561048b57600080fd5b506104b660048036038101908080359060200190929190803515159060200190929190505050611274565b6040518082815260200191505060405180910390f35b3480156104d857600080fd5b506104f7600480360381019080803590602001909291905050506112e2565b005b34801561050557600080fd5b5061050e611689565b005b6105186116ee565b005b61054e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610578565b005b34801561055c57600080fd5b50610565611761565b005b600060148201519050809050919050565b60008060008060006105b334600060408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9450945060008514151515610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e636f6d696e672066756e647320697320746f6f20736d616c6c000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020925060008673ffffffffffffffffffffffffffffffffffffffff16141580156106c457503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561070a575060008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1561075357858360000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610843576107c7338460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168734611bf7565b945060008514151515610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e636f6d696e672066756e647320697320746f6f20736d616c6c000000000081525060200191505060405180910390fd5b5b61084c84611d35565b91509150600082141515156108c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e636f6d696e672066756e647320697320746f6f20736d616c6c000000000081525060200191505060405180910390fd5b806008819055506108da3383611e9e565b6108ef85600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167fd721454499cf9c37b757e03b9d675df451c229048129d6e2d552216a035e6a553484670de0b6b3a764000060085481151561094457fe5b04426040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505050565b6000610982612546565b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060a060405190810160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815250509150610a6a82606001518360400151611fb490919063ffffffff16565b905060008112151515610a7c57600080fd5b60006009541115610ac257610abf600954610aa68460200151600a5461203e90919063ffffffff16565b811515610aaf57fe5b04826120e590919063ffffffff16565b90505b600082608001511315610aed57610ae682608001518261216f90919063ffffffff16565b9050610b18565b600082608001511215610b1757610b148260800151600003826120e590919063ffffffff16565b90505b5b60008112151515610b2857600080fd5b8092505050919050565b6040805190810160405280601281526020017f50616e7468656f6e2045636f73797374656d000000000000000000000000000081525081565b6000600954905090565b601281565b600080610b8633610978565b9150600082111515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f752068617665206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050610c588282600401546120e590919063ffffffff16565b81600401819055503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015610ca6573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb8342604051808381526020018281526020019250505060405180910390a25050565b6000670de0b6b3a7640000610d2d6b204fce5e3e250261100000006008546121f990919063ffffffff16565b811515610d3657fe5b04905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b6000670de0b6b3a7640000600854811515610d9f57fe5b04905090565b6040805190810160405280600381526020017f50414e000000000000000000000000000000000000000000000000000000000081525081565b600080600080600085600081111515610e85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f416d6f756e74206f6620746f6b656e73206d757374206265206772656174657281526020017f207468616e207a65726f0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111151515610f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f752068617665206e6f7420656e6f75676820746f6b656e7300000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515611009576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f596f752063616e6e6f74207472616e7366657220746f6b656e7320746f20796f81526020017f757273656c66000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b61103c87600460408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b94509450600085141515156110b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b6110c28561227e565b925092506000831415151561113f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b81600881905550611150338861237b565b61115a8885611e9e565b61116f83600a54611fb490919063ffffffff16565b600a819055508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef896040518082815260200191505060405180910390a360019550505050505092915050565b6000806000808514806111fe57506000600954145b1561120c576000925061126c565b60095485111561121c5760095494505b6112258561227e565b50915083156112685761126182600260408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9150508091505b8192505b505092915050565b60008060008085141561128a57600092506112da565b83156112ca576112c385600060408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9250508194505b6112d385611d35565b5090508092505b505092915050565b600080600080600085600081111515611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f416d6f756e74206f6620746f6b656e73206d757374206265206772656174657281526020017f207468616e207a65726f0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101548111151515611443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f596f752068617665206e6f7420656e6f75676820746f6b656e7300000000000081525060200191505060405180910390fd5b61144c8761227e565b95509550600086141515156114c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b8460088190555061150386600260408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9350935060008414151515611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e73756666696369656e7420746f6b656e7320746f20646f2074686174000081525060200191505060405180910390fd5b61158a338861237b565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091506115e2838360020154611fb490919063ffffffff16565b82600201819055506115ff84600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167fafd310387603da0dcf44f11f54b04254b548c58b194e75f85851e849f0eef3078888670de0b6b3a764000060085481151561165457fe5b04426040518085815260200184815260200183815260200182815260200194505050505060405180910390a250505050505050565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154905060008111156116e3576116e2816112e2565b5b6116eb610b7a565b50565b61170334600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167f106aac375bbcf013d1e52338bbf9e740009a1a3a6869f8daa1b72aa1620f5fec3442604051808381526020018281526020019250505060405180910390a2565b60008060008060008061177333610978565b95506000861115156117ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f596f752068617665206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002094506118458686600401546120e590919063ffffffff16565b856004018190555061188086600060408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b9350935060008414151515611923576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f496e73756666696369656e74206469766964656e647320746f20646f2074686181526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008560000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611a3957611997338660000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168689611bf7565b935060008414151515611a38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f496e73756666696369656e74206469766964656e647320746f20646f2074686181526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b611a4283611d35565b9150915060008214151515611ae5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f496e73756666696369656e74206469766964656e647320746f20646f2074686181526020017f740000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600881905550611af63383611e9e565b611b0b84600a54611fb490919063ffffffff16565b600a819055503373ffffffffffffffffffffffffffffffffffffffff167f1abe689c7914cafd54f789eb0851e90cba235302161e81e259ee4c357c374d828784670de0b6b3a7640000600854811515611b6057fe5b04426040518085815260200184815260200183815260200182815260200194505050505060405180910390a2505050505050565b6000806000831415611bb25760008081915080905091509150611bf0565b8360200151611bce85600001518561203e90919063ffffffff16565b811515611bd757fe5b049150611bed82846121f990919063ffffffff16565b90505b9250929050565b600080600080600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250678ac7230489e800008360010154101515611d2657611c8686600660408051908101604052908160008201548152602001600182015481525050611b9490919063ffffffff16565b91509150611ca1828460030154611fb490919063ffffffff16565b83600301819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f870e4e1dcfab6c09707448d3659b3d8097c084bf06e7467d6029940cd7122ee087854260405180848152602001838152602001828152602001935050505060405180910390a3809350611d2a565b8593505b505050949350505050565b600080600080600080611d726b204fce5e3e25026110000000611d64600260085461203e90919063ffffffff16565b6121f990919063ffffffff16565b9350611de4611dc3670de0b6b3a7640000611db58a611da760086b204fce5e3e2502611000000061203e90919063ffffffff16565b61203e90919063ffffffff16565b61203e90919063ffffffff16565b611dd6868761203e90919063ffffffff16565b611fb490919063ffffffff16565b9250611e0660026b204fce5e3e2502611000000061203e90919063ffffffff16565b611e3b670de0b6b3a7640000611e2d87611e1f886124ed565b6121f990919063ffffffff16565b61203e90919063ffffffff16565b811515611e4457fe5b049150611e8d670de0b6b3a7640000611e72846b204fce5e3e2502611000000061203e90919063ffffffff16565b811515611e7b57fe5b04600854611fb490919063ffffffff16565b905081819550955050505050915091565b600080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020915060006009541190508015611f2d57600954611f1c611f0b85600954611fb490919063ffffffff16565b600a5461203e90919063ffffffff16565b811515611f2557fe5b04600a819055505b611f4283600954611fb490919063ffffffff16565b600981905550611f5f838360010154611fb490919063ffffffff16565b82600101819055508015611fae57611fa5600954611f88600a548661203e90919063ffffffff16565b811515611f9157fe5b0483600401546120e590919063ffffffff16565b82600401819055505b50505050565b6000808284019050838110151515612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f616464206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b600080600084141561205357600091506120de565b828402905082848281151561206457fe5b041415156120da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6d756c206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505b5092915050565b6000808284019050838112151515612165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f616464206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b60008082840390508381131515156121ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f737562206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b8091505092915050565b6000828211151515612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f737562206661696c65640000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b60008060008060006122a76b204fce5e3e250261100000006008546121f990919063ffffffff16565b925061230b670de0b6b3a76400006122d4886b204fce5e3e2502611000000061203e90919063ffffffff16565b8115156122dd57fe5b046122fd6b204fce5e3e2502611000000086611fb490919063ffffffff16565b6121f990919063ffffffff16565b91506123296002670de0b6b3a764000061203e90919063ffffffff16565b61234e876123408587611fb490919063ffffffff16565b61203e90919063ffffffff16565b81151561235757fe5b049050670de0b6b3a76400008181151561236d57fe5b048294509450505050915091565b600080600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150600090508260095414156123f6576009546123e98360010154600a5461203e90919063ffffffff16565b8115156123f257fe5b0490505b600954612422612411856009546121f990919063ffffffff16565b600a5461203e90919063ffffffff16565b81151561242b57fe5b04600a81905550612447836009546121f990919063ffffffff16565b6009819055506124648383600101546121f990919063ffffffff16565b8260010181905550600060095411156124bc576124af600954612492600a548661203e90919063ffffffff16565b81151561249b57fe5b04836004015461216f90919063ffffffff16565b82600401819055506124e7565b6000811415156124e6576124dd81836004015461216f90919063ffffffff16565b82600401819055505b5b50505050565b60008060026124fd846001611fb4565b81151561250657fe5b0490508291505b8181101561254057809150600261252f828581151561252857fe5b0483611fb4565b81151561253857fe5b04905061250d565b50919050565b60a060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820d955d83e2f50a5c7177643dd267b780a8970bb1eab8c7cc7e550b3edf856cb5f0029


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