Реклама вашего контракта Кабинет инвестора
Меню
Появились вопросы или есть предложения?
Напишите нам в Telegram t.me/smartradar
ECToken

ECToken

Etherscan
0x792E6C37AE5CED8202794Af26671531195418616
Следить за контрактом

Баланс

109.655 ETH.

Динамика пополнений
от общего пополнения за день

0%

Ввод

За последний час
0 ETH.
Всего
2427.75 ETH.

Выводы

За последний час
0 ETH.
Всего
2318.09 ETH.

Условия

В день
-
В час
-

Инвесторов

227

Повторные пополнения

За последний час
0 ETH.
Всего
752.131 ETH.

Средняя оценка аудиторов

8

Контакты

  • Таймлайн:
  • час
  • день
  • неделя
  • месяц
Пополнения (1845)
Выводы (365)
Аудит
Код
API
Комменторы
Дата Блок TxHash От кого Кому Сумма
14 янв. 13:23 7064269 0x462b4c4b6253be779f0bd12763840a5f9433a57abe99ef7c887f01973012fb6d 0x71ceb923022708aae2eec8bf772708e2a1f2d060 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
14 янв. 13:22 7064266 0xdc0a9eff988045d515114abe95057ff25b7848330acc52bbaae052d58bdb2a84 0x71ceb923022708aae2eec8bf772708e2a1f2d060 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
14 янв. 13:14 7064238 0xdf8e5908e74402e44c45e4ffc14d7567ae7b9c113262fa980d24faca1bbdda30 0xd6057c4d6291dafc5bd9fa10ff6e621e8b5315ee 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
14 янв. 13:14 7064238 0x59c67291ca3ef1fd84194820e2f936b66adc9b611f67b7f66b20fbbd46562de6 0xd6057c4d6291dafc5bd9fa10ff6e621e8b5315ee 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
14 янв. 13:13 7064236 0x0060c1a52d885a1844ea2e9911abc6d31e8e602faa44c91d388d2a19f146b6ba
Транзакция с ошибкой
0xd6057c4d6291dafc5bd9fa10ff6e621e8b5315ee 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
14 янв. 13:13 7064234 0xc19dbf897f93efb67dd2a337d802961480ab43bf7da62dbfb7a0bd481739197d 0xd6057c4d6291dafc5bd9fa10ff6e621e8b5315ee 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 19:22 7060032 0x84bea1444d5cc441f97689808fff116e3c953cbd06adc1ab66886a976c978168 0x0b1055e9c5960a0f193a772fb76ae3f739b3984d 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 16:43 7059434 0x084f84c6fa6992dda3d21c9b03347d72a818cb43f45757d198422b0a855119d9 0x1f74a5bcb5c0f7b30671ce5416f83f8d586a3300 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 16:41 7059429 0x5c814138e9a612eb51dcbcb9a5de8c562bd0ecb32b81ee5c42e700f23b1d6b48 0x1f74a5bcb5c0f7b30671ce5416f83f8d586a3300 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 16:10 7059303 0xb4117f6306c5b09932c7b05dfce41e0476b2de7dac43b4765598af63dacfe8c9 0xfee822aeb1868f93b47403fb0358edf00cf5eac3 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 16:03 7059265 0x495d5a7066b365c6b7bfa0cf9d7f196c8c9d97501924258585f6ac6293320e25 0xe133f9a63c045c29c2e0c25f9de07ee1a4edfbb1 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 15:57 7059241 0x47dc573af0001d0c6e8a973c11fc2f45133b14a134c49b5b54129bfa2ae19a1f 0x5a118e4dbc47fffeae2cc3b42934a60b9e4191a9 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 15:54 7059232 0x9fb25195685c155fdbe1a0df44a6b5fbeae58fca37c7bab76511310754ae9c2c 0x5a118e4dbc47fffeae2cc3b42934a60b9e4191a9 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 15:37 7059162 0x530899bb428fd6dbc15b13e47689f5491c891f031c263daf964232a5e1613661 0xe0bd393b642949ddb7006f4cd2829a2dafdf4ce8 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 14:50 7059009 0xdd5b164e6ca76ab6c59ff8f67a46e0b2ac8312c80be4148f337e237286b6e08b 0x5a118e4dbc47fffeae2cc3b42934a60b9e4191a9 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 14:50 7059007 0x4cb759bcdceb5c7b4fedba34d248218a8ab3e929747a7e2aaccd781a2826ff92 0x5a118e4dbc47fffeae2cc3b42934a60b9e4191a9 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
13 янв. 11:46 7058315 0x4b00aef5e718c87f2325f7ae16ee8b018eb9ef9d3612172157cef65f2ebf27b4 0x0b1055e9c5960a0f193a772fb76ae3f739b3984d 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
12 янв. 19:52 7054572 0x3d251d56f97eaa93b2a25d45319ba4f0ee153874d6100b3f4b1297465a9b2488 0x0396a31d0dd02e06e2b9832afcfccae40a3c3a54 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
11 янв. 21:03 7049281 0xb689ee6337e314e8eb1b95ccc7124ff7a547c0b7d57297634650e4fb7c7c8eb7 0xd73faea67818d927df33304f04ec25f68c2d3f4f 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
11 янв. 20:58 7049257 0x1cf69ab393e3b3c3e1a644e6c998008248457fad8d02463f306d035c8e83c34a 0x3e32a524af477910ae0c1b7000a6a62b41484859 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
11 янв. 20:56 7049245 0xedcfde161c5337b7ee54766683015fd4341ceec99e3ea7ef66d8a2c11fa10fd9 0x3e32a524af477910ae0c1b7000a6a62b41484859 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
11 янв. 14:52 7047843 0x109b3e7fc390df2d7c3b9f714c5bd77546036b567fd20b6c42705cbdf24a3897 0x1a6792764cf9ee04de63b34f0d069af81a84cfcb 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
11 янв. 14:50 7047837 0xdf3b0e0814df3507ceb9603dc9f92ea6d6b633ee38c14ea70e2eb17418556d62 0x1a6792764cf9ee04de63b34f0d069af81a84cfcb 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
11 янв. 08:07 7046295 0x072ebf64be00ae2fd46ebf482fde561a4bdfea06e200e22692b31da0357c972f 0x1a6792764cf9ee04de63b34f0d069af81a84cfcb 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
11 янв. 08:06 7046293 0xaf8f41a1ed20ab7eab9b86cebb159ebf8465d016d98489d2bd364cb6837976ee 0x1a6792764cf9ee04de63b34f0d069af81a84cfcb 0x792e6c37ae5ced8202794af26671531195418616 0 Ether
Дата Блок parentTxHash От кого Кому Сумма
Вчера 06:48 7243052 0x7509f7a181037b50904ac4c6e5423905a3d853f49db5914fbf733fb99831829c 0x792e6c37ae5ced8202794af26671531195418616 0xba0b064815127142e114cab52967b7a2f8ede724 0.29836800560814974 Ether
Вчера 06:38 7243016 0xffa811b32f75ebb6f33f770e77dfa818a530c154198c416fd95cf409cb4b8c43 0x792e6c37ae5ced8202794af26671531195418616 0x323729d79e6461194760caa5653ae2d927ae0528 0.26478940614304153 Ether
18 фев. 15:59 7236166 0x02402fdb7ed032346e7559f33c8567bfda63b00d5cf0b4a59fa6330ccc09ac57 0x792e6c37ae5ced8202794af26671531195418616 0xe0bd393b642949ddb7006f4cd2829a2dafdf4ce8 0.7062730985268678 Ether
16 фев. 00:58 7225156 0x2676eaad39f92883807252eea6a762e5fd9644f346b5efd9b1ae55bddcf8c576 0x792e6c37ae5ced8202794af26671531195418616 0xbb2a75692b0ee861b1b804d30f2d8c821a7dc7dc 1.2503814807661564 Ether
13 фев. 17:03 7215446 0x08ce0e5d5a01f8c475b239cc2e5b02a3bf7c07e045e27aa3a25003bf917f269d 0x792e6c37ae5ced8202794af26671531195418616 0xb21b421882edcd81902d7b38e42a423163aae1da 0.5290776246387578 Ether
12 фев. 18:10 7211429 0x891ab782f68cb288d6e92bb4a96cea37d9b86ce918ec7f9b03a3cd45a1dcbaf2 0x792e6c37ae5ced8202794af26671531195418616 0xa0cf113d23c2322537bd78eb96b74ef45afe3c49 3.4830921907073487 Ether
11 фев. 21:42 7207839 0x41471d7716e4cbce4a8aa6309aba816eed634536b1c662fcff3b07f3732cab3c 0x792e6c37ae5ced8202794af26671531195418616 0xd30cf6f025883767b8403f9e3d84a4a0563819a8 4.269385596365541 Ether
24 янв. 09:22 7117609 0x091243fe03c3d754fc574d5f99d46d6f1faafe0bf681d9f101432f893b61ec68 0x792e6c37ae5ced8202794af26671531195418616 0xd4af5bf5321933fe2b85339c50f2f78d2713a81a 0 Ether
24 янв. 09:22 7117603 0x207520cb48d51a087ed9cb25676529518d2aa55db9a9a33aeb285cbfe1bdf9c6 0x792e6c37ae5ced8202794af26671531195418616 0xd4af5bf5321933fe2b85339c50f2f78d2713a81a 0.00509743218153447 Ether
24 янв. 09:15 7117578 0x63391b9cb94f3e32b3e1813ee2f1c9ae54e1ec548e742ab826f907dbd89837d5 0x792e6c37ae5ced8202794af26671531195418616 0xd4af5bf5321933fe2b85339c50f2f78d2713a81a 0.000149695368593805 Ether
21 янв. 08:20 7102219 0x2b3c919380ec42e917f1ef429db7957e2e3104f88ebd310aa056225f19404e6c 0x792e6c37ae5ced8202794af26671531195418616 0xfee822aeb1868f93b47403fb0358edf00cf5eac3 0.003669303284754645 Ether
18 янв. 14:04 7086802 0x3a07e5d654c348967aa6a4bf90a9980f443d5d1ae7c4fe44adf9a7030e15fd50 0x792e6c37ae5ced8202794af26671531195418616 0x7e68ea1d10b7a0f46833098c989490c3cc9cd9db 0.07957044120704773 Ether
17 янв. 20:39 7082702 0x22bbfe0696bcd805ce6ea75ceb0a25f56f7a2688076b7e044478c7a477aee2cb 0x792e6c37ae5ced8202794af26671531195418616 0xa0cf113d23c2322537bd78eb96b74ef45afe3c49 0.0627747106721023 Ether
17 янв. 17:35 7082005 0x36c751ce2f15a77e43a21347475c68a412b3357f3747ef38f00491aee70e9894 0x792e6c37ae5ced8202794af26671531195418616 0x021124b111d0febd13d0883538e7979621de6c7b 0 Ether
17 янв. 17:34 7082003 0x88cf6d8498858b6f15548f986b0ef8802aa0b1fc082925cfef9fe966bef05463 0x792e6c37ae5ced8202794af26671531195418616 0x021124b111d0febd13d0883538e7979621de6c7b 0.56223508323147 Ether
17 янв. 17:32 7081989 0xcbf91e9e0a074598bc0c0a38333bd731a7e6f805111ac131a1c6ce6673ecac46 0x792e6c37ae5ced8202794af26671531195418616 0x021124b111d0febd13d0883538e7979621de6c7b 0.13455643680481746 Ether
17 янв. 16:10 7081657 0x55d154c4de65770ab544e9d7ca4089b47439eb7dd6b4cc0fcc99241999725c97 0x792e6c37ae5ced8202794af26671531195418616 0x1a6792764cf9ee04de63b34f0d069af81a84cfcb 0.000000000000001624 Ether
17 янв. 15:46 7081565 0x3f7782aef23231f9e196db29025c50cebc28b149fefd379b9bb39cf26d85a0d4 0x792e6c37ae5ced8202794af26671531195418616 0x3c6d1660ec61bb63f89e4e6e6d75237cbb62f1f2 0.22257709568871661 Ether
16 янв. 21:25 7077356 0xd8ae0a67aeddc9edbfaf00023bc3b6d483ce14d40a2c2307848c08635f5a408e 0x792e6c37ae5ced8202794af26671531195418616 0xc363d866be78d4541050faa209821a3e03c16c8e 0.276797323602452 Ether
16 янв. 19:18 7076821 0x0bf4fee036a36d63b349afdef75a72bf194751332ce9e060d4c97ec930a3f52c 0x792e6c37ae5ced8202794af26671531195418616 0x0a3fcf80cb8ebeb291653b00fba8479e431b8480 0.8116544269277659 Ether
16 янв. 19:07 7076770 0x94b0f66564665b2aa1ce0c440e3b7e26a139ee5eaaf4338b28f0c314354500ab 0x792e6c37ae5ced8202794af26671531195418616 0x1a6792764cf9ee04de63b34f0d069af81a84cfcb 3.700376763894866 Ether
16 янв. 17:02 7076256 0x9465272a28bd5569cb9aac32f969a77103fbbecdc83c7e0978015733d1a26763 0x792e6c37ae5ced8202794af26671531195418616 0x2701fe08e561b6b30a1f40c82cc877386e79cde1 0 Ether
16 янв. 17:02 7076253 0x438f2a2c11bfa2ad029cae282c3bba8e21a1855a800a9e204478566bea2f4671 0x792e6c37ae5ced8202794af26671531195418616 0x2701fe08e561b6b30a1f40c82cc877386e79cde1 0.28297227028579214 Ether
16 янв. 17:00 7076245 0x1997ec753f7bed3e8036dc2855115c495f97cb3a15f266f37312ddff7108d29e 0x792e6c37ae5ced8202794af26671531195418616 0x2701fe08e561b6b30a1f40c82cc877386e79cde1 0.0472960716777238 Ether
16 янв. 14:43 7075736 0xde5f013826434c4347297e446e0d0ec3e19324491243d7315cd8e7339985b656 0x792e6c37ae5ced8202794af26671531195418616 0x3e32a524af477910ae0c1b7000a6a62b41484859 3.641915355075927 Ether
Средняя оценка аудиторов 8
Contract Source Code </>
pragma solidity ^0.4.25;

/*
* https://ectoken.io
*
* Ethereum Captial Token concept
*
* [✓] 6% Withdraw fee (3% to dividends, 3% to owner). First 6 days 30%, next 24 days it will decrease to 6%
* [✓] 12% Deposit fee
* [✓] 1% Token transfer
* [✓] 5 lines referral system with 5 levels of rewards
*
*/

contract ECT {

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

    /**
     * Only with dividends
     */
    modifier onlyStronghands {
        require(myDividends(true) > 0);
        _;
    }

    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        uint timestamp,
        uint256 price
    );

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

    event onReinvestment(
        address indexed customerAddress,
        uint256 ethereumReinvested
    );

    event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );

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

    string public name = "Ethereum Capital Token";
    string public symbol = "ECT";
    uint public createdAt;
    
    bool public started = false;
    modifier onlyStarted {
        require(started);
        _;
    }
    modifier onlyNotStarted {
        require(!started);
        _;
    }

    uint8 constant public decimals = 18;

    /**
     * fees
     */
    uint8 constant internal entryFee_ = 12;
    uint8 constant internal ownerFee_ = 4;
    uint8 constant internal transferFee_ = 1;
    uint8 constant internal exitFeeD0_ = 30;
    uint8 constant internal exitFee_ = 6;
    uint8 constant internal refferalFee_ = 33;

    address internal _ownerAddress;

    /**
     * Initial token values
     */
    uint256 constant internal tokenPriceInitial_ = 0.0000001 ether;
    uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether;

    uint256 constant internal magnitude = 2 ** 64;


    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal referralBalance_;
    mapping(address => int256) internal payoutsTo_;
    mapping(address => uint256) internal summaryReferralProfit_;
    mapping(address => uint256) internal dividendsUsed_;

    uint256 internal tokenSupply_;
    uint256 internal profitPerShare_;
    
    uint public blockCreation;
    
    /**
     * Admins. Only rename tokens, change referral settings and add new admins
     */
    mapping(bytes32 => bool) public administrators;
    modifier onlyAdministrator(){
        address _customerAddress = msg.sender;
        require(administrators[keccak256(_customerAddress)]);
        _;
    }

    function isAdmin() public view returns (bool) {
        return administrators[keccak256(msg.sender)];
    }

    function setAdministrator(address _id, bool _status)
        onlyAdministrator()
        public
    {
        if (_id != _ownerAddress) {
            administrators[keccak256(_id)] = _status;
        }
    } 

    function setName(string _name)
        onlyAdministrator()
        public
    {
        name = _name;
    }

    function setSymbol(string _symbol)
        onlyAdministrator()
        public
    {
        symbol = _symbol;
    }

    constructor() public {
        _ownerAddress = msg.sender;
        administrators[keccak256(_ownerAddress)] = true;
        blockCreation = block.number;
    }
    
    function start() onlyNotStarted() onlyAdministrator() public {
        started = true;
        createdAt = block.timestamp;
    }
    
    function getLifetime() public view returns (uint8) {
        if (!started)
        {
            return 0;
        }
        return (uint8) ((now - createdAt) / 60 / 60 / 24);
    }
    
    function getExitFee() public view returns (uint8) {
        uint lifetime = getLifetime(); // Получение времени жизни контракта
        if (lifetime <= 6) { 
            return exitFeeD0_; // 30%
        } else if (lifetime < 30) {
            return (uint8) (exitFeeD0_ - lifetime + 6);
        } else {
            return exitFee_; // 6%
        }
    }

    function buy(address _r1, address _r2, address _r3, address _r4, address _r5) onlyStarted() public payable returns (uint256) {
        purchaseTokens(msg.value, _r1, _r2, _r3, _r4, _r5);
    }

    function reinvest() onlyStronghands public {
        uint256 _dividends = myDividends(false);
        address _customerAddress = msg.sender;
        dividendsUsed_[_customerAddress] += _dividends;
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;
        purchaseTokens(_dividends, 0x0, 0x0, 0x0, 0x0, 0x0);
        emit onReinvestment(_customerAddress, _dividends);
    }

    function exit() public {
        address _customerAddress = msg.sender;
        uint256 _tokens = tokenBalanceLedger_[_customerAddress];
        if (_tokens > 0) sell(_tokens);
        withdraw();
    }

    function withdraw() onlyStronghands public {
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false);
        dividendsUsed_[_customerAddress] += _dividends;
        payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude);
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;
        
        uint256 _fee = SafeMath.div(SafeMath.mul(_dividends, getExitFee() - 3), 100);
        
        uint256 _ownerFee = SafeMath.div(SafeMath.mul(_dividends, 3), 100);
        
        uint256 _dividendsTaxed = SafeMath.sub(_dividends, _fee + _ownerFee);
        
        if (_customerAddress != _ownerAddress) {
            referralBalance_[_ownerAddress] += _ownerFee;
            summaryReferralProfit_[_ownerAddress] += _ownerFee;
        } else {
            _dividendsTaxed += _ownerFee;
        }
        
        profitPerShare_ = SafeMath.add(profitPerShare_, (_fee * magnitude) / tokenSupply_);
    
        _customerAddress.transfer(_dividendsTaxed);
        emit onWithdraw(_customerAddress, _dividends);
    }

    function sell(uint256 _amountOfTokens) onlyBagholders public {
        address _customerAddress = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens = _amountOfTokens;
        uint256 _ethereum = tokensToEthereum_(_tokens);

        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);

        int256 _updatedPayouts = (int256) (profitPerShare_ * _tokens + (_ethereum * magnitude));
        payoutsTo_[_customerAddress] -= _updatedPayouts;

        emit onTokenSell(_customerAddress, _tokens, _ethereum, now, buyPrice());
    }

    function transfer(address _toAddress, uint256 _amountOfTokens) onlyBagholders public returns (bool) {
        address _customerAddress = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);

        if (myDividends(true) > 0) {
            withdraw();
        }

        uint256 _tokenFee = SafeMath.div(SafeMath.mul(_amountOfTokens, transferFee_), 100);
        uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee);
        uint256 _dividends = tokensToEthereum_(_tokenFee);

        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);
        payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _taxedTokens);
        profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        emit Transfer(_customerAddress, _toAddress, _taxedTokens);
        return true;
    }


    function totalEthereumBalance() public view returns (uint256) {
        return address(this).balance;
    }

    function totalSupply() public view returns (uint256) {
        return tokenSupply_;
    }

    function myTokens() public view returns (uint256) {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress);
    }

    function myDividends(bool _includeReferralBonus) public view returns (uint256) {
        address _customerAddress = msg.sender;
        return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress);
    }

    function balanceOf(address _customerAddress) public view returns (uint256) {
        return tokenBalanceLedger_[_customerAddress];
    }

    function dividendsOf(address _customerAddress) public view returns (uint256) {
        return (uint256) ((int256) (profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
    }
    
    function dividendsFull(address _customerAddress) public view returns (uint256) {
        return dividendsOf(_customerAddress) + dividendsUsed_[_customerAddress] + summaryReferralProfit_[_customerAddress];
    }

    function sellPrice() public view returns (uint256) {
        return sellPriceAt(tokenSupply_);
    }

    function buyPrice() public view returns (uint256) {
        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;
        }
    }

    function calculateTokensReceived(uint256 _incomingEthereum) public view returns (uint256) {
        uint256 _dividends = SafeMath.div(SafeMath.mul(_incomingEthereum, entryFee_), 100);
        
        uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);

        return _amountOfTokens;
    }

    function calculateEthereumReceived(uint256 _tokensToSell) public view returns (uint256) {
        require(_tokensToSell <= tokenSupply_);
        return tokensToEthereum_(_tokensToSell);
    }
    
    uint256 public I_S = 0.25 ether;
    uint256 public I_R1 = 30;

    function setI_S(uint256 _v)
        onlyAdministrator()
        public
    {
        I_S = _v;
    }

    function setI_R1(uint256 _v)
        onlyAdministrator()
        public
    {
        I_R1 = _v;
    }

    
    uint256 public II_S = 5 ether;
    uint256 public II_R1 = 30;
    uint256 public II_R2 = 10;

    function setII_S(uint256 _v)
        onlyAdministrator()
        public
    {
        II_S = _v;
    }

    function setII_R1(uint256 _v)
        onlyAdministrator()
        public
    {
        II_R1 = _v;
    }

    function setII_R2(uint256 _v)
        onlyAdministrator()
        public
    {
        II_R2 = _v;
    }
    
    uint256 public III_S = 10 ether;
    uint256 public III_R1 = 30;
    uint256 public III_R2 = 10;
    uint256 public III_R3 = 10;

    function setIII_S(uint256 _v)
        onlyAdministrator()
        public
    {
        III_S = _v;
    }

    function setIII_R1(uint256 _v)
        onlyAdministrator()
        public
    {
        III_R1 = _v;
    }

    function setIII_R2(uint256 _v)
        onlyAdministrator()
        public
    {
        III_R2 = _v;
    }

    function setIII_R3(uint256 _v)
        onlyAdministrator()
        public
    {
        III_R3 = _v;
    }
    
    uint256 public IV_S = 20 ether;
    uint256 public IV_R1 = 30;
    uint256 public IV_R2 = 20;
    uint256 public IV_R3 = 10;
    uint256 public IV_R4 = 10;

    function setIV_S(uint256 _v)
        onlyAdministrator()
        public
    {
        IV_S = _v;
    }

    function setIV_R1(uint256 _v)
        onlyAdministrator()
        public
    {
        IV_R1 = _v;
    }

    function setIV_R2(uint256 _v)
        onlyAdministrator()
        public
    {
        IV_R2 = _v;
    }

    function setIV_R3(uint256 _v)
        onlyAdministrator()
        public
    {
        IV_R3 = _v;
    }

    function setIV_R4(uint256 _v)
        onlyAdministrator()
        public
    {
        IV_R4 = _v;
    }
    
    uint256 public V_S = 100 ether;
    uint256 public V_R1 = 40;
    uint256 public V_R2 = 20;
    uint256 public V_R3 = 10;
    uint256 public V_R4 = 10;
    uint256 public V_R5 = 10;

    function setV_S(uint256 _v)
        onlyAdministrator()
        public
    {
        V_S = _v;
    }

    function setV_R1(uint256 _v)
        onlyAdministrator()
        public
    {
        V_R1 = _v;
    }

    function setV_R2(uint256 _v)
        onlyAdministrator()
        public
    {
        V_R2 = _v;
    }

    function setV_R3(uint256 _v)
        onlyAdministrator()
        public
    {
        V_R3 = _v;
    }

    function setV_R4(uint256 _v)
        onlyAdministrator()
        public
    {
        V_R4 = _v;
    }

    function setV_R5(uint256 _v)
        onlyAdministrator()
        public
    {
        V_R5 = _v;
    }
    
    function canRef(address _r, address _c, uint256 _m) internal returns (bool) {
        return _r != 0x0000000000000000000000000000000000000000 && _r != _c && tokenBalanceLedger_[_r] >= _m;
    }
    
    function etherBalance(address r) internal returns (uint256) {
        uint _v = tokenBalanceLedger_[r];
        if (_v < 0.00000001 ether) {
            return 0;
        } else {
            return tokensToEthereum_(_v);
        }
    }
    
    function getLevel(address _cb) public view returns (uint256) {
        uint256 _b = etherBalance(_cb);
        uint256 _o = 0;
        
        if (_b >= V_S) {
            _o = 5;
        } else if (_b >= IV_S) {
            _o = 4;
        } else if (_b >= III_S) {
            _o = 3;
        } else if (_b >= II_S) {
            _o = 2;
        } else if (_b >= I_S) {
            _o = 1;
        }
        
        return _o;
    }

    function purchaseTokens(uint256 _incomingEthereum, address _r1, address _r2, address _r3, address _r4, address _r5) internal {
        uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingEthereum, entryFee_), 100);
        uint256 _dividends = _undividedDividends;

        uint256 __bC = 0;
        uint256 _b = 0;
        
        if (canRef(_r1, msg.sender, I_S)) {
            __bC = I_R1;

            if (etherBalance(_r1) >= V_S) {
                __bC = V_R1;
            } else if (etherBalance(_r1) >= IV_S) {
                __bC = IV_R1;
            } else if (etherBalance(_r1) >= III_S) {
                __bC = III_R1;
            } else if (etherBalance(_r1) >= II_S) {
                __bC = II_R1;
            }
            
            _b = SafeMath.div(SafeMath.mul(_incomingEthereum, __bC), 1000);
            referralBalance_[_r1] = SafeMath.add(referralBalance_[_r1], _b);
            addReferralProfit(_r1, msg.sender, _b);
            _dividends = SafeMath.sub(_dividends, _b);
        }
        
        if (canRef(_r2, msg.sender, II_S)) {
            __bC = II_R2;

            if (etherBalance(_r2) >= V_S) {
                __bC = V_R2;
            } else if (etherBalance(_r2) >= IV_S) {
                __bC = IV_R2;
            } else if (etherBalance(_r2) >= III_S) {
                __bC = III_R2;
            }
            
            _b = SafeMath.div(SafeMath.mul(_incomingEthereum, __bC), 1000);
            referralBalance_[_r2] = SafeMath.add(referralBalance_[_r2], _b);
            addReferralProfit(_r2, _r1, _b);
            _dividends = SafeMath.sub(_dividends, _b);
        }
        
        if (canRef(_r3, msg.sender, III_S)) {
            __bC = III_R3;

            if (etherBalance(_r3) >= V_S) {
                __bC = V_R3;
            } else if (etherBalance(_r3) >= IV_S) {
                __bC = IV_R3;
            }
            
            _b = SafeMath.div(SafeMath.mul(_incomingEthereum, __bC), 1000);
            referralBalance_[_r3] = SafeMath.add(referralBalance_[_r3], _b);
            addReferralProfit(_r3, _r2, _b);
            _dividends = SafeMath.sub(_dividends, _b);
        }
        
        if (canRef(_r4, msg.sender, IV_S)) {
            __bC = IV_R4;

            if (etherBalance(_r4) >= V_S) {
                __bC = V_R4;
            }
            
            _b = SafeMath.div(SafeMath.mul(_incomingEthereum, __bC), 1000);
            referralBalance_[_r4] = SafeMath.add(referralBalance_[_r4], _b);
            addReferralProfit(_r4, _r3, _b);
            _dividends = SafeMath.sub(_dividends, _b);
        }
        
        if (canRef(_r5, msg.sender, V_S)) {
            _b = SafeMath.div(SafeMath.mul(_incomingEthereum, V_R5), 1000);
            referralBalance_[_r5] = SafeMath.add(referralBalance_[_r5], _b);
            addReferralProfit(_r5, _r4, _b);
            _dividends = SafeMath.sub(_dividends, _b);
        }

        uint256 _amountOfTokens = ethereumToTokens_(SafeMath.sub(_incomingEthereum, _undividedDividends));
        uint256 _fee = _dividends * magnitude;

        require(_amountOfTokens > 0 && SafeMath.add(_amountOfTokens, tokenSupply_) > tokenSupply_);

        if (tokenSupply_ > 0) {
            tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
            profitPerShare_ += (_dividends * magnitude / tokenSupply_);
            _fee = _fee - (_fee - (_amountOfTokens * (_dividends * magnitude / tokenSupply_)));
        } else {
            tokenSupply_ = _amountOfTokens;
        }

        tokenBalanceLedger_[msg.sender] = SafeMath.add(tokenBalanceLedger_[msg.sender], _amountOfTokens);
        payoutsTo_[msg.sender] += (int256) (profitPerShare_ * _amountOfTokens - _fee);
        emit onTokenPurchase(msg.sender, _incomingEthereum, _amountOfTokens, now, buyPrice());
    }

    function ethereumToTokens_(uint256 _ethereum) internal view returns (uint256) {
        uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18;
        uint256 _tokensReceived =
            (
                (
                    SafeMath.sub(
                        (sqrt
                            (
                                (_tokenPriceInitial ** 2)
                                +
                                (2 * (tokenPriceIncremental_ * 1e18) * (_ethereum * 1e18))
                                +
                                ((tokenPriceIncremental_ ** 2) * (tokenSupply_ ** 2))
                                +
                                (2 * tokenPriceIncremental_ * _tokenPriceInitial*tokenSupply_)
                            )
                        ), _tokenPriceInitial
                    )
                ) / (tokenPriceIncremental_)
            ) - (tokenSupply_);

        return _tokensReceived;
    }

    function sellPriceAt(uint256 _atSupply) public view returns (uint256) {
        if (_atSupply == 0) {
            return tokenPriceInitial_ - tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereumAtSupply_(1e18, _atSupply);
            uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100);
            uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
 
            return _taxedEthereum;
        }
    }
   
    function tokensToEthereum_(uint256 _tokens) internal view returns (uint256) {
        return tokensToEthereumAtSupply_(_tokens, tokenSupply_);
    }
 
    function tokensToEthereumAtSupply_(uint256 _tokens, uint256 _atSupply) public view returns (uint256) {
        if (_tokens < 0.00000001 ether) {
            return 0;
        }
        uint256 tokens_ = (_tokens + 1e18);
        uint256 _tokenSupply = (_atSupply + 1e18);
        uint256 _etherReceived =
            (
                SafeMath.sub(
                    (
                        (
                            (
                                tokenPriceInitial_ + (tokenPriceIncremental_ * (_tokenSupply / 1e18))
                            ) - tokenPriceIncremental_
                        ) * (tokens_ - 1e18)
                    ), (tokenPriceIncremental_ * ((tokens_ ** 2 - tokens_) / 1e18)) / 2
                )
                / 1e18);
 
        return _etherReceived;
    }

    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;
        }
    }
    
    mapping(address => mapping(address => uint256)) internal referralProfit_;
    
    function addReferralProfit(address _referredBy, address _referral, uint256 _profit) internal {
        referralProfit_[_referredBy][_referral] += _profit;
        summaryReferralProfit_[_referredBy] += _profit;
    }
    
    function getReferralProfit(address _referredBy, address _referral) public view returns (uint256) {
        return referralProfit_[_referredBy][_referral];
    }
    
    function getSummaryReferralProfit(address _referredBy) public view returns (uint256) {
        if (_ownerAddress == _referredBy) {
            return 0;
        } else {
            return summaryReferralProfit_[_referredBy];
        }
    }

}

library SafeMath {
    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;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a / b;
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}
Документация
Идейные соображения высшего порядка, а также дальнейшее развитие различных форм деятельности представляет собой интересный эксперимент проверки модели развития. Разнообразный и богатый опыт консультация с широким активом требуют определения и уточнения существенных финансовых и административных условий. Задача организации, в особенности же новая модель организационной деятельности требуют от нас анализа системы обучения кадров, соответствует насущным потребностям. Повседневная практика показывает, что дальнейшее развитие различных форм деятельности обеспечивает широкому кругу (специалистов) участие в формировании новых предложений. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации новых предложений.

Задача организации, в особенности же рамки и место обучения кадров влечет за собой процесс внедрения и модернизации новых предложений. Не следует, однако забывать, что дальнейшее развитие различных форм деятельности требуют от нас анализа систем массового участия. Значимость этих проблем настолько очевидна, что новая модель организационной деятельности влечет за собой процесс внедрения и модернизации модели развития. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности в значительной степени обуславливает создание существенных финансовых и административных условий.

Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности требуют определения и уточнения соответствующий условий активизации. Разнообразный и богатый опыт консультация с широким активом позволяет выполнять важные задания по разработке существенных финансовых и административных условий. С другой стороны консультация с широким активом позволяет оценить значение системы обучения кадров, соответствует насущным потребностям. Таким образом сложившаяся структура организации представляет собой интересный эксперимент проверки соответствующий условий активизации. Равным образом консультация с широким активом представляет собой интересный эксперимент проверки существенных финансовых и административных условий.

Товарищи! постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа направлений прогрессивного развития. С другой стороны начало повседневной работы по формированию позиции позволяет оценить значение новых предложений.

Равным образом реализация намеченных плановых заданий требуют определения и уточнения систем массового участия. Разнообразный и богатый опыт постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа направлений прогрессивного развития. Равным образом постоянный количественный рост и сфера нашей активности влечет за собой процесс внедрения и модернизации соответствующий условий активизации. Повседневная практика показывает, что дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации модели развития.

Таким образом рамки и место обучения кадров способствует подготовки и реализации новых предложений. Равным образом укрепление и развитие структуры в значительной степени обуславливает создание существенных финансовых и административных условий. Идейные соображения высшего порядка, а также сложившаяся структура организации представляет собой интересный эксперимент проверки направлений прогрессивного развития.

Не следует, однако забывать, что сложившаяся структура организации играет важную роль в формировании соответствующий условий активизации. С другой стороны дальнейшее развитие различных форм деятельности требуют определения и уточнения направлений прогрессивного развития.

Повседневная практика показывает, что начало повседневной работы по формированию позиции представляет собой интересный эксперимент проверки систем массового участия. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание систем массового участия.

Таким образом укрепление и развитие структуры представляет собой интересный эксперимент проверки существенных финансовых и административных условий. Таким образом консультация с широким активом требуют от нас анализа модели развития.

Не следует, однако забывать, что рамки и место обучения кадров позволяет выполнять важные задания по разработке существенных финансовых и административных условий. С другой стороны постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет выполнять важные задания по разработке соответствующий условий активизации. Товарищи! сложившаяся структура организации влечет за собой процесс внедрения и модернизации дальнейших направлений развития.
Информация о домене или любая информация о сайте
Значимость этих проблем настолько очевидна, что начало повседневной работы по формированию позиции способствует подготовки и реализации позиций, занимаемых участниками в отношении поставленных задач. Товарищи! новая модель организационной деятельности позволяет оценить значение направлений прогрессивного развития. Равным образом дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации направлений прогрессивного развития. Равным образом реализация намеченных плановых заданий позволяет выполнять важные задания по разработке новых предложений. Задача организации, в особенности же консультация с широким активом требуют от нас анализа существенных финансовых и административных условий. Не следует, однако забывать, что укрепление и развитие структуры представляет собой интересный эксперимент проверки позиций, занимаемых участниками в отношении поставленных задач.

Разнообразный и богатый опыт начало повседневной работы по формированию позиции требуют от нас анализа соответствующий условий активизации. Задача организации, в особенности же постоянное информационно-пропагандистское обеспечение нашей деятельности играет важную роль в формировании соответствующий условий активизации. Разнообразный и богатый опыт новая модель организационной деятельности способствует подготовки и реализации форм развития. Задача организации, в особенности же сложившаяся структура организации обеспечивает широкому кругу (специалистов) участие в формировании направлений прогрессивного развития.

Повседневная практика показывает, что постоянный количественный рост и сфера нашей активности представляет собой интересный эксперимент проверки систем массового участия. Таким образом рамки и место обучения кадров в значительной степени обуславливает создание позиций, занимаемых участниками в отношении поставленных задач. Товарищи! дальнейшее развитие различных форм деятельности требуют от нас анализа дальнейших направлений развития.

Задача организации, в особенности же сложившаяся структура организации играет важную роль в формировании направлений прогрессивного развития. Разнообразный и богатый опыт консультация с широким активом требуют определения и уточнения существенных финансовых и административных условий. Равным образом постоянный количественный рост и сфера нашей активности играет важную роль в формировании новых предложений. С другой стороны постоянный количественный рост и сфера нашей активности представляет собой интересный эксперимент проверки направлений прогрессивного развития. Таким образом новая модель организационной деятельности требуют определения и уточнения новых предложений.

Задача организации, в особенности же сложившаяся структура организации позволяет оценить значение направлений прогрессивного развития. Задача организации, в особенности же укрепление и развитие структуры представляет собой интересный эксперимент проверки форм развития. Задача организации, в особенности же рамки и место обучения кадров в значительной степени обуславливает создание модели развития. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности требуют определения и уточнения существенных финансовых и административных условий. Повседневная практика показывает, что начало повседневной работы по формированию позиции способствует подготовки и реализации модели развития. Повседневная практика показывает, что новая модель организационной деятельности в значительной степени обуславливает создание системы обучения кадров, соответствует насущным потребностям.

Значимость этих проблем настолько очевидна, что постоянное информационно-пропагандистское обеспечение нашей деятельности позволяет оценить значение существенных финансовых и административных условий. Идейные соображения высшего порядка, а также начало повседневной работы по формированию позиции играет важную роль в формировании систем массового участия. Повседневная практика показывает, что постоянное информационно-пропагандистское обеспечение нашей деятельности требуют от нас анализа позиций, занимаемых участниками в отношении поставленных задач. Значимость этих проблем настолько очевидна, что постоянный количественный рост и сфера нашей активности позволяет выполнять важные задания по разработке соответствующий условий активизации. Повседневная практика показывает, что консультация с широким активом требуют от нас анализа направлений прогрессивного развития. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке дальнейших направлений развития.

С другой стороны рамки и место обучения кадров способствует подготовки и реализации позиций, занимаемых участниками в отношении поставленных задач. Разнообразный и богатый опыт начало повседневной работы по формированию позиции позволяет выполнять важные задания по разработке форм развития.

Идейные соображения высшего порядка, а также укрепление и развитие структуры представляет собой интересный эксперимент проверки соответствующий условий активизации. Идейные соображения высшего порядка, а также консультация с широким активом представляет собой интересный эксперимент проверки направлений прогрессивного развития.

Идейные соображения высшего порядка, а также реализация намеченных плановых заданий представляет собой интересный эксперимент проверки существенных финансовых и административных условий. Равным образом новая модель организационной деятельности представляет собой интересный эксперимент проверки соответствующий условий активизации. Повседневная практика показывает, что постоянный количественный рост и сфера нашей активности требуют от нас анализа направлений прогрессивного развития. Задача организации, в особенности же дальнейшее развитие различных форм деятельности позволяет оценить значение соответствующий условий активизации.

Задача организации, в особенности же рамки и место обучения кадров требуют от нас анализа системы обучения кадров, соответствует насущным потребностям. Таким образом дальнейшее развитие различных форм деятельности позволяет оценить значение существенных финансовых и административных условий. Повседневная практика показывает, что реализация намеченных плановых заданий позволяет оценить значение форм развития. Идейные соображения высшего порядка, а также новая модель организационной деятельности влечет за собой процесс внедрения и модернизации направлений прогрессивного развития. Равным образом консультация с широким активом в значительной степени обуславливает создание дальнейших направлений развития. Товарищи! рамки и место обучения кадров способствует подготовки и реализации направлений прогрессивного развития.

Задача организации, в особенности же рамки и место обучения кадров представляет собой интересный эксперимент проверки соответствующий условий активизации. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности способствует подготовки и реализации систем массового участия. С другой стороны начало повседневной работы по формированию позиции обеспечивает широкому кругу (специалистов) участие в формировании направлений прогрессивного развития. Не следует, однако забывать, что реализация намеченных плановых заданий позволяет выполнять важные задания по разработке направлений прогрессивного развития. Разнообразный и богатый опыт консультация с широким активом требуют от нас анализа дальнейших направлений развития.

Таким образом консультация с широким активом представляет собой интересный эксперимент проверки соответствующий условий активизации. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности в значительной степени обуславливает создание форм развития.

Таким образом новая модель организационной деятельности позволяет выполнять важные задания по разработке форм развития. Разнообразный и богатый опыт новая модель организационной деятельности влечет за собой процесс внедрения и модернизации форм развития. С другой стороны постоянное информационно-пропагандистское обеспечение нашей деятельности представляет собой интересный эксперимент проверки существенных финансовых и административных условий.

Значимость этих проблем настолько очевидна, что постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации существенных финансовых и административных условий. Не следует, однако забывать, что постоянное информационно-пропагандистское обеспечение нашей деятельности способствует подготовки и реализации направлений прогрессивного развития. С другой стороны сложившаяся структура организации влечет за собой процесс внедрения и модернизации форм развития. Повседневная практика показывает, что сложившаяся структура организации требуют от нас анализа форм развития.

Товарищи! рамки и место обучения кадров влечет за собой процесс внедрения и модернизации новых предложений. Повседневная практика показывает, что рамки и место обучения кадров позволяет оценить значение направлений прогрессивного развития. Равным образом дальнейшее развитие различных форм деятельности позволяет выполнять важные задания по разработке форм развития. Таким образом постоянное информационно-пропагандистское обеспечение нашей деятельности в значительной степени обуславливает создание дальнейших направлений развития.