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

SmartHash PRO

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

Баланс

0.0003 ETH.

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

0%

Ввод

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

Выводы

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

Условия

В день
-
В час
-

Инвесторов

119

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

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

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

9

Контакты

  • Таймлайн:
  • час
  • день
  • неделя
  • месяц
Пополнения (454)
Выводы (428)
Аудит
Код
API
Комменторы
Дата Блок TxHash От кого Кому Сумма
4 янв. 00:07 7005343 0x4e2eb984a1e3c0d452edac9a184aba83dd3943bebb6652b3490230754c330d8c
Транзакция с ошибкой
0x2299cf30f020fb1478f58686c6a48c5210491e25 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
3 янв. 21:55 7004836 0xeb27ddd57d79e7418d7b04b2d49418491e57859c4d1776fc6d8d6f2ccf364314
Транзакция с ошибкой
0xdd3c00c2a34c6180b3633e99f4c16983aa5f0949 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
2 янв. 22:17 6999273 0xf79c7586b1d3a282f02856a7a81c3ef9e207812199a75cccf64422616e5e7e33
Транзакция с ошибкой
0x558f5d93ef5317e9e80291e6ce1fcafd9f7405c1 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
19 дек. 2018 г. 08:24 6913207 0x85f4082a9a9468ab8cb1fdebfc2dca3f17526b5ba96b4016e093bb796afec7be
Транзакция с ошибкой
0xa98e8147f73dacc79b6dc4197d22b52b1b66f35f 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
15 дек. 2018 г. 02:10 6887746 0xf9653dfa4161b3faa72c3dfbccdb532ca35a9865de7725a034808bbf68774808
Транзакция с ошибкой
0x17d62f15e1db95b3707176989e14e1164d4f8de7 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
14 дек. 2018 г. 15:33 6885077 0x836d50374be73492660e2e940821b477e9742ea5c4d06e5fde720a13b9e43a39
Транзакция с ошибкой
0x17d62f15e1db95b3707176989e14e1164d4f8de7 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
14 дек. 2018 г. 09:36 6883592 0xb47e8b6ff4e1e5efc773267a843f9acc780a92f547f25400631f423b813d0cfb
Транзакция с ошибкой
0x17d62f15e1db95b3707176989e14e1164d4f8de7 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
13 дек. 2018 г. 15:09 6878879 0xd75fde180b9da37a77efd6d0728effeb2e0f44d4be2bbd1fa9efa5c44642d205
Транзакция с ошибкой
0xc935ead1a0939f9fd667005289eb56cf7b7d6f15 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
10 дек. 2018 г. 23:39 6862909 0xd98c950e8cb1431c80ed9094282eb835a50c73537d4081f3e6e386c54eacbff4
Транзакция с ошибкой
0x2d2967a27ba50fdc5a57c3a8e114b97a3b2de468 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
7 дек. 2018 г. 08:33 6840868 0xc49217221a61f8e44e42a3e2eb71a0666ac07ec494107dafd4a2dca9a58ea268
Транзакция с ошибкой
0xc239ea9bca5760ca4dbd475cba220624eda7982d 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
7 дек. 2018 г. 08:31 6840861 0x77e115f69462c57d2844a14b4c21d64fbcd020dc61855aa242b0541b2e38fefc
Транзакция с ошибкой
0xc239ea9bca5760ca4dbd475cba220624eda7982d 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
4 дек. 2018 г. 14:28 6824276 0xa5c2aeebf18a777e0efd0e765cdca39a12a56be6f5e8659114db98da875f3d93 0xfdd662a35a206a23fd16b19e484cebaaf2c8eb87 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
4 дек. 2018 г. 02:05 6821177 0x96d1de49076dbb5553db163be91bcc10ff9f095f483759a3d6e68ce42309532b
Транзакция с ошибкой
0x76429570bd320b0a17b11bf7c596df3ff6c99920 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
3 дек. 2018 г. 21:42 6820012 0xb42eadb41ef68e6424f96a44386a94df78bf7a8b32f8a751b7310a3f2e1a6907 0xfdd662a35a206a23fd16b19e484cebaaf2c8eb87 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
3 дек. 2018 г. 07:41 6816527 0xbebd61d0fef2051ed05915493de6c78dfc134d1401cea64d61aeded19907d882 0xfdd662a35a206a23fd16b19e484cebaaf2c8eb87 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
2 дек. 2018 г. 11:54 6811532 0x5ae1a1a436bf892f1c0183bbbe9657748066614a82ff47a107ea98149f12129c 0xfdd662a35a206a23fd16b19e484cebaaf2c8eb87 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
2 дек. 2018 г. 10:24 6811156 0xec155d88e1374d50723bf050b6266f676d8e9023bd7a8386cac5edaf4d9e2b21 0xa98e8147f73dacc79b6dc4197d22b52b1b66f35f 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
2 дек. 2018 г. 10:15 6811120 0x450b9ff60cd4eff8066e85f7e9809f9adbe2b9bde5d127c7b2167bfdb83783e0 0xa98e8147f73dacc79b6dc4197d22b52b1b66f35f 0xac99580f92eb7a91daff30de133f93ad82b5070a 0.04 Ether
2 дек. 2018 г. 10:14 6811117 0x41eed6ccb3e6140f071d6434b9c8efd382d34c11cafb2641d794a83d9ce16058
Транзакция с ошибкой
0xa98e8147f73dacc79b6dc4197d22b52b1b66f35f 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
30 ноя. 2018 г. 04:32 6797579 0xb9aa1d9ca474fd0bbde548eb2a2021b7df330a61df0ffca7dbd71676f9cf5861
Транзакция с ошибкой
0xe756228bed012449c4128a14b78800f5b71b5361 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
30 ноя. 2018 г. 04:21 6797533 0xaada6362eef4c3c8a3768fd64240d6ff6dd4b301b978227d411539fe439ae81c
Транзакция с ошибкой
0xe756228bed012449c4128a14b78800f5b71b5361 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
28 ноя. 2018 г. 18:10 6788844 0x35d646f5564a43274e2bc2bd75a84b7ff59c24eb016887a624dd790aa4803f3d
Транзакция с ошибкой
0x2d2967a27ba50fdc5a57c3a8e114b97a3b2de468 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
28 ноя. 2018 г. 00:31 6784421 0xb384d0cbfe69456ada9bb4e961e1796c6d7d193296e34f842aa131bf6ec4ff50
Транзакция с ошибкой
0x2d2967a27ba50fdc5a57c3a8e114b97a3b2de468 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
27 ноя. 2018 г. 12:36 6781450 0x74aaa03513dfb32093b2190bdc00ab4ea9b9d56cf2be417d07e7d92d6fe06329
Транзакция с ошибкой
0x3cf3a96b3055944d1c129da8b5d95f7c60e6975f 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
27 ноя. 2018 г. 06:30 6779968 0x3f3ac8c1b29181927613dee9292908bdf71b6255c570cda457460ef9ede3156f
Транзакция с ошибкой
0x59384d4e49171d7eeb7ea7a962df5376b35283e8 0xac99580f92eb7a91daff30de133f93ad82b5070a 0 Ether
Дата Блок parentTxHash От кого Кому Сумма
4 дек. 2018 г. 14:28 6824276 0xa5c2aeebf18a777e0efd0e765cdca39a12a56be6f5e8659114db98da875f3d93 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xfdd662a35a206a23fd16b19e484cebaaf2c8eb87 0.001536333333333332 Ether
3 дек. 2018 г. 21:42 6820012 0xb42eadb41ef68e6424f96a44386a94df78bf7a8b32f8a751b7310a3f2e1a6907 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xfdd662a35a206a23fd16b19e484cebaaf2c8eb87 0.001284835648148147 Ether
3 дек. 2018 г. 07:41 6816527 0xbebd61d0fef2051ed05915493de6c78dfc134d1401cea64d61aeded19907d882 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xfdd662a35a206a23fd16b19e484cebaaf2c8eb87 0.001813293981481481 Ether
2 дек. 2018 г. 11:54 6811532 0x5ae1a1a436bf892f1c0183bbbe9657748066614a82ff47a107ea98149f12129c 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xfdd662a35a206a23fd16b19e484cebaaf2c8eb87 0.01833039236111111 Ether
2 дек. 2018 г. 10:24 6811156 0xec155d88e1374d50723bf050b6266f676d8e9023bd7a8386cac5edaf4d9e2b21 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xa98e8147f73dacc79b6dc4197d22b52b1b66f35f 0.015017251851851852 Ether
2 дек. 2018 г. 10:15 6811120 0x450b9ff60cd4eff8066e85f7e9809f9adbe2b9bde5d127c7b2167bfdb83783e0 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xd0396aaecb5547776852ab8682ba72e1209b536d 0.002 Ether
27 ноя. 2018 г. 04:42 6779498 0xba4d34b1e494fd5b2cada5787fb25a886953519d8bfc34cd763825859a8af19d 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x220746855b9fcf283dbe99f21d094d4fdda57111 0.000249111111111111 Ether
26 ноя. 2018 г. 22:36 6777960 0xf6af1df2ab605b696195b06cb45febb1da66a70681757f048b20604248814818 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xfdd662a35a206a23fd16b19e484cebaaf2c8eb87 0.001493300925925925 Ether
26 ноя. 2018 г. 21:14 6777593 0x9a2c666df366716d6b6be20361a581fd42328beb89717f0c57137f4bf57962d2 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x220746855b9fcf283dbe99f21d094d4fdda57111 0.00041562037037037 Ether
26 ноя. 2018 г. 20:25 6777394 0x809de48fa3b38d06b0dfa7567c31b59b58c8fae71077fd572e94be13206e469a 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x22a05e43d11066752bd3c9711b4b1fdccb52a712 0.004303 Ether
26 ноя. 2018 г. 19:38 6777183 0xad3bdd82ebba7a73670513d78bf10b5a35aacbb7d574c0b9e103b67ab522d739 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x981e5011e83349e8249f2466d6288b1666b81e26 0.000370090972222221 Ether
26 ноя. 2018 г. 19:17 6777100 0x45446ce9677088e4a7e0f43108464b51d0d7faf04f2adb418cc3a536ad81da6f 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xf23170869c409bc435416e59179192070174b37b 0.000807033333333333 Ether
26 ноя. 2018 г. 19:05 6777047 0x30e26564a007a76f81cba839f6d0bc179b85f82b15cccc91212e77f96e0f03a6 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x081e6443da7fc46e71f00f70369084ca3eea15f8 0.001892037037037037 Ether
26 ноя. 2018 г. 17:29 6776626 0xc9ebbd60bca9e525c8b419e6da561cd132ab81d0c8ed5bddfea937fb7cf6068e 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xd0396aaecb5547776852ab8682ba72e1209b536d 0.0005 Ether
26 ноя. 2018 г. 13:50 6775747 0xe145a71f5a67d3b47e816724ccf36a124987eb86d1c680cf1f536f8b6033bee8 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x728dd36712f2b64fed3af8a3751fd9eacce4cfe0 0.000642905092592592 Ether
26 ноя. 2018 г. 10:02 6774823 0x4dbe0e6e063f5b61b4a3dbca034221554763aa6fce84def3c2676dab3f77df7d 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x91a4cf467663478a9119685f615ccca56b6a8bc3 0.003033449074074074 Ether
26 ноя. 2018 г. 08:46 6774472 0xefe3bf80c5d271263be8495beb726536989621164eaa8de2f0d55a164fc889f8 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x220746855b9fcf283dbe99f21d094d4fdda57111 0.000613796296296296 Ether
26 ноя. 2018 г. 08:16 6774326 0x281bcfd68d4c203bb1a394449027e0387dfbf57681f7963a215b1d25c41ecc55 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x36e0cab88e0a3cd7d62b85b36c9b6b2db8a06e16 0.089226958125 Ether
26 ноя. 2018 г. 08:16 6774323 0x6ca0ffd54f5dc49d93386abb86af173e049e7e234afc103a058c261448230f94 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xd0396aaecb5547776852ab8682ba72e1209b536d 0.0015 Ether
26 ноя. 2018 г. 07:58 6774247 0x56a42a92f3c6c37ee0db0756eb4b76958039f322444e0de149a154764f067797 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x31feab5c6e76f159bbe2f93fde4a59200813679c 0.013887962962962961 Ether
26 ноя. 2018 г. 07:48 6774210 0x1099db62c6f94b70f3b260afabcace23ef6fb2e43806aebb63e6832a1f111a7b 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x7f8b1c956fb0789d0bf3775a882296f02f717f2d 0.002423458333333333 Ether
26 ноя. 2018 г. 07:47 6774205 0x24aca2366b35cbcd6bda9bc4db2d3aae66cb04f5da890c1486a7fac8e4540136 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x738781de6204da362a0531ea1209e23cec85ba8f 0.000391689814814814 Ether
26 ноя. 2018 г. 07:44 6774199 0x22c31a775a22289a741cb48030b6a8c2d5b1243d3d7b4ddf11c651e1e97a3750 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x8be1fef5692a4f1aca527e748c88d58a06f60e51 0.03917361111111111 Ether
26 ноя. 2018 г. 07:43 6774196 0x34e49eed5464873c987eb5b7932cb062f11f0497c1eea5acd859c7ca9526f501 0xac99580f92eb7a91daff30de133f93ad82b5070a 0x081e6443da7fc46e71f00f70369084ca3eea15f8 0.03341701388888889 Ether
26 ноя. 2018 г. 07:40 6774180 0x8d85cc1e3134a5c78f98de0066d48f98d15928c178da7a65933171c4eca997a1 0xac99580f92eb7a91daff30de133f93ad82b5070a 0xd5a4fbea8f05f6bd0fd278166177cb0bd8bf7f34 0.02998277777777778 Ether
Средняя оценка аудиторов 9
Contract Source Code </>
pragma solidity ^0.4.25;

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

    /**
    * @dev Multiplies two numbers, reverts on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b);

        return c;
    }

    /**
    * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0); // Solidity only automatically asserts 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 Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

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

        return c;
    }
}

contract SmartHash {
    using SafeMath for uint256;

    uint256 constant public DEPOSIT_MINIMUM_AMOUNT = 10 finney;
    uint256 constant public MAXIMUM_DEPOSITS_PER_USER = 50;

    uint256 constant public MINIMUM_DAILY_PERCENT = 20;
    uint256 constant public REFERRAL_PERCENT = 50;
    uint256 constant public MARKETING_PERCENT = 50;
    uint256 constant public MAXIMUM_RETURN_PERCENT = 1500;
    uint256 constant public PERCENTS_DIVIDER = 1000;

    uint256 constant public BALANCE_STEP = 100 ether;
    uint256 constant public TIME_STEP = 1 days;
    uint256 constant public STEP_MULTIPLIER = 2;

    address constant public MARKETING_ADDRESS = 0xd0396aAEcb5547776852aB8682Ba72E1209b536d;

    uint256 public usersCount = 0;
    uint256 public depositsCount = 0;
    uint256 public totalDeposited = 0;
    uint256 public totalWithdrawn = 0;

    struct User {
        uint256 deposited;
        uint256 withdrawn;
        uint256 timestamp;
        uint256 depositsCount;
        uint256[] deposits;
    }

    struct Deposit {
        uint256 amount;
        uint256 payed;
        uint256 timestamp;
    }

    mapping (address => User) public users;
    mapping (uint256 => Deposit) public deposits;

    function() public payable {
        if (msg.value >= DEPOSIT_MINIMUM_AMOUNT) {
            makeDeposit();
        } else {
            payDividends();
        }
    }

    function createUser() private {
        users[msg.sender] = User({
            deposited : 0,
            withdrawn : 0,
            timestamp : now,
            depositsCount : 0,
            deposits : new uint256[](0)
        });

        usersCount++;
    }

    function makeDeposit() private {
        if (users[msg.sender].deposited == 0) {
            createUser();
        }

        User storage user = users[msg.sender];

        require(user.depositsCount < MAXIMUM_DEPOSITS_PER_USER);

        Deposit memory deposit = Deposit({
            amount : msg.value,
            payed : 0,
            timestamp : now
        });

        deposits[depositsCount] = deposit;
        user.deposits.push(depositsCount);

        user.deposited = user.deposited.add(msg.value);
        totalDeposited = totalDeposited.add(msg.value);

        user.depositsCount++;
        depositsCount++;

        uint256 marketingAmount = msg.value.mul(MARKETING_PERCENT).div(PERCENTS_DIVIDER);
        MARKETING_ADDRESS.send(marketingAmount);

        address refAddress = bytesToAddress(msg.data);
        if (refAddress != address(0) && refAddress != msg.sender) {
            uint256 refAmount = msg.value.mul(REFERRAL_PERCENT).div(PERCENTS_DIVIDER);
            refAddress.send(refAmount);
        }
    }

    function payDividends() private {
        User storage user = users[msg.sender];

        uint256 userMaximumReturn = user.deposited.mul(MAXIMUM_RETURN_PERCENT).div(PERCENTS_DIVIDER);

        require(user.deposited > 0 && user.withdrawn < userMaximumReturn);

        uint256 userDividends = 0;

        for (uint256 i = 0; i < user.depositsCount; i++) {
            if (deposits[user.deposits[i]].payed < deposits[user.deposits[i]].amount.mul(MAXIMUM_RETURN_PERCENT).div(PERCENTS_DIVIDER)) {
                uint256 depositId = user.deposits[i];

                Deposit storage deposit = deposits[depositId];

                uint256 depositDividends = getDepositDividends(depositId, msg.sender);
                userDividends = userDividends.add(depositDividends);

                deposits[depositId].payed = deposit.payed.add(depositDividends);
                deposits[depositId].timestamp = now;
            }
        }

        msg.sender.transfer(userDividends.add(msg.value));

        users[msg.sender].timestamp = now;

        users[msg.sender].withdrawn = user.withdrawn.add(userDividends);
        totalWithdrawn = totalWithdrawn.add(userDividends);
    }

    function getDepositDividends(uint256 depositId, address userAddress) private view returns (uint256) {
        uint256 userActualPercent = getUserActualPercent(userAddress);

        Deposit storage deposit = deposits[depositId];

        uint256 timeDiff = now.sub(deposit.timestamp);
        uint256 depositDividends = deposit.amount.mul(userActualPercent).div(PERCENTS_DIVIDER).mul(timeDiff).div(TIME_STEP);

        uint256 depositMaximumReturn = deposit.amount.mul(MAXIMUM_RETURN_PERCENT).div(PERCENTS_DIVIDER);

        if (depositDividends.add(deposit.payed) > depositMaximumReturn) {
            depositDividends = depositMaximumReturn.sub(deposit.payed);
        }

        return depositDividends;
    }

    function getContractActualPercent() public view returns (uint256) {
        uint256 contractBalance = address(this).balance;
        uint256 balanceAddPercent = contractBalance.div(BALANCE_STEP).mul(STEP_MULTIPLIER);

        return MINIMUM_DAILY_PERCENT.add(balanceAddPercent);
    }

    function getUserActualPercent(address userAddress) public view returns (uint256) {
        uint256 contractActualPercent = getContractActualPercent();

        User storage user = users[userAddress];

        uint256 userMaximumReturn = user.deposited.mul(MAXIMUM_RETURN_PERCENT).div(PERCENTS_DIVIDER);

        if (user.deposited > 0 && user.withdrawn < userMaximumReturn) {
            uint256 timeDiff = now.sub(user.timestamp);
            uint256 userAddPercent = timeDiff.div(TIME_STEP).mul(STEP_MULTIPLIER);
        }

        return contractActualPercent.add(userAddPercent);
    }

    function getUserDividends(address userAddress) public view returns (uint256) {
        User storage user = users[userAddress];

        uint256 userDividends = 0;

        for (uint256 i = 0; i < user.depositsCount; i++) {
            if (deposits[user.deposits[i]].payed < deposits[user.deposits[i]].amount.mul(MAXIMUM_RETURN_PERCENT).div(PERCENTS_DIVIDER)) {
                userDividends = userDividends.add(getDepositDividends(user.deposits[i], userAddress));
            }
        }

        return userDividends;
    }

    function getUserDeposits(address userAddress) public view returns (uint256[]){
        return users[userAddress].deposits;
    }

    function bytesToAddress(bytes data) private pure returns (address addr) {
        assembly {
            addr := mload(add(data, 20))
        }
    }
}
Документация
Идейные соображения высшего порядка, а также дальнейшее развитие различных форм деятельности представляет собой интересный эксперимент проверки модели развития. Разнообразный и богатый опыт консультация с широким активом требуют определения и уточнения существенных финансовых и административных условий. Задача организации, в особенности же новая модель организационной деятельности требуют от нас анализа системы обучения кадров, соответствует насущным потребностям. Повседневная практика показывает, что дальнейшее развитие различных форм деятельности обеспечивает широкому кругу (специалистов) участие в формировании новых предложений. Разнообразный и богатый опыт дальнейшее развитие различных форм деятельности влечет за собой процесс внедрения и модернизации новых предложений.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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