Sponsored:   LH-CRYPTO - 200 instruments (BTC, EUR, GOLD, OIL, SHARES). Leverage up to 1:500. OPEN ACCOUNT
 Latest 25 transactions from a total of 83951 transactions
(+3 PendingTxns)

TxHash Age From To Value [TxFee]
0x432993683eb39c28192e2f0111f6b2353c195f92daf6d9f8d8c43830bcbd4254(pending)0x1b4d7281003eb2b70cbb3ea2c0cd6b3fc9006f32  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xf640c8c87e7971557c9fe9f30a806df2299518bf419527c2cefc18d741ea8a2f(pending)0x18f0f095a5dac83655ceb70d36f43073c5fc6fb4  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x59116804d7a6107042b4815905cb70df8ef29982a52a22f53c0581d81efc2a95(pending)0x18f0f095a5dac83655ceb70d36f43073c5fc6fb4  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x1d1f36ae7eaa345c176219b7e5249e8ea83fdf966a8d05574c812887cf1d865d39 mins ago0x45cca4f3fd3dada5a679cb121112af9203cc4688  IN   333ETH_10 Ether0.000065967
0x9f2e9696de07a2c82de8bd2d16df7227f8491ca5b348cbcb2a204b4c56a124e71 hr 4 mins ago0xd8cdacc0e5783b9326f3a6a4a1e82ebd7d6e9ae4  IN   333ETH_10 Ether0.000109945
0x3599a1164f3ef4e1ab1cc00f7dfbc00f2b769b048a1169d0cd2589a0555f9fdd4 hrs 25 mins ago0x8d70f5dfbb83692067fce84360d1e9d5448d4e51  IN   333ETH_10 Ether0.000373813
0x2c4f608f9162ad50a73be1f2eef486cf58f0f674519f02b9625fdd9693c120c36 hrs 39 mins ago0x2a70fe9a0759a0fd04a222aefd2d8453da129871  IN   333ETH_10 Ether0.000087956
0xbee73d3d56187ccf1a2e2578ee0759e5cbe9a12eb82a93b6ab6984e388d631708 hrs 44 mins ago0x32b4f7446e2a5d9132a61ea78aaef943859e052f  IN   333ETH_10 Ether0.000109945
0xb5648add25c1b75340e80a28644e2e921c3342b9f0bd288809e28e25591ba3d322 hrs 45 mins ago0x7973831d3056bfd3f0c20fdebf40fb9d9ac8119a  IN   333ETH_10 Ether0.000131934
0x4fd9a7d90112195ab7a0c02d39f465be8677a6a4d2017be0fd8b139e17b2c6581 day 2 hrs ago0x2e5ad834c6e9cdfccc03fd23a9e56de5a9f40435  IN   333ETH_10 Ether0.000197901
0x3d97c40e8213af1f71bca52a8e318ebfce88ba581b4e2c0fccd36cdffee15f331 day 6 hrs ago0xdc3dda982c51a72239d459e063a40cd3f8c3af58  IN   333ETH_10 Ether0.000901549
0xe34c1c9a88a1519b11b1f093889161bc3c0ab0d9d6bbb7ddebdabf1360decc4a1 day 6 hrs ago0xc7fcad2ad400299a7690d5aa6d7295f9ddb7fc33  IN   333ETH_10 Ether0.000087956
0x7a02387b09d703c31da74154b13c66eead3d5586df42101ac2661ef9588938ba1 day 17 hrs ago0x8271e921539acbfd12f2ceba37b81fdfa29e8534  IN   333ETH_10 Ether0.000901549
0xd0381e7e886257b9be6482a4483a523ee1086c59ce496a98f0449f71bf827a231 day 21 hrs ago0x18e3c1ac5dfa88442784492d3647a887a870b570  IN   333ETH_10 Ether0.00109945
0xa243d0ebc626c9800db19d777836b92baa3643091b89d80c6ca288c68e0c37a51 day 23 hrs ago0xc1329ec6ec25a249cdaff28db65815a4078efee3  IN   333ETH_10 Ether0.000153923
0x655dc0abfc0a5d6ddc80e0615ec6dc3156a98f0fc05d78d776616185b0ea553f2 days 7 hrs ago0xc7806dd6249b9e755702f85d8c00c44ecd88c5d2  IN   333ETH_10 Ether0.000087956
0x19ef38b30a0ad6922440550bb9a5564dfa8e204914e9a212ca15b8c8027ffe282 days 7 hrs ago0x1db837451eedab5ad0f7b9cdb1ebf1d531f94499  IN   333ETH_10 Ether0.000109945
0x83a8774580c68a6805d6dfed58196522e577dc44de7e55c4e177f0783f7713a72 days 7 hrs ago0x53420ea95a29995ece5db8e46f8338ab17ef0662  IN   333ETH_10 Ether0.000131934
0x81160cbe8d18adf7182e4c4006b3db22f985cb4c86ce452a28ffb2d03c891bc92 days 18 hrs ago0xb60b3e2c704042eb8d9db730be43ae61c1846a86  IN   333ETH_10 Ether0.000087956
0x7812269bbdc07217b8b81a013ac42f39823d83d7cf057c0792a3dced91b6fab92 days 21 hrs ago0x48feadcba6cbbe24868fff5151eb917f9d036550  IN   333ETH_10 Ether0.000153923
0x62e82b1d0c1f35f75a0d8f5c76da2135f048746a9f32d6efd30bdad9584f3c162 days 23 hrs ago0xd6487eb436f2b3a8c04e08a75ed29a40c617f725  IN   333ETH_10 Ether0.00021989
0x2355344148e993d56c5829a5896a4503434c63bc9b3a5331449c948b4fa1e6ef3 days 1 hr ago0x4f116cda969883a0baecd83fa820512af7bef74f  IN   333ETH_10 Ether0.000153923
0xe08163a3b0d61a972074c9eea039427aebed547addad0d1cc7d2dfbfc24d2e933 days 1 hr ago0x9903992bfb8688b908f050809156ca8b87b52b8e  IN   333ETH_10 Ether0.000153923
0x9b374a24c0a0d63e16b0fcab5ee9ad9d21a19860115e33fa5a354ea5a284d3fa3 days 2 hrs ago0x091fce72f74e479bbd3b6e7f49ab15df1fcf999a  IN   333ETH_10 Ether0.000175912
0xc072798145e16fc25a3629b2ea33487fb1619329b00920da5bc4f49c07227a503 days 3 hrs ago0xfb20edbf046e41dfe71901481034b92f7f172293  IN   333ETH_10 Ether0.000087956
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0xb464a80ef00cc6107ffabcbf2d16469185472447f7e7119b26ea7697e1dbe3b166954764 days 8 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0xb464a80ef00cc6107ffabcbf2d16469185472447f7e7119b26ea7697e1dbe3b166954764 days 8 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0x7ee32c720d099f1ae8a0aab96df93d79145df8ed5811b696a6a70647b0026d4c66623789 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0014 Ether
0x7ee32c720d099f1ae8a0aab96df93d79145df8ed5811b696a6a70647b0026d4c66623789 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.002 Ether
0x35bda08ab5ea600fe74748ef2c1ef84fae764e5a63f4f0dc764e7001573db709665671110 days 16 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.000912675637586943 Ether
0x35bda08ab5ea600fe74748ef2c1ef84fae764e5a63f4f0dc764e7001573db709665671110 days 16 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001303822339409919 Ether
0x39bfd992f26b457d289dae9b0ce4a36367f8877b4dd9c702a7032a3adf2c8b6e662043516 days 15 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0x39bfd992f26b457d289dae9b0ce4a36367f8877b4dd9c702a7032a3adf2c8b6e662043516 days 15 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0x2a15645168936adcf655d47e8d2efefd639be54faad2ee4e5feee5df646c815c662041616 days 15 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0119 Ether
0x2a15645168936adcf655d47e8d2efefd639be54faad2ee4e5feee5df646c815c662041616 days 15 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.017 Ether
0x5d8c0928ceb2d0ae7d125b957286ed8f740ea6b8ecebb0011ef7051c12a6b613662038816 days 15 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0616 Ether
0x5d8c0928ceb2d0ae7d125b957286ed8f740ea6b8ecebb0011ef7051c12a6b613662038816 days 15 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.088 Ether
0x28b07be4bf1e12e70d287f0e95491c1761b10219487438b05173c512be5dfe26661851816 days 23 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0014 Ether
0x28b07be4bf1e12e70d287f0e95491c1761b10219487438b05173c512be5dfe26661851816 days 23 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.002 Ether
0x4c4055dec8dfc7c6d62d14ecdb5ad7285284458d41e4fb5b91ce5eb66f38f496661851416 days 23 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0021 Ether
0x4c4055dec8dfc7c6d62d14ecdb5ad7285284458d41e4fb5b91ce5eb66f38f496661851416 days 23 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.003 Ether
0xa23077150e6abdc5f380d803ef61f6dcac206792835a8fef5f024ee607aee4e1661017318 days 7 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0021 Ether
0xa23077150e6abdc5f380d803ef61f6dcac206792835a8fef5f024ee607aee4e1661017318 days 7 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.003 Ether
0x05c83a5567fb83d2d9d3bfd4ec80724b270483add5836f302fda05b6691e8cc2658083823 days 2 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0028 Ether
0x05c83a5567fb83d2d9d3bfd4ec80724b270483add5836f302fda05b6691e8cc2658083823 days 2 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.004 Ether
0x7901a9105836033641810508a9e24beeb397e6d05bc0df583f532042a2c3ae1b658063523 days 3 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0x7901a9105836033641810508a9e24beeb397e6d05bc0df583f532042a2c3ae1b658063523 days 3 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0x593daeaf11502cc5cefda81db12591a4c64e147ebe69f5dc68795ea816fd32ce653418130 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c71  Contract Creation0 Ether
0xaf28a1117f715c348d60408e099fe66283777355143045333e0c782b47ac68fb653418130 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c71  Contract Creation0 Ether
0xa452ec9d60f6cb4607a0804e5700e81aacf834e8e126f7d4d88d332ae4cd8bb5653417930 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c71  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: Revolution
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.23;

/**
*
* ETH CRYPTOCURRENCY DISTRIBUTION PROJECT
* Web              - https://333eth.io
* Twitter          - https://twitter.com/333eth_io
* Telegram_channel - https://t.me/Ethereum333
* EN  Telegram_chat: https://t.me/Ethereum333_chat_en
* RU  Telegram_chat: https://t.me/Ethereum333_chat_ru
* KOR Telegram_chat: https://t.me/Ethereum333_chat_kor
* Email:             mailto:support(at sign)333eth.io
* 
*  - GAIN 3,33% PER 24 HOURS (every 5900 blocks)
*  - Life-long payments
*  - The revolutionary reliability
*  - Minimal contribution 0.01 eth
*  - Currency and payment - ETH
*  - Contribution allocation schemes:
*    -- 83% payments
*    -- 17% Marketing + Operating Expenses
*
*   ---About the Project
*  Blockchain-enabled smart contracts have opened a new era of trustless relationships without 
*  intermediaries. This technology opens incredible financial possibilities. Our automated investment 
*  distribution model is written into a smart contract, uploaded to the Ethereum blockchain and can be 
*  freely accessed online. In order to insure our investors' complete security, full control over the 
*  project has been transferred from the organizers to the smart contract: nobody can influence the 
*  system's permanent autonomous functioning.
* 
* ---How to use:
*  1. Send from ETH wallet to the smart contract address 0x311f71389e3DE68f7B2097Ad02c6aD7B2dDE4C71
*     any amount from 0.01 ETH.
*  2. Verify your transaction in the history of your application or etherscan.io, specifying the address 
*     of your wallet.
*  3a. Claim your profit by sending 0 ether transaction (every day, every week, i don't care unless you're 
*      spending too much on GAS)
*  OR
*  3b. For reinvest, you need to first remove the accumulated percentage of charges (by sending 0 ether 
*      transaction), and only after that, deposit the amount that you want to reinvest.
*  
* RECOMMENDED GAS LIMIT: 200000
* RECOMMENDED GAS PRICE: https://ethgasstation.info/
* You can check the payments on the etherscan.io site, in the "Internal Txns" tab of your wallet.
*
* ---It is not allowed to transfer from exchanges, only from your personal ETH wallet, for which you 
* have private keys.
* 
* Contracts reviewed and approved by pros!
* 
* Main contract - Revolution. Scroll down to find it.
*/


contract InvestorsStorage {
  struct investor {
    uint keyIndex;
    uint value;
    uint paymentTime;
    uint refBonus;
  }
  struct itmap {
    mapping(address => investor) data;
    address[] keys;
  }
  itmap private s;
  address private owner;

  modifier onlyOwner() {
    require(msg.sender == owner, "access denied");
    _;
  }

  constructor() public {
    owner = msg.sender;
    s.keys.length++;
  }

  function insert(address addr, uint value) public onlyOwner returns (bool) {
    uint keyIndex = s.data[addr].keyIndex;
    if (keyIndex != 0) return false;
    s.data[addr].value = value;
    keyIndex = s.keys.length++;
    s.data[addr].keyIndex = keyIndex;
    s.keys[keyIndex] = addr;
    return true;
  }

  function investorFullInfo(address addr) public view returns(uint, uint, uint, uint) {
    return (
      s.data[addr].keyIndex,
      s.data[addr].value,
      s.data[addr].paymentTime,
      s.data[addr].refBonus
    );
  }

  function investorBaseInfo(address addr) public view returns(uint, uint, uint) {
    return (
      s.data[addr].value,
      s.data[addr].paymentTime,
      s.data[addr].refBonus
    );
  }

  function investorShortInfo(address addr) public view returns(uint, uint) {
    return (
      s.data[addr].value,
      s.data[addr].refBonus
    );
  }

  function addRefBonus(address addr, uint refBonus) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].refBonus += refBonus;
    return true;
  }

  function addValue(address addr, uint value) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].value += value;
    return true;
  }

  function setPaymentTime(address addr, uint paymentTime) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].paymentTime = paymentTime;
    return true;
  }

  function setRefBonus(address addr, uint refBonus) public onlyOwner returns (bool) {
    if (s.data[addr].keyIndex == 0) return false;
    s.data[addr].refBonus = refBonus;
    return true;
  }

  function keyFromIndex(uint i) public view returns (address) {
    return s.keys[i];
  }

  function contains(address addr) public view returns (bool) {
    return s.data[addr].keyIndex > 0;
  }

  function size() public view returns (uint) {
    return s.keys.length;
  }

  function iterStart() public pure returns (uint) {
    return 1;
  }
}


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

  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;
  }

  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b <= _a);
    uint256 c = _a - _b;

    return c;
  }

  function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
    uint256 c = _a + _b;
    require(c >= _a);

    return c;
  }

  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}



library Percent {
  // Solidity automatically throws when dividing by 0
  struct percent {
    uint num;
    uint den;
  }
  function mul(percent storage p, uint a) internal view returns (uint) {
    if (a == 0) {
      return 0;
    }
    return a*p.num/p.den;
  }

  function div(percent storage p, uint a) internal view returns (uint) {
    return a/p.num*p.den;
  }

  function sub(percent storage p, uint a) internal view returns (uint) {
    uint b = mul(p, a);
    if (b >= a) return 0;
    return a - b;
  }

  function add(percent storage p, uint a) internal view returns (uint) {
    return a + mul(p, a);
  }
}


contract Accessibility {
  enum AccessRank { None, Payout, Paymode, Full }
  mapping(address => AccessRank) internal m_admins;
  modifier onlyAdmin(AccessRank  r) {
    require(
      m_admins[msg.sender] == r || m_admins[msg.sender] == AccessRank.Full,
      "access denied"
    );
    _;
  }
  event LogProvideAccess(address indexed whom, uint when,  AccessRank rank);

  constructor() public {
    m_admins[msg.sender] = AccessRank.Full;
    emit LogProvideAccess(msg.sender, now, AccessRank.Full);
  }
  
  function provideAccess(address addr, AccessRank rank) public onlyAdmin(AccessRank.Full) {
    require(rank <= AccessRank.Full, "invalid access rank");
    require(m_admins[addr] != AccessRank.Full, "cannot change full access rank");
    if (m_admins[addr] != rank) {
      m_admins[addr] = rank;
      emit LogProvideAccess(addr, now, rank);
    }
  }

  function access(address addr) public view returns(AccessRank rank) {
    rank = m_admins[addr];
  }
}


contract PaymentSystem {
  // https://consensys.github.io/smart-contract-best-practices/recommendations/#favor-pull-over-push-for-external-calls
  enum Paymode { Push, Pull }
  struct PaySys {
    uint latestTime;
    uint latestKeyIndex;
    Paymode mode; 
  }
  PaySys internal m_paysys;

  modifier atPaymode(Paymode mode) {
    require(m_paysys.mode == mode, "pay mode does not the same");
    _;
  }
  event LogPaymodeChanged(uint when, Paymode indexed mode);
  
  function paymode() public view returns(Paymode mode) {
    mode = m_paysys.mode;
  }

  function changePaymode(Paymode mode) internal {
    require(mode <= Paymode.Pull, "invalid pay mode");
    if (mode == m_paysys.mode ) return; 
    if (mode == Paymode.Pull) require(m_paysys.latestTime != 0, "cannot set pull pay mode if latest time is 0");
    if (mode == Paymode.Push) m_paysys.latestTime = 0;
    m_paysys.mode = mode;
    emit LogPaymodeChanged(now, m_paysys.mode);
  }
}


library Zero {
  function requireNotZero(uint a) internal pure {
    require(a != 0, "require not zero");
  }

  function requireNotZero(address addr) internal pure {
    require(addr != address(0), "require not zero address");
  }

  function notZero(address addr) internal pure returns(bool) {
    return !(addr == address(0));
  }

  function isZero(address addr) internal pure returns(bool) {
    return addr == address(0);
  }
}


library ToAddress {
  function toAddr(uint source) internal pure returns(address) {
    return address(source);
  }

  function toAddr(bytes source) internal pure returns(address addr) {
    assembly { addr := mload(add(source,0x14)) }
    return addr;
  }
}


contract Revolution is Accessibility, PaymentSystem {
  using Percent for Percent.percent;
  using SafeMath for uint;
  using Zero for *;
  using ToAddress for *;

  // investors storage - iterable map;
  InvestorsStorage private m_investors;
  mapping(address => bool) private m_referrals;
  bool private m_nextWave;

  // automatically generates getters
  address public adminAddr;
  address public payerAddr;
  uint public waveStartup;
  uint public investmentsNum;
  uint public constant minInvesment = 10 finney; // 0.01 eth
  uint public constant maxBalance = 333e5 ether; // 33,300,000 eth
  uint public constant pauseOnNextWave = 168 hours; 

  // percents 
  Percent.percent private m_dividendsPercent = Percent.percent(333, 10000); // 333/10000*100% = 3.33%
  Percent.percent private m_adminPercent = Percent.percent(1, 10); // 1/10*100% = 10%
  Percent.percent private m_payerPercent = Percent.percent(7, 100); // 7/100*100% = 7%
  Percent.percent private m_refPercent = Percent.percent(3, 100); // 3/100*100% = 3%

  // more events for easy read from blockchain
  event LogNewInvestor(address indexed addr, uint when, uint value);
  event LogNewInvesment(address indexed addr, uint when, uint value);
  event LogNewReferral(address indexed addr, uint when, uint value);
  event LogPayDividends(address indexed addr, uint when, uint value);
  event LogPayReferrerBonus(address indexed addr, uint when, uint value);
  event LogBalanceChanged(uint when, uint balance);
  event LogAdminAddrChanged(address indexed addr, uint when);
  event LogPayerAddrChanged(address indexed addr, uint when);
  event LogNextWave(uint when);

  modifier balanceChanged {
    _;
    emit LogBalanceChanged(now, address(this).balance);
  }

  modifier notOnPause() {
    require(waveStartup+pauseOnNextWave <= now, "pause on next wave not expired");
    _;
  }

  constructor() public {
    adminAddr = msg.sender;
    emit LogAdminAddrChanged(msg.sender, now);

    payerAddr = msg.sender;
    emit LogPayerAddrChanged(msg.sender, now);

    nextWave();
    waveStartup = waveStartup.sub(pauseOnNextWave);
  }

  function() public payable {
    // investor get him dividends
    if (msg.value == 0) {
      getMyDividends();
      return;
    }

    // sender do invest
    address a = msg.data.toAddr();
    address[3] memory refs;
    if (a.notZero()) {
      refs[0] = a;
      doInvest(refs); 
    } else {
      doInvest(refs);
    }
  }

  function investorsNumber() public view returns(uint) {
    return m_investors.size()-1;
    // -1 because see InvestorsStorage constructor where keys.length++ 
  }

  function balanceETH() public view returns(uint) {
    return address(this).balance;
  }

  function payerPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_payerPercent.num, m_payerPercent.den);
  }

  function dividendsPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_dividendsPercent.num, m_dividendsPercent.den);
  }

  function adminPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_adminPercent.num, m_adminPercent.den);
  }

  function referrerPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_refPercent.num, m_refPercent.den);
  }

  function investorInfo(address addr) public view returns(uint value, uint paymentTime, uint refBonus, bool isReferral) {
    (value, paymentTime, refBonus) = m_investors.investorBaseInfo(addr);
    isReferral = m_referrals[addr];
  }

  function latestPayout() public view returns(uint timestamp) {
    return m_paysys.latestTime;
  }

  function getMyDividends() public notOnPause atPaymode(Paymode.Pull) balanceChanged {
    // check investor info
    InvestorsStorage.investor memory investor = getMemInvestor(msg.sender);
    require(investor.keyIndex > 0, "sender is not investor"); 
    if (investor.paymentTime < m_paysys.latestTime) {
      assert(m_investors.setPaymentTime(msg.sender, m_paysys.latestTime));
      investor.paymentTime = m_paysys.latestTime;
    }

    // calculate days after latest payment
    uint256 daysAfter = now.sub(investor.paymentTime).div(24 hours);
    require(daysAfter > 0, "the latest payment was earlier than 24 hours");
    assert(m_investors.setPaymentTime(msg.sender, now));

    // check enough eth 
    uint value = m_dividendsPercent.mul(investor.value) * daysAfter;
    if (address(this).balance < value + investor.refBonus) {
      nextWave();
      return;
    }

    // send dividends and ref bonus
    if (investor.refBonus > 0) {
      assert(m_investors.setRefBonus(msg.sender, 0));
      sendDividendsWithRefBonus(msg.sender, value, investor.refBonus);
    } else {
      sendDividends(msg.sender, value);
    }
  }

  function doInvest(address[3] refs) public payable notOnPause balanceChanged {
    require(msg.value >= minInvesment, "msg.value must be >= minInvesment");
    require(address(this).balance <= maxBalance, "the contract eth balance limit");

    uint value = msg.value;
    // ref system works only once for sender-referral
    if (!m_referrals[msg.sender]) {
      // level 1
      if (notZeroNotSender(refs[0]) && m_investors.contains(refs[0])) {
        uint reward = m_refPercent.mul(value);
        assert(m_investors.addRefBonus(refs[0], reward)); // referrer 1 bonus
        m_referrals[msg.sender] = true;
        value = m_dividendsPercent.add(value); // referral bonus
        emit LogNewReferral(msg.sender, now, value);
        // level 2
        if (notZeroNotSender(refs[1]) && m_investors.contains(refs[1]) && refs[0] != refs[1]) { 
          assert(m_investors.addRefBonus(refs[1], reward)); // referrer 2 bonus
          // level 3
          if (notZeroNotSender(refs[2]) && m_investors.contains(refs[2]) && refs[0] != refs[2] && refs[1] != refs[2]) { 
            assert(m_investors.addRefBonus(refs[2], reward)); // referrer 3 bonus
          }
        }
      }
    }

    // commission
    adminAddr.transfer(m_adminPercent.mul(msg.value));
    payerAddr.transfer(m_payerPercent.mul(msg.value));    
    
    // write to investors storage
    if (m_investors.contains(msg.sender)) {
      assert(m_investors.addValue(msg.sender, value));
    } else {
      assert(m_investors.insert(msg.sender, value));
      emit LogNewInvestor(msg.sender, now, value); 
    }
    
    if (m_paysys.mode == Paymode.Pull)
      assert(m_investors.setPaymentTime(msg.sender, now));

    emit LogNewInvesment(msg.sender, now, value);   
    investmentsNum++;
  }

  function payout() public notOnPause onlyAdmin(AccessRank.Payout) atPaymode(Paymode.Push) balanceChanged {
    if (m_nextWave) {
      nextWave(); 
      return;
    }
   
    // if m_paysys.latestKeyIndex == m_investors.iterStart() then payout NOT in process and we must check latest time of payment.
    if (m_paysys.latestKeyIndex == m_investors.iterStart()) {
      require(now>m_paysys.latestTime+12 hours, "the latest payment was earlier than 12 hours");
      m_paysys.latestTime = now;
    }

    uint i = m_paysys.latestKeyIndex;
    uint value;
    uint refBonus;
    uint size = m_investors.size();
    address investorAddr;
    
    // gasleft and latest key index  - prevent gas block limit 
    for (i; i < size && gasleft() > 50000; i++) {
      investorAddr = m_investors.keyFromIndex(i);
      (value, refBonus) = m_investors.investorShortInfo(investorAddr);
      value = m_dividendsPercent.mul(value);

      if (address(this).balance < value + refBonus) {
        m_nextWave = true;
        break;
      }

      if (refBonus > 0) {
        require(m_investors.setRefBonus(investorAddr, 0), "internal error");
        sendDividendsWithRefBonus(investorAddr, value, refBonus);
        continue;
      }

      sendDividends(investorAddr, value);
    }

    if (i == size) 
      m_paysys.latestKeyIndex = m_investors.iterStart();
    else 
      m_paysys.latestKeyIndex = i;
  }

  function setAdminAddr(address addr) public onlyAdmin(AccessRank.Full) {
    addr.requireNotZero();
    if (adminAddr != addr) {
      adminAddr = addr;
      emit LogAdminAddrChanged(addr, now);
    }    
  }

  function setPayerAddr(address addr) public onlyAdmin(AccessRank.Full) {
    addr.requireNotZero();
    if (payerAddr != addr) {
      payerAddr = addr;
      emit LogPayerAddrChanged(addr, now);
    }  
  }

  function setPullPaymode() public onlyAdmin(AccessRank.Paymode) atPaymode(Paymode.Push) {
    changePaymode(Paymode.Pull);
  }

  function getMemInvestor(address addr) internal view returns(InvestorsStorage.investor) {
    (uint a, uint b, uint c, uint d) = m_investors.investorFullInfo(addr);
    return InvestorsStorage.investor(a, b, c, d);
  }

  function notZeroNotSender(address addr) internal view returns(bool) {
    return addr.notZero() && addr != msg.sender;
  }

  function sendDividends(address addr, uint value) private {
    if (addr.send(value)) emit LogPayDividends(addr, now, value); 
  }

  function sendDividendsWithRefBonus(address addr, uint value,  uint refBonus) private {
    if (addr.send(value+refBonus)) {
      emit LogPayDividends(addr, now, value);
      emit LogPayReferrerBonus(addr, now, refBonus);
    }
  }

  function nextWave() private {
    m_investors = new InvestorsStorage();
    changePaymode(Paymode.Push);
    m_paysys.latestKeyIndex = m_investors.iterStart();
    investmentsNum = 0;
    waveStartup = now;
    m_nextWave = false;
    emit LogNextWave(now);
  }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"refs","type":"address[3]"}],"name":"doInvest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"investmentsNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setPayerAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minInvesment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdminAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"referrerPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"payout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investorsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"access","outputs":[{"name":"rank","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pauseOnNextWave","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paymode","outputs":[{"name":"mode","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"latestPayout","outputs":[{"name":"timestamp","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"payerPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getMyDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"rank","type":"uint8"}],"name":"provideAccess","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"investorInfo","outputs":[{"name":"value","type":"uint256"},{"name":"paymentTime","type":"uint256"},{"name":"refBonus","type":"uint256"},{"name":"isReferral","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"payerAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"waveStartup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dividendsPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"setPullPaymode","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvestor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvesment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogPayDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogPayReferrerBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogAdminAddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogPayerAddrChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNextWave","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":true,"name":"mode","type":"uint8"}],"name":"LogPaymodeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"whom","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"rank","type":"uint8"}],"name":"LogProvideAccess","type":"event"}]

  Contract Creation Code Switch To Opcodes View
61014d608081905261271060a0819052600a918255600b55600160c081905260e0829052600c55600d5560076101008190526064610120819052600e91909155600f81905561018060405260036101408190526101608290526010556011553480156200006b57600080fd5b503360008181526020818152604091829020805460ff1916600390811790915582514281529182015281517f281b0406296ed2277e9ec49b1acca0b452581a995e533fa5256a3ce9355f9a60929181900390910190a26006805461010060a860020a031916336101008102919091179091556040805142815290517f668e88f9d85264651fcdf6de6ef084c112c92cba1fad30510c383c5d1ea1e691916020908290030190a260078054600160a060020a031916339081179091556040805142815290517fd7f1608e19fd9d15ac7ca872d397878f39039fcda33c52af2536ec2790bde7269181900360200190a26200016c64010000000062000195810204565b6008546200018c9062093a806401000000006200227f620002ca82021704565b600855620004cc565b6200019f620004bb565b604051809103906000f080158015620001bc573d6000803e3d6000fd5b5060048054600160a060020a031916600160a060020a0392909216919091179055620001f26000640100000000620002e2810204565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b1580156200025057600080fd5b505af115801562000265573d6000803e3d6000fd5b505050506040513d60208110156200027c57600080fd5b505160025560006009554260088190556006805460ff1916905560408051918252517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b60008083831115620002db57600080fd5b5050900390565b6001816001811115620002f157fe5b11156200035f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f696e76616c696420706179206d6f646500000000000000000000000000000000604482015290519081900360640190fd5b60035460ff1660018111156200037157fe5b8160018111156200037e57fe5b14156200038b57620004b8565b60018160018111156200039a57fe5b1415620004385760015415156200043857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f63616e6e6f74207365742070756c6c20706179206d6f6465206966206c61746560448201527f73742074696d6520697320300000000000000000000000000000000000000000606482015290519081900360840190fd5b60008160018111156200044757fe5b1415620004545760006001555b6003805482919060ff1916600183818111156200046d57fe5b021790555060035460ff1660018111156200048457fe5b6040805142815290517f8f010bfb19c67f04dbb7e355027ff728adb05787d09dd023f42af2e6554449e99181900360200190a25b50565b60405161086e806200356f83390190565b61309380620004dc6000396000f3006080604052600436106101245763ffffffff60e060020a600035041663110dc7a681146101b75780631680eb4e146101ef5780632b82aed6146102165780633d7ac9f81461023757806341a28df61461024c578063636d98b11461026d57806363bd1d4a1461029b578063653c3174146102b05780636fae3d76146102c557806373ad468a1461030a578063816f56171461031f5780638183059314610334578063922a842514610365578063a4d6bb2b1461038a578063bb41f4211461039f578063c0dab516146103b4578063d50030ad146103c9578063d70d532b146103de578063dbcbaca414610405578063dcc7094a1461044e578063eafecc7a14610463578063ecbdbb3214610478578063f2c0cdbe1461048d578063fc043cad146104a2575b600061012e612781565b3415156101425761013d6104b7565b6101b3565b61017c6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284375061093e945050505050565b915061019082600160a060020a0316610945565b156101aa57600160a060020a038216815261013d81610953565b6101b381610953565b5050005b6040805160608181019092526101ed91369160049160649190839060039083908390808284375093965061095395505050505050565b005b3480156101fb57600080fd5b5061020461136a565b60408051918252519081900360200190f35b34801561022257600080fd5b506101ed600160a060020a0360043516611370565b34801561024357600080fd5b50610204611489565b34801561025857600080fd5b506101ed600160a060020a0360043516611494565b34801561027957600080fd5b506102826115b9565b6040805192835260208301919091528051918290030190f35b3480156102a757600080fd5b506101ed6115c3565b3480156102bc57600080fd5b50610204611c69565b3480156102d157600080fd5b506102e6600160a060020a0360043516611cfa565b604051808260038111156102f657fe5b60ff16815260200191505060405180910390f35b34801561031657600080fd5b50610204611d18565b34801561032b57600080fd5b50610204611d27565b34801561034057600080fd5b50610349611d2e565b60408051600160a060020a039092168252519081900360200190f35b34801561037157600080fd5b5061037a611d42565b604051808260018111156102f657fe5b34801561039657600080fd5b50610204611d4b565b3480156103ab57600080fd5b50610282611d51565b3480156103c057600080fd5b50610282611d5b565b3480156103d557600080fd5b506101ed6104b7565b3480156103ea57600080fd5b506101ed600160a060020a036004351660ff60243516611d65565b34801561041157600080fd5b50610426600160a060020a0360043516611f9f565b6040805194855260208501939093528383019190915215156060830152519081900360800190f35b34801561045a57600080fd5b50610349612077565b34801561046f57600080fd5b50610204612086565b34801561048457600080fd5b5061020461208c565b34801561049957600080fd5b50610282612091565b3480156104ae57600080fd5b506101ed61209b565b6104bf6127a0565b6000804262093a806008540111151515610523576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b60018060035460ff16600181111561053757fe5b1461058c576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b6105953361219c565b80519094506000106105f1576040805160e560020a62461bcd02815260206004820152601660248201527f73656e646572206973206e6f7420696e766573746f7200000000000000000000604482015290519081900360640190fd5b600154604085015110156106ae5760048054600154604080517f440135850000000000000000000000000000000000000000000000000000000081523394810194909452602484019190915251600160a060020a039091169163440135859160448083019260209291908290030181600087803b15801561067157600080fd5b505af1158015610685573d6000803e3d6000fd5b505050506040513d602081101561069b57600080fd5b505115156106a557fe5b60015460408501525b6106d8620151806106cc86604001514261227f90919063ffffffff16565b9063ffffffff61229616565b925060008311610758576040805160e560020a62461bcd02815260206004820152602c60248201527f746865206c6174657374207061796d656e7420776173206561726c696572207460448201527f68616e20323420686f7572730000000000000000000000000000000000000000606482015290519081900360840190fd5b60048054604080517f44013585000000000000000000000000000000000000000000000000000000008152339381019390935242602484015251600160a060020a039091169163440135859160448083019260209291908290030181600087803b1580156107c557600080fd5b505af11580156107d9573d6000803e3d6000fd5b505050506040513d60208110156107ef57600080fd5b505115156107f957fe5b826108128560200151600a6122b990919063ffffffff16565b6060860151910292508201303110156108325761082d6122e6565b6108fd565b6000846060015111156108f35760048054604080517ffbeac9c900000000000000000000000000000000000000000000000000000000815233938101939093526000602484018190529051600160a060020a039092169263fbeac9c99260448083019360209383900390910190829087803b1580156108b057600080fd5b505af11580156108c4573d6000803e3d6000fd5b505050506040513d60208110156108da57600080fd5b505115156108e457fe5b61082d33838660600151612417565b6108fd33836124cd565b604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050565b6014015190565b600160a060020a0316151590565b6000804262093a8060085401111515156109b7576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b662386f26fc10000341015610a3c576040805160e560020a62461bcd02815260206004820152602160248201527f6d73672e76616c7565206d757374206265203e3d206d696e496e7665736d656e60448201527f7400000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6a1b8b8c9e000e82a480000030311115610aa0576040805160e560020a62461bcd02815260206004820152601e60248201527f74686520636f6e7472616374206574682062616c616e6365206c696d69740000604482015290519081900360640190fd5b3360009081526005602052604090205434925060ff161515610f8057610acd8360005b602002015161253e565b8015610b655750600454600160a060020a0316635dbe47e884600060200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610b3857600080fd5b505af1158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b50515b15610f8057610b7b60108363ffffffff6122b916565b600480548551604080517f11302818000000000000000000000000000000000000000000000000000000008152600160a060020a0392831694810194909452602484018590525193945016916311302818916044808201926020929091908290030181600087803b158015610bef57600080fd5b505af1158015610c03573d6000803e3d6000fd5b505050506040513d6020811015610c1957600080fd5b50511515610c2357fe5b336000908152600560205260409020805460ff19166001179055610c4e600a8363ffffffff61256c16565b6040805142815260208101839052815192945033927f51dd0a60788a76a784e14408dda19543a507171e513d8a1aab1859626c30d448929181900390910190a2610c99836001610ac3565b8015610d315750600454600160a060020a0316635dbe47e884600160200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610d0457600080fd5b505af1158015610d18573d6000803e3d6000fd5b505050506040513d6020811015610d2e57600080fd5b50515b8015610d4f575060208301518351600160a060020a03908116911614155b15610f805760048054602080860151604080517f11302818000000000000000000000000000000000000000000000000000000008152600160a060020a03928316958101959095526024850186905251921692631130281892604480830193928290030181600087803b158015610dc557600080fd5b505af1158015610dd9573d6000803e3d6000fd5b505050506040513d6020811015610def57600080fd5b50511515610df957fe5b610e04836002610ac3565b8015610e9c5750600454600160a060020a0316635dbe47e884600260200201516040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b158015610e6f57600080fd5b505af1158015610e83573d6000803e3d6000fd5b505050506040513d6020811015610e9957600080fd5b50515b8015610eba575060408301518351600160a060020a03908116911614155b8015610edb575060408301516020840151600160a060020a03908116911614155b15610f8057600454600160a060020a031663113028188460026020020151836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b158015610f4c57600080fd5b505af1158015610f60573d6000803e3d6000fd5b505050506040513d6020811015610f7657600080fd5b50511515610f8057fe5b6006546101009004600160a060020a03166108fc610f9f600c346122b9565b6040518115909202916000818181858888f19350505050158015610fc7573d6000803e3d6000fd5b50600754600160a060020a03166108fc610fe8600e3463ffffffff6122b916565b6040518115909202916000818181858888f19350505050158015611010573d6000803e3d6000fd5b5060048054604080517f5dbe47e8000000000000000000000000000000000000000000000000000000008152339381019390935251600160a060020a0390911691635dbe47e89160248083019260209291908290030181600087803b15801561107857600080fd5b505af115801561108c573d6000803e3d6000fd5b505050506040513d60208110156110a257600080fd5b5051156111505760048054604080517fca0b187800000000000000000000000000000000000000000000000000000000815233938101939093526024830185905251600160a060020a039091169163ca0b18789160448083019260209291908290030181600087803b15801561111757600080fd5b505af115801561112b573d6000803e3d6000fd5b505050506040513d602081101561114157600080fd5b5051151561114b57fe5b61122d565b60048054604080517f0fd0ae1000000000000000000000000000000000000000000000000000000000815233938101939093526024830185905251600160a060020a0390911691630fd0ae109160448083019260209291908290030181600087803b1580156111be57600080fd5b505af11580156111d2573d6000803e3d6000fd5b505050506040513d60208110156111e857600080fd5b505115156111f257fe5b6040805142815260208101849052815133927f5299e1ad8e7b5bcb9a8bfb1ce23cc0210bfea47a33518ab518a93fef68427d98928290030190a25b600160035460ff16600181111561124057fe5b14156112e75760048054604080517f44013585000000000000000000000000000000000000000000000000000000008152339381019390935242602484015251600160a060020a039091169163440135859160448083019260209291908290030181600087803b1580156112b357600080fd5b505af11580156112c7573d6000803e3d6000fd5b505050506040513d60208110156112dd57600080fd5b505115156112e757fe5b6040805142815260208101849052815133927f28c94178af4152674986540aaca61b18b89f54283f74283ef675a90583339b8f928290030190a2600980546001019055604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a1505050565b60095481565b6003803360009081526020819052604090205460ff16600381111561139157fe5b14806113ba575060033360009081526020819052604090205460ff1660038111156113b857fe5b145b15156113fe576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b61141082600160a060020a0316612581565b600754600160a060020a038381169116146114855760078054600160a060020a03841673ffffffffffffffffffffffffffffffffffffffff1990911681179091556040805142815290517fd7f1608e19fd9d15ac7ca872d397878f39039fcda33c52af2536ec2790bde7269181900360200190a25b5050565b662386f26fc1000081565b6003803360009081526020819052604090205460ff1660038111156114b557fe5b14806114de575060033360009081526020819052604090205460ff1660038111156114dc57fe5b145b1515611522576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b61153482600160a060020a0316612581565b600654600160a060020a0383811661010090920416146114855760068054600160a060020a038416610100810274ffffffffffffffffffffffffffffffffffffffff0019909216919091179091556040805142815290517f668e88f9d85264651fcdf6de6ef084c112c92cba1fad30510c383c5d1ea1e6919181900360200190a25050565b6010546011549091565b60008060008060004262093a80600854011115151561162c576040805160e560020a62461bcd02815260206004820152601e60248201527f7061757365206f6e206e6578742077617665206e6f7420657870697265640000604482015290519081900360640190fd5b6001803360009081526020819052604090205460ff16600381111561164d57fe5b1480611676575060033360009081526020819052604090205460ff16600381111561167457fe5b145b15156116ba576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b60008060035460ff1660018111156116ce57fe5b14611723576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b60065460ff161561173b576117366122e6565b611c25565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d60208110156117c257600080fd5b505160025414156118555760015461a8c0014211611850576040805160e560020a62461bcd02815260206004820152602c60248201527f746865206c6174657374207061796d656e7420776173206561726c696572207460448201527f68616e20313220686f7572730000000000000000000000000000000000000000606482015290519081900360840190fd5b426001555b60025460048054604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051939a50600160a060020a039091169263949d225d928281019260209291908290030181600087803b1580156118b957600080fd5b505af11580156118cd573d6000803e3d6000fd5b505050506040513d60208110156118e357600080fd5b505193505b83871080156118f8575061c3505a115b15611b865760048054604080517f460d674b0000000000000000000000000000000000000000000000000000000081529283018a905251600160a060020a039091169163460d674b9160248083019260209291908290030181600087803b15801561196257600080fd5b505af1158015611976573d6000803e3d6000fd5b505050506040513d602081101561198c57600080fd5b505160048054604080517f993d3489000000000000000000000000000000000000000000000000000000008152600160a060020a03808616948201949094528151949750929091169263993d34899260248082019392918290030181600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b505050506040513d6040811015611a2357600080fd5b5080516020909101519096509450611a42600a8763ffffffff6122b916565b955084860130311015611a61576006805460ff19166001179055611b86565b6000851115611b715760048054604080517ffbeac9c9000000000000000000000000000000000000000000000000000000008152600160a060020a03878116948201949094526000602482018190529151939092169263fbeac9c9926044808201936020939283900390910190829087803b158015611adf57600080fd5b505af1158015611af3573d6000803e3d6000fd5b505050506040513d6020811015611b0957600080fd5b50511515611b61576040805160e560020a62461bcd02815260206004820152600e60248201527f696e7465726e616c206572726f72000000000000000000000000000000000000604482015290519081900360640190fd5b611b6c838787612417565b611b7b565b611b7b83876124cd565b6001909601956118e8565b83871415611c1f5760048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b158015611beb57600080fd5b505af1158015611bff573d6000803e3d6000fd5b505050506040513d6020811015611c1557600080fd5b5051600255611c25565b60028790555b604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150505050505050565b60048054604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600093600193600160a060020a03169263949d225d928183019260209282900301818887803b158015611cc857600080fd5b505af1158015611cdc573d6000803e3d6000fd5b505050506040513d6020811015611cf257600080fd5b505103905090565b600160a060020a031660009081526020819052604090205460ff1690565b6a1b8b8c9e000e82a480000081565b62093a8081565b6006546101009004600160a060020a031681565b60035460ff1690565b60015490565b600e54600f549091565b600c54600d549091565b6003803360009081526020819052604090205460ff166003811115611d8657fe5b1480611daf575060033360009081526020819052604090205460ff166003811115611dad57fe5b145b1515611df3576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b6003826003811115611e0157fe5b1115611e57576040805160e560020a62461bcd02815260206004820152601360248201527f696e76616c6964206163636573732072616e6b00000000000000000000000000604482015290519081900360640190fd5b6003600160a060020a03841660009081526020819052604090205460ff166003811115611e8057fe5b1415611ed6576040805160e560020a62461bcd02815260206004820152601e60248201527f63616e6e6f74206368616e67652066756c6c206163636573732072616e6b0000604482015290519081900360640190fd5b816003811115611ee257fe5b600160a060020a03841660009081526020819052604090205460ff166003811115611f0957fe5b14611f9a57600160a060020a0383166000908152602081905260409020805483919060ff19166001836003811115611f3d57fe5b021790555082600160a060020a03167f281b0406296ed2277e9ec49b1acca0b452581a995e533fa5256a3ce9355f9a60428460405180838152602001826003811115611f8557fe5b60ff1681526020019250505060405180910390a25b505050565b600080600080600460009054906101000a9004600160a060020a0316600160a060020a031663743c6775866040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050606060405180830381600087803b15801561201557600080fd5b505af1158015612029573d6000803e3d6000fd5b505050506040513d606081101561203f57600080fd5b508051602080830151604093840151600160a060020a03909916600090815260059092529290205490979196955060ff169350915050565b600754600160a060020a031681565b60085481565b303190565b600a54600b549091565b6002803360009081526020819052604090205460ff1660038111156120bc57fe5b14806120e5575060033360009081526020819052604090205460ff1660038111156120e357fe5b145b1515612129576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020613048833981519152604482015290519081900360640190fd5b60008060035460ff16600181111561213d57fe5b14612192576040805160e560020a62461bcd02815260206004820152601a60248201527f706179206d6f646520646f6573206e6f74207468652073616d65000000000000604482015290519081900360640190fd5b61148560016125e4565b6121a46127a0565b600080600080600460009054906101000a9004600160a060020a0316600160a060020a031663634d6e57876040518263ffffffff1660e060020a0281526004018082600160a060020a0316600160a060020a03168152602001915050608060405180830381600087803b15801561221a57600080fd5b505af115801561222e573d6000803e3d6000fd5b505050506040513d608081101561224457600080fd5b508051602080830151604080850151606095860151825160808101845295865293850192909252830152918101919091529695505050505050565b6000808383111561228f57600080fd5b5050900390565b6000808083116122a557600080fd5b82848115156122b057fe5b04949350505050565b60008115156122ca575060006122e0565b6001830154835483028115156122dc57fe5b0490505b92915050565b6122ee6127c9565b604051809103906000f08015801561230a573d6000803e3d6000fd5b506004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039290921691909117905561234260006125e4565b60048054604080517f80ac80b00000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216926380ac80b09282820192602092908290030181600087803b15801561239f57600080fd5b505af11580156123b3573d6000803e3d6000fd5b505050506040513d60208110156123c957600080fd5b505160025560006009554260088190556006805460ff1916905560408051918252517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b604051600160a060020a0384169083830180156108fc02916000818181858888f1935050505015611f9a5760408051428152602081018490528151600160a060020a038616927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a260408051428152602081018390528151600160a060020a038616927f8e3ff7e294a4411929d6ec573691ed656c8e5c691be6dc7d776fadb286dbfe82928290030190a2505050565b604051600160a060020a0383169082156108fc029083906000818181858888f19350505050156114855760408051428152602081018390528151600160a060020a038516927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a25050565b600061255282600160a060020a0316610945565b80156122e05750600160a060020a03821633141592915050565b600061257883836122b9565b90910192915050565b600160a060020a03811615156125e1576040805160e560020a62461bcd02815260206004820152601860248201527f72657175697265206e6f74207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b50565b60018160018111156125f257fe5b1115612648576040805160e560020a62461bcd02815260206004820152601060248201527f696e76616c696420706179206d6f646500000000000000000000000000000000604482015290519081900360640190fd5b60035460ff16600181111561265957fe5b81600181111561266557fe5b1415612670576125e1565b600181600181111561267e57fe5b1415612703576001541515612703576040805160e560020a62461bcd02815260206004820152602c60248201527f63616e6e6f74207365742070756c6c20706179206d6f6465206966206c61746560448201527f73742074696d6520697320300000000000000000000000000000000000000000606482015290519081900360840190fd5b600081600181111561271157fe5b141561271d5760006001555b6003805482919060ff19166001838181111561273557fe5b021790555060035460ff16600181111561274b57fe5b6040805142815290517f8f010bfb19c67f04dbb7e355027ff728adb05787d09dd023f42af2e6554449e99181900360200190a250565b6060604051908101604052806003906020820280388339509192915050565b608060405190810160405280600081526020016000815260200160008152602001600081525090565b60405161086e806127da833901905600608060405234801561001057600080fd5b5060028054600160a060020a0319163317905560018054906100349082810161003a565b50610084565b81548183558181111561005e5760008381526020902061005e918101908301610063565b505050565b61008191905b8082111561007d5760008155600101610069565b5090565b90565b6107db806100936000396000f3006080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630fd0ae1081146100be57806311302818146100f6578063440135851461011a578063460d674b1461013e5780635dbe47e814610172578063634d6e5714610193578063743c6775146101da57806380ac80b014610219578063949d225d14610240578063993d348914610255578063ca0b18781461028f578063fbeac9c9146102b3575b600080fd5b3480156100ca57600080fd5b506100e2600160a060020a03600435166024356102d7565b604080519115158252519081900360200190f35b34801561010257600080fd5b506100e2600160a060020a03600435166024356103ec565b34801561012657600080fd5b506100e2600160a060020a0360043516602435610491565b34801561014a57600080fd5b5061015660043561052f565b60408051600160a060020a039092168252519081900360200190f35b34801561017e57600080fd5b506100e2600160a060020a036004351661055c565b34801561019f57600080fd5b506101b4600160a060020a0360043516610578565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156101e657600080fd5b506101fb600160a060020a03600435166105a9565b60408051938452602084019290925282820152519081900360600190f35b34801561022557600080fd5b5061022e6105d4565b60408051918252519081900360200190f35b34801561024c57600080fd5b5061022e6105da565b34801561026157600080fd5b50610276600160a060020a03600435166105e0565b6040805192835260208301919091528051918290030190f35b34801561029b57600080fd5b506100e2600160a060020a0360043516602435610606565b3480156102bf57600080fd5b506100e2600160a060020a03600435166024356106aa565b6002546000908190600160a060020a0316331461032c576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b50600160a060020a038316600090815260208190526040902054801561035557600091506103e5565b600160a060020a0384166000908152602081905260409020600190810184905580549061038490828101610748565b600160a060020a0385166000908152602081905260409020819055600180549192508591839081106103b257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550600191505b5092915050565b600254600090600160a060020a0316331461043f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156104665750600061048b565b50600160a060020a038216600090815260208190526040902060030180548201905560015b92915050565b600254600090600160a060020a031633146104e4576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260208190526040902054151561050b5750600061048b565b50600160a060020a0391909116600090815260208190526040902060020155600190565b60018054600091908390811061054157fe5b600091825260209091200154600160a060020a031692915050565b600160a060020a03166000908152602081905260408120541190565b600160a060020a03166000908152602081905260409020805460018201546002830154600390930154919390929190565b600160a060020a03166000908152602081905260409020600181015460028201546003909201549092565b60015b90565b60015490565b600160a060020a0316600090815260208190526040902060018101546003909101549091565b600254600090600160a060020a03163314610659576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156106805750600061048b565b50600160a060020a0382166000908152602081905260409020600190810180548301905592915050565b600254600090600160a060020a031633146106fd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156107245750600061048b565b50600160a060020a0391909116600090815260208190526040902060030155600190565b81548183558181111561076c5760008381526020902061076c918101908301610771565b505050565b6105d791905b8082111561078b5760008155600101610777565b509056006163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820202cd60ed611d02a3542cf0ddd798bf96ca6c1a5b963d3e40b3387a9e48dd64800296163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820a343eb0f7375e78534797610021d5e1b0aeae1e188e4bef4c431a4c0fab95b340029608060405234801561001057600080fd5b5060028054600160a060020a0319163317905560018054906100349082810161003a565b50610084565b81548183558181111561005e5760008381526020902061005e918101908301610063565b505050565b61008191905b8082111561007d5760008155600101610069565b5090565b90565b6107db806100936000396000f3006080604052600436106100b95763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630fd0ae1081146100be57806311302818146100f6578063440135851461011a578063460d674b1461013e5780635dbe47e814610172578063634d6e5714610193578063743c6775146101da57806380ac80b014610219578063949d225d14610240578063993d348914610255578063ca0b18781461028f578063fbeac9c9146102b3575b600080fd5b3480156100ca57600080fd5b506100e2600160a060020a03600435166024356102d7565b604080519115158252519081900360200190f35b34801561010257600080fd5b506100e2600160a060020a03600435166024356103ec565b34801561012657600080fd5b506100e2600160a060020a0360043516602435610491565b34801561014a57600080fd5b5061015660043561052f565b60408051600160a060020a039092168252519081900360200190f35b34801561017e57600080fd5b506100e2600160a060020a036004351661055c565b34801561019f57600080fd5b506101b4600160a060020a0360043516610578565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156101e657600080fd5b506101fb600160a060020a03600435166105a9565b60408051938452602084019290925282820152519081900360600190f35b34801561022557600080fd5b5061022e6105d4565b60408051918252519081900360200190f35b34801561024c57600080fd5b5061022e6105da565b34801561026157600080fd5b50610276600160a060020a03600435166105e0565b6040805192835260208301919091528051918290030190f35b34801561029b57600080fd5b506100e2600160a060020a0360043516602435610606565b3480156102bf57600080fd5b506100e2600160a060020a03600435166024356106aa565b6002546000908190600160a060020a0316331461032c576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b50600160a060020a038316600090815260208190526040902054801561035557600091506103e5565b600160a060020a0384166000908152602081905260409020600190810184905580549061038490828101610748565b600160a060020a0385166000908152602081905260409020819055600180549192508591839081106103b257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a03160217905550600191505b5092915050565b600254600090600160a060020a0316331461043f576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156104665750600061048b565b50600160a060020a038216600090815260208190526040902060030180548201905560015b92915050565b600254600090600160a060020a031633146104e4576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a038316600090815260208190526040902054151561050b5750600061048b565b50600160a060020a0391909116600090815260208190526040902060020155600190565b60018054600091908390811061054157fe5b600091825260209091200154600160a060020a031692915050565b600160a060020a03166000908152602081905260408120541190565b600160a060020a03166000908152602081905260409020805460018201546002830154600390930154919390929190565b600160a060020a03166000908152602081905260409020600181015460028201546003909201549092565b60015b90565b60015490565b600160a060020a0316600090815260208190526040902060018101546003909101549091565b600254600090600160a060020a03163314610659576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156106805750600061048b565b50600160a060020a0382166000908152602081905260409020600190810180548301905592915050565b600254600090600160a060020a031633146106fd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020610790833981519152604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205415156107245750600061048b565b50600160a060020a0391909116600090815260208190526040902060030155600190565b81548183558181111561076c5760008381526020902061076c918101908301610771565b505050565b6105d791905b8082111561078b5760008155600101610777565b509056006163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820202cd60ed611d02a3542cf0ddd798bf96ca6c1a5b963d3e40b3387a9e48dd6480029

   Swarm Source:
bzzr://202cd60ed611d02a3542cf0ddd798bf96ca6c1a5b963d3e40b3387a9e48dd648

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.