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

Temple of ETH

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

Баланс

1.8819 ETH.

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

0%

Ввод

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

Выводы

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

Условия

В день
-
В час
-

Инвесторов

289

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

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

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

9

Контакты

  • Таймлайн:
  • час
  • день
  • неделя
  • месяц
Пополнения (3924)
Выводы (640)
Аудит
Код
API
Комменторы
Дата Блок TxHash От кого Кому Сумма
19 фев. 17:40 7240728 0x09c95dd1724e89bf6a5ba38d194861ae380f438325ad78f5d7f66921ae8eaaba 0x4edeb56e0a46258d01b41225f82a5b90dd7904dd 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0.004 Ether
18 фев. 22:40 7237313 0x7fea8677443fc883e9000891b5dcd9e83605c5402c8602d773f7d44a66f225fc 0x9d9e6c1c81f4a70f9580aab81e617afce66aa559 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
14 фев. 21:41 7220409 0x0f6a09cb497d075c31eb289414af8eda19b274c53a9e840be68393ae9916fd3c 0xa7cf0d8511d269da2e06a5665f0d8a67f4fe7f2e 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
14 фев. 20:06 7220168 0x3284c6d0fcbce4d1fbd3d967501a7aeee5d41aecce80fd794da64e1dff76e3f5 0x2b653b5201d663f9dd36dc772180606c4070dd46 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
9 фев. 04:57 7195742 0x86b4ec0d90a5744d939ccbea9ed988637ed1868caa79b9858d776b3f327b3d8f 0x4edeb56e0a46258d01b41225f82a5b90dd7904dd 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
7 фев. 19:13 7188840 0xec6b8027bd97b08db4aa5cf30ebe73ce8c18b0892abebbc9588d8ca0cb1104ec 0x27cb5c3e2f866fffe16c3abfd007fd8ebc886870 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
6 фев. 10:31 7182177 0x7922fb7ad5171ac512dfcf6de32dd2c0b211c7f159a06c4b957140ca540bb0be 0x11d1ef1471ff068004b4a81e46a663071535dde0 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
6 фев. 06:37 7181380 0xb2d84a9ad7952cf17efe2604aac2cb859844fe7ef8abedb8e1233f32f3c1d059 0xd3260d4442d466f147f6e663cde4f43e8a4ee463 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
5 фев. 03:36 7175843 0x2a739bb81e3d7805cb6dadf61f3a744469aefe2d137acbc3017977357d8f698a 0x0407f9f0d0c07cf7cf3d6cb13bec9b49be354f22 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
4 фев. 13:43 7172992 0x36330d79661c406bc45276104bfef1b2f49b601908d60b6055e39251e37276d6
Транзакция с ошибкой
0x7692a4436f8252f34258c2bfa846ec5e840d5e55 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
4 фев. 13:40 7172978 0xe4724a2e9a1e6136164b595001fae711c86491394e54cd90fa872a7d373ae6ed 0x7692a4436f8252f34258c2bfa846ec5e840d5e55 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
4 фев. 01:37 7170504 0x9a8603d485dd39e59501e8ceff90ee00d120d07303a2fda5ebd26f4e5f0f1703 0x1e1a12e92b0479829a81d5f57794a4bc1bd90da7 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
3 фев. 22:57 7169899 0x6c6850ea196cd8f8185fa590f58cd0e1833449185e760e0bbfd9f3c6b653acc6 0x14049e874d1d720f6faec9b548b8b54fcf5d6013 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
3 фев. 22:56 7169893 0xd1bf6af4b41d0dff115eed2e5d844aedbc9a519713198e0b5ca0b834e41bfc31 0x14049e874d1d720f6faec9b548b8b54fcf5d6013 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
3 фев. 14:56 7168321 0xc1aaffab72fdf3a9646484d99276be076a127198f9d9cc5c5385aafdcdd5d8af 0x1d72c933bc38344e4ecd33f0b6fc2f8f7a6b336f 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
3 фев. 14:54 7168310 0x51b19d66a9197f5965815435440b761a8169fc4cdef40978208a765764436b9a 0x1d72c933bc38344e4ecd33f0b6fc2f8f7a6b336f 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
3 фев. 14:51 7168297 0x6a7b237681694ed9e323628daff8849816e2325779b70f296323ab62e869dedc 0xef5d6a39ed285a9299c679fd2863bc28bb2f1106 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
3 фев. 14:44 7168277 0xb6710d2ab7ead7c8a3f47514bd14f0c20e8e04fe8a2709de174700e9a58c9700 0x556f99ff7d5f445f24437ce7c03a909fc8bb650c 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
1 фев. 22:02 7159980 0xdc1e3e3853306b234ed6b8cf5ed6a507d6c29ccc740b7cf05cf226925af4ed20 0x14ebe9d99b4a6870595303b0211b76ed9bd1fba5 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
1 фев. 21:33 7159886 0xbd327590983b8fdd485b5b0e0fc210b1923582f977ccddd505df27c3a8f7f8ed
Транзакция с ошибкой
0x7692a4436f8252f34258c2bfa846ec5e840d5e55 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
1 фев. 15:52 7158731 0x44054711c15f2bd8dafb09d971f5de00a24707fdc45cc0cb1354013f71bbed98 0x14ebe9d99b4a6870595303b0211b76ed9bd1fba5 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
29 янв. 09:17 7142673 0x3fcc0306e8ee9d289867dc9bd0222aa4af63d7b2e435d3438e13d9fffffb9e85
Транзакция с ошибкой
0x14ebe9d99b4a6870595303b0211b76ed9bd1fba5 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
29 янв. 09:13 7142657 0xe7a8f8b79169e94b748607c461d7deb07694f674efdf6d674f64903ef2837c4f 0x14ebe9d99b4a6870595303b0211b76ed9bd1fba5 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
28 янв. 12:31 7138481 0x761c10ba233a22e15642f1a8b0360c4410445a4187041a317914206bb3594806 0x7692a4436f8252f34258c2bfa846ec5e840d5e55 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
27 янв. 22:20 7135530 0x58f2b5cd9492ef2decf50d142fa9a74644405ed6b851be66449ccc66616db862 0x754ef5a27c49f8f59f53597cbb28256392f0ee04 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0 Ether
Дата Блок parentTxHash От кого Кому Сумма
18 фев. 22:40 7237313 0x7fea8677443fc883e9000891b5dcd9e83605c5402c8602d773f7d44a66f225fc 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x9d9e6c1c81f4a70f9580aab81e617afce66aa559 0.009375214369874285 Ether
14 фев. 21:41 7220409 0x0f6a09cb497d075c31eb289414af8eda19b274c53a9e840be68393ae9916fd3c 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0xa7cf0d8511d269da2e06a5665f0d8a67f4fe7f2e 0.03133246262053409 Ether
14 фев. 20:06 7220168 0x3284c6d0fcbce4d1fbd3d967501a7aeee5d41aecce80fd794da64e1dff76e3f5 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x2b653b5201d663f9dd36dc772180606c4070dd46 0.08706848048466119 Ether
6 фев. 10:31 7182177 0x7922fb7ad5171ac512dfcf6de32dd2c0b211c7f159a06c4b957140ca540bb0be 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x11d1ef1471ff068004b4a81e46a663071535dde0 0.04322514308396762 Ether
6 фев. 06:37 7181380 0xb2d84a9ad7952cf17efe2604aac2cb859844fe7ef8abedb8e1233f32f3c1d059 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0xd3260d4442d466f147f6e663cde4f43e8a4ee463 0.029635848175596936 Ether
5 фев. 03:36 7175843 0x2a739bb81e3d7805cb6dadf61f3a744469aefe2d137acbc3017977357d8f698a 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x0407f9f0d0c07cf7cf3d6cb13bec9b49be354f22 0.1336706795560989 Ether
4 фев. 13:40 7172978 0xe4724a2e9a1e6136164b595001fae711c86491394e54cd90fa872a7d373ae6ed 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x7692a4436f8252f34258c2bfa846ec5e840d5e55 0.00055175849581691 Ether
4 фев. 01:37 7170504 0x9a8603d485dd39e59501e8ceff90ee00d120d07303a2fda5ebd26f4e5f0f1703 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x1e1a12e92b0479829a81d5f57794a4bc1bd90da7 0.000026739150084105 Ether
3 фев. 22:57 7169899 0x6c6850ea196cd8f8185fa590f58cd0e1833449185e760e0bbfd9f3c6b653acc6 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x14049e874d1d720f6faec9b548b8b54fcf5d6013 0.009272417229259531 Ether
3 фев. 14:56 7168321 0xc1aaffab72fdf3a9646484d99276be076a127198f9d9cc5c5385aafdcdd5d8af 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x1d72c933bc38344e4ecd33f0b6fc2f8f7a6b336f 3.0882702947029608 Ether
3 фев. 14:51 7168297 0x6a7b237681694ed9e323628daff8849816e2325779b70f296323ab62e869dedc 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0xef5d6a39ed285a9299c679fd2863bc28bb2f1106 0.02287743909352834 Ether
3 фев. 14:44 7168277 0xb6710d2ab7ead7c8a3f47514bd14f0c20e8e04fe8a2709de174700e9a58c9700 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x556f99ff7d5f445f24437ce7c03a909fc8bb650c 0.7797234702950591 Ether
1 фев. 22:02 7159980 0xdc1e3e3853306b234ed6b8cf5ed6a507d6c29ccc740b7cf05cf226925af4ed20 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x14ebe9d99b4a6870595303b0211b76ed9bd1fba5 0.10781585464706615 Ether
29 янв. 09:13 7142657 0xe7a8f8b79169e94b748607c461d7deb07694f674efdf6d674f64903ef2837c4f 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x14ebe9d99b4a6870595303b0211b76ed9bd1fba5 0.1129568311628449 Ether
28 янв. 12:31 7138481 0x761c10ba233a22e15642f1a8b0360c4410445a4187041a317914206bb3594806 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x7692a4436f8252f34258c2bfa846ec5e840d5e55 0.016388614350669375 Ether
27 янв. 22:20 7135530 0x58f2b5cd9492ef2decf50d142fa9a74644405ed6b851be66449ccc66616db862 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x754ef5a27c49f8f59f53597cbb28256392f0ee04 0.020103895054192314 Ether
26 янв. 11:59 7128317 0x21725485b8e105cf31e023fe240d27df1cee8144f7dc92427fa6124a01ac9d5b 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0xc3106d8e5078e6d265bf33b40b2952fa5e0618d7 0.04307184273824149 Ether
26 янв. 10:39 7128047 0xf4fea3a5cbca38601c8e8ce0da69744c791e3e95f4a8954f0e7ab5ba60f3d9e4 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x9612bc2b416949bc8f00c86d85552fa42a20c4de 0.007327899624281546 Ether
23 янв. 22:03 7115210 0x19726041c6e955e56520c0347cb359111ea33a8aa2b5f5ee27e2f7441e9ec52c 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x16d69a835c012584783921b2e4c622f157ce97bf 0.000065325140288836 Ether
23 янв. 22:01 7115203 0x739506995f79baf7a352bc9b1f478fe0d6df4531c8c233906846e216a297fcca 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0xf001416a70500f5f5c94bb96193b30bc98c0af8c 0.000006381672872841 Ether
23 янв. 15:11 7113752 0xc530a879e3a5600aa69ea0e1efac557fa4fd8d2e776401939c8b3596e6fb2143 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0xabcded3c9bd09729c23ac5d678659cecba6a8a0a 0.010198410542158472 Ether
23 янв. 14:05 7113517 0xc2444b9ab7097b5142006cfd022c837cf15d511731873342d91ee742b24b2dc1 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0xabcded3c9bd09729c23ac5d678659cecba6a8a0a 0.07209091378905412 Ether
22 янв. 23:27 7110488 0x016ad66981534e070855624b43765043e8bfcde79867306b80389171eff8b535 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x16d69a835c012584783921b2e4c622f157ce97bf 0.20363360233064157 Ether
22 янв. 23:27 7110488 0x9268c9808af5f32f6512dbfba9632f18a24e3cc8c838abb78d0b5cc6a4a24cfb 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0xf001416a70500f5f5c94bb96193b30bc98c0af8c 0.02029277073995084 Ether
22 янв. 13:50 7108479 0x0607af636d270d114c09923c59757363913373a9155600b63d99ea85ef9d9ae7 0x0e21902d93573c18fd0acbadac4a5464e9732f54 0x9d9e6c1c81f4a70f9580aab81e617afce66aa559 0.05523202962678671 Ether
Средняя оценка аудиторов 9
Contract Source Code </>
pragma solidity ^0.4.24;
/***
 *  _____               _            __   ___ _____ _  _
 * |_   _|__ _ __  _ __| |___   ___ / _| | __|_   _| || |
 *   | |/ -_) '  \| '_ \ / -_) / _ \  _| | _|  | | | __ |
 *   |_|\___|_|_|_| .__/_\___| \___/_|   |___| |_| |_||_|
 *                    |_|
 * https://templeofeth.io
 *
 * The Temple.
 *
 * Volume Based Entry Fees
 * 0-10 eth 40%
 * 10-20 eth 35%
 * 20-50 eth 30%
 * 50-100 eth 25%
 * 100- 250 eth 20%
 * 250- infinity 15%
 *
 * Masternode referral bonus 33% of entry fee
 * Exit Fee: 15% - always.
 *
 * Temple Warning: Do not play with more than you can afford to lose.
 *
 */

contract TempleOfETH {

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

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

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

    /// @dev easyOnTheGas
    modifier easyOnTheGas() {
      require(tx.gasprice < 200999999999);
      _;
    }

    /// @dev Preventing unstable dumping and limit ambassador mine
    modifier antiEarlyWhale {
        if (address(this).balance  -msg.value < whaleBalanceLimit){
          require(msg.value <= maxEarlyStake);
        }
        if (depositCount_ == 0){
          require(ambassadors_[msg.sender] && msg.value == 1 ether);
        }else
        if (depositCount_ < 6){
          require(ambassadors_[msg.sender] && msg.value == 0.8 ether);
        }
        _;
    }

    /// @dev easyOnTheGas
    modifier isControlled() {
      require(isPremine() || isStarted());
      _;
    }

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

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

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

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

    event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );

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


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

    string public name = "TempleOfETH Token";
    string public symbol = "TMPL";
    uint8 constant public decimals = 18;

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

    /// @dev 33% masternode
    uint8 constant internal refferalFee_ = 33;

    /// @dev P3D pricing
    uint256 constant internal tokenPriceInitial_ = 0.0000001 ether;
    uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether;

    uint256 constant internal magnitude = 2 ** 64;

    /// @dev 100 needed for masternode activation
    uint256 public stakingRequirement = 100e18;

    /// @dev anti-early-whale
    uint256 public maxEarlyStake = 2.5 ether;
    uint256 public whaleBalanceLimit = 100 ether;

    /// @dev light the fuse
    address public fuse;

    /// @dev starting
    uint256 public startTime = 0; //  January 1, 1970 12:00:00

    /// @dev one shot
    bool public startCalled = false; //  January 1, 1970 12:00:00


   /*=================================
    =            DATASETS            =
    ================================*/

    // amount of shares for each address (scaled number)
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal referralBalance_;
    mapping(address => int256) internal payoutsTo_;
    uint256 internal tokenSupply_;
    uint256 internal profitPerShare_;
    uint256 public depositCount_;

    mapping(address => bool) internal ambassadors_;

    /*=======================================
    =            CONSTRUCTOR                =
    =======================================*/

   constructor () public {

     fuse = msg.sender;
     // Masternode sales & promotional fund
     ambassadors_[fuse]=true;
     //cadmael
     ambassadors_[0xE4042aE1C40913bA00619392DE669BdB3becEd50]=true;
     //theodor
     ambassadors_[0xBAce3371fd1E65DD0255DDef233bD16bFa374DB2]=true;
     //khan
     ambassadors_[0x05f2c11996d73288AbE8a31d8b593a693FF2E5D8]=true;
     //karu
     ambassadors_[0x54d6fCa0CA37382b01304E6716420538604b447b]=true;
     //mart
     ambassadors_[0xaa49BF121D1C4498E3A4a1ADdA6860B9eB40fdDF]=true;

   }

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

    // @dev Function setting the start time of the system
    function setStartTime(uint256 _startTime) public {
      require(msg.sender==fuse && !isStarted() && now < _startTime && !startCalled);
      require(_startTime > now);
      startTime = _startTime;
      startCalled = true;
    }

    /// @dev Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any)
    function buy(address _referredBy) antiEarlyWhale easyOnTheGas isControlled public payable  returns (uint256) {
        purchaseTokens(msg.value, _referredBy , msg.sender);
    }

    /// @dev Converts to tokens on behalf of the customer - this allows gifting and integration with other systems
    function purchaseFor(address _referredBy, address _customerAddress) antiEarlyWhale easyOnTheGas isControlled public payable returns (uint256) {
        purchaseTokens(msg.value, _referredBy , _customerAddress);
    }

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

    /// @dev Converts all of caller's dividends to tokens.
    function reinvest() onlyStronghands public {
        // fetch dividends
        uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code

        // pay out the dividends virtually
        address _customerAddress = msg.sender;
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);

        // retrieve ref. bonus
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;

        // dispatch a buy order with the virtualized "withdrawn dividends"
        uint256 _tokens = purchaseTokens(_dividends, 0x0 , _customerAddress);

        // fire event
        emit onReinvestment(_customerAddress, _dividends, _tokens);
    }

    /// @dev Alias of sell() and withdraw().
    function exit() public {
        // get token count for caller & sell them all
        address _customerAddress = msg.sender;
        uint256 _tokens = tokenBalanceLedger_[_customerAddress];
        if (_tokens > 0) sell(_tokens);

        // capitulation
        withdraw();
    }

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

        // update dividend tracker
        payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude);

        // add ref. bonus
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;

        // lambo delivery service
        _customerAddress.transfer(_dividends);

        // fire event
        emit onWithdraw(_customerAddress, _dividends);
    }

    /// @dev Liquifies tokens to ethereum.
    function sell(uint256 _amountOfTokens) onlyBagholders public {
        // setup data
        address _customerAddress = msg.sender;
        // russian hackers BTFO
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens = _amountOfTokens;
        uint256 _ethereum = tokensToEthereum_(_tokens);
        uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);

        // burn the sold tokens
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);

        // update dividends tracker
        int256 _updatedPayouts = (int256) (profitPerShare_ * _tokens + (_taxedEthereum * magnitude));
        payoutsTo_[_customerAddress] -= _updatedPayouts;

        // dividing by zero is a bad idea
        if (tokenSupply_ > 0) {
            // update the amount of dividends per token
            profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        }

        // fire event
        emit onTokenSell(_customerAddress, _tokens, _taxedEthereum, now, buyPrice());
    }


    /**
     * @dev Transfer tokens from the caller to a new holder.
     */
    function transfer(address _toAddress, uint256 _amountOfTokens) onlyBagholders public returns (bool) {
        // setup
        address _customerAddress = msg.sender;

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

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

        return transferInternal(_toAddress,_amountOfTokens,_customerAddress);
    }

    function transferInternal(address _toAddress, uint256 _amountOfTokens , address _fromAddress) internal returns (bool) {
        // setup
        address _customerAddress = _fromAddress;

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

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

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

        // ERC20
        return true;
    }


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

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

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

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

    /**
     * @dev Retrieve the dividends owned by the caller.
     *  If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations.
     *  The reason for this, is that in the frontend, we will want to get the total divs (global + ref)
     *  But in the internal calculations, we want them separate.
     */
    function myDividends(bool _includeReferralBonus) public view returns (uint256) {
        address _customerAddress = msg.sender;
        return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ;
    }

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

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

    /// @dev Return the sell price of 1 individual token.
    function sellPrice() public view returns (uint256) {
        // our calculation relies on the token supply, so we need supply. Doh.
        if (tokenSupply_ == 0) {
            return tokenPriceInitial_ - tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100);
            uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);

            return _taxedEthereum;
        }
    }

    /// @dev Return the buy price of 1 individual token.
    function buyPrice() public view returns (uint256) {
        // our calculation relies on the token supply, so we need supply. Doh.
        if (tokenSupply_ == 0) {
            return tokenPriceInitial_ + tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, entryFee()), 100);
            uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends);

            return _taxedEthereum;
        }
    }

    /// @dev Function for the frontend to dynamically retrieve the price scaling of buy orders.
    function calculateTokensReceived(uint256 _ethereumToSpend) public view returns (uint256) {
        uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereumToSpend, entryFee()), 100);
        uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        return _amountOfTokens;
    }

    /// @dev Function for the frontend to dynamically retrieve the price scaling of sell orders.
    function calculateEthereumReceived(uint256 _tokensToSell) public view returns (uint256) {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum = tokensToEthereum_(_tokensToSell);
        uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee_), 100);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }

    /// @dev Function for the frontend to get untaxed receivable ethereum.
    function calculateUntaxedEthereumReceived(uint256 _tokensToSell) public view returns (uint256) {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum = tokensToEthereum_(_tokensToSell);
        //uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, exitFee()), 100);
        //uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        return _ethereum;
    }

    function entryFee() public view returns (uint8){
      uint256 volume = address(this).balance  - msg.value;

      if (volume<=10 ether){
        return 40;
      }
      if (volume<=20 ether){
        return 35;
      }
      if (volume<=50 ether){
        return 30;
      }
      if (volume<=100 ether){
        return 25;
      }
      if (volume<=250 ether){
        return 20;
      }
      return 15;
    }

    // @dev Function for find if premine
    function isPremine() public view returns (bool) {
      return depositCount_<=5;
    }

    // @dev Function for find if premine
    function isStarted() public view returns (bool) {
      return startTime!=0 && now > startTime;
    }

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

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

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

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

            // no cheating!
            _referredBy != _customerAddress &&

            // does the referrer have at least X whole tokens?
            // i.e is the referrer a godly chad masternode
            tokenBalanceLedger_[_referredBy] >= stakingRequirement
        ) {
            // wealth redistribution
            referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus);
        } else {
            // no ref purchase
            // add the referral bonus back to the global dividends cake
            _dividends = SafeMath.add(_dividends, _referralBonus);
            _fee = _dividends * magnitude;
        }

        // we can't give people infinite ethereum
        if (tokenSupply_ > 0) {
            // add tokens to the pool
            tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);

            // take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder
            profitPerShare_ += (_dividends * magnitude / tokenSupply_);

            // calculate the amount of tokens the customer receives over his purchase
            _fee = _fee - (_fee - (_amountOfTokens * (_dividends * magnitude / tokenSupply_)));
        } else {
            // add tokens to the pool
            tokenSupply_ = _amountOfTokens;
        }

        // update circulating supply & the ledger address for the customer
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);

        // Tells the contract that the buyer doesn't deserve dividends for the tokens before they owned them;
        // really i know you think you do but you don't
        int256 _updatedPayouts = (int256) (profitPerShare_ * _amountOfTokens - _fee);
        payoutsTo_[_customerAddress] += _updatedPayouts;

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

        // Keep track
        depositCount_++;
        return _amountOfTokens;
    }

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

        return _tokensReceived;
    }

    /**
     * @dev Calculate token sell value.
     *  It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     *  Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
    function tokensToEthereum_(uint256 _tokens) internal view returns (uint256) {
        uint256 tokens_ = (_tokens + 1e18);
        uint256 _tokenSupply = (tokenSupply_ + 1e18);
        uint256 _etherReceived =
        (
            // underflow attempts BTFO
            SafeMath.sub(
                (
                    (
                        (
                            tokenPriceInitial_ + (tokenPriceIncremental_ * (_tokenSupply / 1e18))
                        ) - tokenPriceIncremental_
                    ) * (tokens_ - 1e18)
                ), (tokenPriceIncremental_ * ((tokens_ ** 2 - tokens_) / 1e18)) / 2
            )
        / 1e18);

        return _etherReceived;
    }

    /// @dev This is where all your gas goes.
    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = (x + 1) / 2;
        y = x;

        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }


}

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

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

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    /**
    * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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