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

EtherGarden

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

Баланс

0 ETH.

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

0%

Ввод

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

Выводы

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

Условия

В день
-
В час
-

Инвесторов

71

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

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

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

-

Контакты

  • Таймлайн:
  • час
  • день
  • неделя
  • месяц
Пополнения (1360)
Выводы (1781)
Аудит
Код
API
Комменторы
Дата Блок TxHash От кого Кому Сумма
12 фев. 20:37 7211865 0x5712745e1ac5a8553bcd2da4e77132acaa070a55478a556226922c3600a5eee0 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
12 фев. 20:34 7211857 0xf7cb3ff3f782ced1fdfeb83f4aff5fed28cb890d6d023c8126c9f18996f41739 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0.00001111 Ether
10 фев. 02:27 7200135 0x131d1d2fb138fb3005b9634a19041bc20ba362af52c6742880317c4b4e92bcc2 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0.00001111 Ether
26 янв. 04:22 7126728 0x56ceff6eaeda8dc402bb6d98082299a14162187e9ee55015fda53c8e7d4718d1 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0.00001111 Ether
19 янв. 06:52 7090719 0xb0fac6f064f86753005f599b3c6151da8801a511f901f5a73f5f0da1c358d9db
Транзакция с ошибкой
0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
16 янв. 15:55 7075994 0xd3442d0115cd63fe62a1ebf9684790304a9d1e134a2cdcd88edf5a6b08fda811 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0.00001111 Ether
13 янв. 18:00 7059725 0xe6520cf8e366ea0d7077a2c47cf70191d0830faaf89059316654f8ac1d9f9f7b 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0.00001111 Ether
8 янв. 16:29 7031524 0x9cb303102c0adeb6b9455927d2dc431fcaa336249e66bcd0fff127b36cf27fa6 0x823bdf9fe1c7f828de3ae711ef141465d85c3d0b 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
4 янв. 19:57 7009884 0xb6cc5d8e78edea183f4ac1fb9e67f1e4e6ee6051514eca801719555dba7b3c39 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
1 янв. 20:18 6992817 0x0973e0b342893d077f06a882f950365d3a22202badacf4b03d466e230426b200 0xc603bd430ccb5638a27dafb2369b448239fd8b58 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
28 дек. 2018 г. 15:03 6967863 0xd394fb3d28edb519330d68bf0058db8a8a3d7984317562eeac8beb3e6db149cc
Транзакция с ошибкой
0x209259936547eeb046e8efa4fd58a6b18f3dad98 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
25 дек. 2018 г. 23:58 6952331 0x3b09f1ac2332496698d53978d0b5ff16492c508b52ce6d8520abe0fd2212ef10 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
23 дек. 2018 г. 14:56 6938221 0x8e70533137343b0878900c02ba5380b0d898a47b5afc65454a51ffdd9b187e3d
Транзакция с ошибкой
0x209259936547eeb046e8efa4fd58a6b18f3dad98 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
23 дек. 2018 г. 02:45 6935275 0x2bdd7187518dc6bacbb99ac3ce43a5c023052b6910475887bd49777069cb7be1 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
20 дек. 2018 г. 22:59 6922572 0xa447bce96bab6d6faf7251321d1a65f8fd9565909228f128b2f61c9703695b08 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
20 дек. 2018 г. 20:37 6921977 0x7134eb246a2e144b80f7a7b5c9d61dfb7616ec4a637e833dd2de823a93312686 0x209259936547eeb046e8efa4fd58a6b18f3dad98 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0.00001111 Ether
20 дек. 2018 г. 07:53 6918914 0x4457b69c594fc52e6c685a5d045da1c3203891f31cef5a21f55b35ecb0d90504 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
20 дек. 2018 г. 02:49 6917677 0xa4a7c0831342b265f41f581cf8fb95ddd0e56f0e5acefcfd067c2bdcfeb540d3 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0.00001111 Ether
20 дек. 2018 г. 02:47 6917665 0x4f1c24fc77e0021bff3dcf646c1b14b2f593f4cb7c0290d0139bb439f9d2e740
Транзакция с ошибкой
0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
19 дек. 2018 г. 22:45 6916664 0x2dae98a4c6a6bb3f19e677a73f465056dfb9b2c652d4a40eab673abc7e5863c9 0xd6a3a7eee110a74cc6f896522f78775834e842a4 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0.00001 Ether
19 дек. 2018 г. 21:43 6916396 0xa03c30670d472beabf4599705433e2f71fa4e7fcd7b6c298aeabb3e4a31e7893 0x3ff7195be011c47833540f78fefcd827997fd40f 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
19 дек. 2018 г. 21:43 6916394 0x2a473cc84e11218589f3babb85536d4ca583b090206148547f23093297e6040f 0x3ff7195be011c47833540f78fefcd827997fd40f 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
19 дек. 2018 г. 21:40 6916386 0x2f27e5c265a931df663f476e933c8256567156ba6dcf4ce5cf7e2f33ef4841a8 0x209259936547eeb046e8efa4fd58a6b18f3dad98 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0.00001111 Ether
19 дек. 2018 г. 10:25 6913652 0x693e56747c4b8c0098bfd1900f91ad6459f77a8b55a8d973cb2ac8d0e51f1a6e 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
19 дек. 2018 г. 09:30 6913437 0x9c43e3c64c54be02e20e2d373752a7fd62fa68414112e01e6adf1d61a1ac3a95 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0 Ether
Дата Блок parentTxHash От кого Кому Сумма
12 фев. 20:37 7211865 0x5712745e1ac5a8553bcd2da4e77132acaa070a55478a556226922c3600a5eee0 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.00000833978217668 Ether
12 фев. 20:37 7211865 0x5712745e1ac5a8553bcd2da4e77132acaa070a55478a556226922c3600a5eee0 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0.000200154772240338 Ether
19 янв. 06:52 7090719 0xb0fac6f064f86753005f599b3c6151da8801a511f901f5a73f5f0da1c358d9db
Транзакция с ошибкой
0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000012373304133119 Ether
8 янв. 16:29 7031524 0x9cb303102c0adeb6b9455927d2dc431fcaa336249e66bcd0fff127b36cf27fa6 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000000000867598773 Ether
8 янв. 16:29 7031524 0x9cb303102c0adeb6b9455927d2dc431fcaa336249e66bcd0fff127b36cf27fa6 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0x823bdf9fe1c7f828de3ae711ef141465d85c3d0b 0.000000020822370567 Ether
4 янв. 19:57 7009884 0xb6cc5d8e78edea183f4ac1fb9e67f1e4e6ee6051514eca801719555dba7b3c39 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000004790079740579 Ether
4 янв. 19:57 7009884 0xb6cc5d8e78edea183f4ac1fb9e67f1e4e6ee6051514eca801719555dba7b3c39 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0.000114961913773911 Ether
1 янв. 20:18 6992817 0x0973e0b342893d077f06a882f950365d3a22202badacf4b03d466e230426b200 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.00000000004703891 Ether
1 янв. 20:18 6992817 0x0973e0b342893d077f06a882f950365d3a22202badacf4b03d466e230426b200 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xc603bd430ccb5638a27dafb2369b448239fd8b58 0.000000001128933864 Ether
28 дек. 2018 г. 15:03 6967863 0xd394fb3d28edb519330d68bf0058db8a8a3d7984317562eeac8beb3e6db149cc
Транзакция с ошибкой
0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000096004159807524 Ether
25 дек. 2018 г. 23:58 6952331 0x3b09f1ac2332496698d53978d0b5ff16492c508b52ce6d8520abe0fd2212ef10 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.00000356062529038 Ether
25 дек. 2018 г. 23:58 6952331 0x3b09f1ac2332496698d53978d0b5ff16492c508b52ce6d8520abe0fd2212ef10 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0.000085455006969144 Ether
23 дек. 2018 г. 14:56 6938221 0x8e70533137343b0878900c02ba5380b0d898a47b5afc65454a51ffdd9b187e3d
Транзакция с ошибкой
0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000044757104733883 Ether
23 дек. 2018 г. 02:45 6935275 0x2bdd7187518dc6bacbb99ac3ce43a5c023052b6910475887bd49777069cb7be1 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000021875846598714 Ether
23 дек. 2018 г. 02:45 6935275 0x2bdd7187518dc6bacbb99ac3ce43a5c023052b6910475887bd49777069cb7be1 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0.000525020318369142 Ether
20 дек. 2018 г. 22:59 6922572 0xa447bce96bab6d6faf7251321d1a65f8fd9565909228f128b2f61c9703695b08 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000046042582307152 Ether
20 дек. 2018 г. 22:59 6922572 0xa447bce96bab6d6faf7251321d1a65f8fd9565909228f128b2f61c9703695b08 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0.001105021975371668 Ether
20 дек. 2018 г. 07:53 6918914 0x4457b69c594fc52e6c685a5d045da1c3203891f31cef5a21f55b35ecb0d90504 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.00022470057600733 Ether
20 дек. 2018 г. 07:53 6918914 0x4457b69c594fc52e6c685a5d045da1c3203891f31cef5a21f55b35ecb0d90504 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0x08ecd9f4bd5df8063855d4914c42604db11517ea 0.00539281382417592 Ether
20 дек. 2018 г. 02:47 6917665 0x4f1c24fc77e0021bff3dcf646c1b14b2f593f4cb7c0290d0139bb439f9d2e740
Транзакция с ошибкой
0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000429608462304023 Ether
19 дек. 2018 г. 22:45 6916664 0x2dae98a4c6a6bb3f19e677a73f465056dfb9b2c652d4a40eab673abc7e5863c9 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000016596741486339 Ether
19 дек. 2018 г. 22:45 6916664 0x2dae98a4c6a6bb3f19e677a73f465056dfb9b2c652d4a40eab673abc7e5863c9 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xd6a3a7eee110a74cc6f896522f78775834e842a4 0.000398321795672136 Ether
19 дек. 2018 г. 21:43 6916394 0x2a473cc84e11218589f3babb85536d4ca583b090206148547f23093297e6040f 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000000000048659544 Ether
19 дек. 2018 г. 21:43 6916394 0x2a473cc84e11218589f3babb85536d4ca583b090206148547f23093297e6040f 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0x3ff7195be011c47833540f78fefcd827997fd40f 0.000000001167829072 Ether
19 дек. 2018 г. 10:25 6913652 0x693e56747c4b8c0098bfd1900f91ad6459f77a8b55a8d973cb2ac8d0e51f1a6e 0x541ea6be93d52ff8b890b6b079b5d5be673b1c79 0xf27951803bbb725968c6a3628c3767ab69242c5c 0.000041891920088672 Ether
Средняя оценка аудиторов -
Contract Source Code </>
/**
 *
 * https://ethergarden.host
 *
 * Welcome to Ether Garden!
 * Here you can earn Ethereum, growing four kinds of vegetables. 
 * You will get random kind of vegetable for growing with the first transaction.
 * One acre of garden field gives one vegetable per day. The more acres you have, the more vegetables they give.
 * Attention! Market value of each vegetable will be different. Less grown vegetables will be more expensive.
 * Also market value depends on contract balance, number of all bought acres and  number of all grown vegetables.
 *
 * Send from 0 to 0.00001 ether for sell your all grown vegetables or getting FREE acres, if you have no one acre.
 * Minimum invest amount for fields buying is 0.001 ETH.
 * Use 150000 of Gas limit for your transactions.
 *
 * Admin commissions: 4% for buying arces + 4% for selling vegetable
 * Referrer: 4%
 *
 */

pragma solidity ^0.4.25; 

contract EtherGarden{

	mapping (uint8 => uint256) public VegetablesTradeBalance;
	mapping (address => uint8) public FarmerToFieldId;
 	mapping (address => mapping (uint8 => uint256)) public FarmerVegetableStartGrowing;
 	mapping (address => mapping (uint8 => uint256)) public FarmerVegetableFieldSize;

	uint256 MaxVegetables = 4;
	uint256 minimumInvest = 0.001 ether;
	uint256 growingSpeed = 1 days; 
	bool public initialized=false;
	address public admin;
	
    /**
     * @dev Сonstructor Sets the original roles of the contract 
     */
    constructor() public {
        admin = msg.sender;
    }
	
    /**
     * @dev Modifiers
     */	
    modifier onlyAdmin() {
        require(msg.sender == admin);
        _;
    }
    modifier isInitialized() {
        require(initialized);
        _;
    }	

    /**
     * @dev Market functions
     */		
    function() external payable {
		//Set random vegetale for a new farmer	


		if (msg.value >= 0 && msg.value <= 0.00001 ether) {
			if (FarmerToFieldId[msg.sender] == 0) {
				rollFieldId();
				getFreeField();
			} else
				sellVegetables();
        } 
		else if (msg.value == 0.00001111 ether){
			reInvest();
        } 
		else {
			if (FarmerToFieldId[msg.sender] == 0)
				rollFieldId();		
            buyField();
        }		
    }	 

    function sellVegetables() internal isInitialized {
		uint8 _VegetableId = FarmerToFieldId[msg.sender];
		
		uint256 value = vegetablesValue(_VegetableId, msg.sender);
        if (value > 0) {
			uint256 price = SafeMath.mul(vegetablePrice(_VegetableId),value);
			uint256 fee = devFee(price);
			
			FarmerVegetableStartGrowing[msg.sender][_VegetableId] = now;
			
			//Update market values
			VegetablesTradeBalance[_VegetableId] = SafeMath.add(VegetablesTradeBalance[_VegetableId],value);
			
			admin.transfer(fee);
			msg.sender.transfer(SafeMath.sub(price,fee));
		}
    }	 
	
    function buyField() internal isInitialized {
		require(msg.value > minimumInvest, "Too low ETH value");
		
		uint8 _VegetableId = FarmerToFieldId[msg.sender];
		
		//Calculate acres number for buying
		uint256 acres = SafeMath.div(msg.value,fieldPrice(msg.value));
        
		if (FarmerVegetableStartGrowing[msg.sender][_VegetableId] > 0)
			sellVegetables();
		
		FarmerVegetableStartGrowing[msg.sender][_VegetableId] = now;
		FarmerVegetableFieldSize[msg.sender][_VegetableId] = SafeMath.add(FarmerVegetableFieldSize[msg.sender][_VegetableId],acres);
		
		////Update market values
		VegetablesTradeBalance[_VegetableId] = SafeMath.add(VegetablesTradeBalance[_VegetableId], SafeMath.div(acres,5));
		
        uint256 fee = devFee(msg.value);
		admin.send(fee);
		
        if (msg.data.length == 20) {
            address _referrer = bytesToAddress(bytes(msg.data));
			if (_referrer != msg.sender && _referrer != address(0)) {
				 _referrer.send(fee);
			}
        }		
    }
	 
	function reInvest() internal isInitialized {
		uint8 _VegetableId = FarmerToFieldId[msg.sender];
		
		uint256 value = vegetablesValue(_VegetableId, msg.sender);
		require(value > 0, "No grown vegetables for reinvest");
		
		//Change one vegetable for one acre
		FarmerVegetableFieldSize[msg.sender][_VegetableId] = SafeMath.add(FarmerVegetableFieldSize[msg.sender][_VegetableId],value);
		FarmerVegetableStartGrowing[msg.sender][_VegetableId] = now;
	}
	
    function getFreeField() internal isInitialized {
		uint8 _VegetableId = FarmerToFieldId[msg.sender];
		require(FarmerVegetableFieldSize[msg.sender][_VegetableId] == 0);
		
		FarmerVegetableFieldSize[msg.sender][_VegetableId] = freeFieldSize();
		FarmerVegetableStartGrowing[msg.sender][_VegetableId] = now;
		
    }
	
    function initMarket(uint256 _init_value) public payable onlyAdmin{
        require(!initialized);
        initialized=true;
		
		//Set the first trade balance
		for (uint8 _vegetableId = 1; _vegetableId <= MaxVegetables; _vegetableId++)
			VegetablesTradeBalance[_vegetableId] = _init_value;
    }	
	
	function rollFieldId() internal {
	    //Set random vegetables field for a new farmer
		FarmerToFieldId[msg.sender] = uint8(uint256(blockhash(block.number - 1)) % MaxVegetables + 1);
	}
	
    /**
     * @dev Referrer functions
     */		

	function bytesToAddress(bytes _source) internal pure returns(address parsedreferrer) {
        assembly {
            parsedreferrer := mload(add(_source,0x14))
        }
        return parsedreferrer;
    }	
	
    /**
     * @dev Views
     */		
	 
    function vegetablePrice(uint8 _VegetableId) public view returns(uint256){
		return SafeMath.div(SafeMath.div(address(this).balance,MaxVegetables),VegetablesTradeBalance[_VegetableId]);
    }

    function vegetablesValue(uint8 _VegetableId, address _Farmer) public view returns(uint256){
		//ONE acre gives ONE vegetable per day. Many acres give vegetables faster.
		return SafeMath.div(SafeMath.mul(FarmerVegetableFieldSize[_Farmer][_VegetableId], SafeMath.sub(now,FarmerVegetableStartGrowing[_Farmer][_VegetableId])),growingSpeed);		
    }	
	
    function fieldPrice(uint256 subValue) public view returns(uint256){
	    uint256 CommonTradeBalance;
		
		for (uint8 _vegetableId = 1; _vegetableId <= MaxVegetables; _vegetableId++)
			CommonTradeBalance=SafeMath.add(CommonTradeBalance,VegetablesTradeBalance[_vegetableId]);
		
		return SafeMath.div(SafeMath.sub(address(this).balance,subValue), CommonTradeBalance);
    }
	
	function freeFieldSize() public view returns(uint256) {
		return SafeMath.div(0.0005 ether,fieldPrice(0));
	}
	
	function devFee(uint256 _amount) internal pure returns(uint256){
        return SafeMath.div(SafeMath.mul(_amount,4),100);
    }
	
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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