Latest 25 transactions from a total of 84148 transactions
(+2 PendingTxns)

TxHash Age From To Value [TxFee]
0xf640c8c87e7971557c9fe9f30a806df2299518bf419527c2cefc18d741ea8a2f(pending)0x18f0f095a5dac83655ceb70d36f43073c5fc6fb4  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0x59116804d7a6107042b4815905cb70df8ef29982a52a22f53c0581d81efc2a95(pending)0x18f0f095a5dac83655ceb70d36f43073c5fc6fb4  IN  0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710 Ether(Pending)
0xe0250c24813acdeb6f92b2cd7d514d31b3b89335a33a9867eed92e0c7f09b72e3 days 23 hrs ago0x11da627b34a91d60af55972631e3a2712307b71e  IN   333ETH_10 Ether0.00021989
0x36cbeea1f6d6e33137b3fe05ac3172d3f7f31d12aa2b97c0f511be136b0448c63 days 23 hrs ago0x11da627b34a91d60af55972631e3a2712307b71e  IN   333ETH_10 Ether0.000168
0x8d1bd1437403557d9015823f2a538c158dedc773eb83ae389b9e4977c92386025 days 20 hrs ago0x706017f49c3509a5a3d69534483e750cfcc07880  IN   333ETH_10 Ether0.001113
0xcc2bbddfe3cddb27bb4eac9ea983908efa72c8765c2e695a2992ceca34dbb6d813 days 15 hrs ago0x57ca728093c6f7b89e7aba6914f39445d5703f15  IN   333ETH_10 Ether0.000065967
0xb927d2788579b7214494407c2762d8e1db2b7a23f4cd6b1eb9a13d4cef2702bb14 days 1 hr ago0x18e70f5d4fdb739dd5b8619dd761d0bd443107d7  IN   333ETH_10 Ether0.000043978
0x432993683eb39c28192e2f0111f6b2353c195f92daf6d9f8d8c43830bcbd425415 days 11 hrs ago0x1b4d7281003eb2b70cbb3ea2c0cd6b3fc9006f32  IN   333ETH_10 Ether0.000021989
0x822b583b605acd48acd47b3eb7fcc323033099d5e8b75b485f94a4e65285689915 days 17 hrs ago0x4ee98f1a45860b2705960a00ccec9c38070669fe  IN   333ETH_10 Ether0.00042
0x1a322b92cd4ab814c518ff349cc94b0207f83e70bb183f732a6d27fc9fabe46d17 days 2 hrs ago0x6efed4b7e474e1a39fe50af4d93eb4905a605d29  IN   333ETH_10 Ether0.000527736
0x9b4b4ae6c4eff314e984a2a4870d7ebcd3c46baad3a702014ae69e95d3f421f117 days 3 hrs ago0x916e374b7348e2e6b9e7cdd7d2f5079f72950c31  IN   333ETH_10 Ether0.000177011447
0xbc83abd14a74e7fb3ede7e7b1f1ae39ec0a3759b0df85d2cc702c19ec3683c7217 days 4 hrs ago0x44f29cbdea20550cbe7d60fe75bdcbd023d22e8a  IN   333ETH_10 Ether0.000043978
0xb859f425dad0e76675bbbcdc92179c9eab53ba34613a3bd334a1956e456d308517 days 13 hrs ago0x6efed4b7e474e1a39fe50af4d93eb4905a605d29  IN   333ETH_10.0001 Ether0.000528696
0x6d517c48bd69e73e0f53282e03bfd1be787e2f08b7c269bb29c276eedb5f613217 days 13 hrs ago0x6efed4b7e474e1a39fe50af4d93eb4905a605d29  IN   333ETH_10 Ether0.000527736
0x7987d54d6e6510544ac5d36e7b49b096011c01f5467daf5788e60151ead4b21c18 days 59 mins ago0xb718037491688252089ae509a4c8f5ee942547f3  IN   333ETH_10 Ether0.000901549
0x301d18d2edcf54f2043be1183e12eb7d426b8f30c16a24241fab5b2aab01054620 days 19 hrs ago0x4b64174f9e21adde7b0454c961cc8acc09312ebf  IN   333ETH_10 Ether0.000725637
0x8ea5a4df2e199d387026acfab776eb43af4dc4f24e7e74118d31809f242df07e21 days 9 hrs ago0xa7c69ce2357b97b16b32ccae15f1eb7ea4d44782  IN   333ETH_10 Ether0.001143428
0x457b0b864c734548dfa25b29150dabb204225bb0d5f51e51e3fd2d0255f2cb6d21 days 9 hrs ago0xa7c69ce2357b97b16b32ccae15f1eb7ea4d44782  IN   333ETH_10 Ether0.001092
0x3239b042ff6e2a9251c8971a146c8a00219ff350031e924d3c382460fa9a81fa21 days 22 hrs ago0x0a0ae767147e3691dcb07c4593d62a36876a6085  IN   333ETH_10.01 Ether0.000178569
0xb34a8ab1d46c5320335265a52b292d65c3570a1d15a3ddf59bb0a0615b55394f22 days 55 mins ago0xe5d891e6ad7b375d3072d81c956a7cfab9f7a71f  IN   333ETH_10 Ether0.000109945
0xc3e61f19ad4ab4b2419ba67ec45659f23eec90690e1afd8040869a68e76e645822 days 12 hrs ago0xb42f90b683a941663a3b0d3f04398aaaba96a402  IN   333ETH_10 Ether0.000241879
0xecbd14186caa30cf524b38f6b2c205ae1f2155cc5e58539e66ea4f05bead6bdd22 days 12 hrs ago0xb42f90b683a941663a3b0d3f04398aaaba96a402  IN   333ETH_10 Ether0.000241879
0xb093dee1939e8628318acf7eff3ea73321ce183d36673ceccd2a86fde15f5dc122 days 20 hrs ago0x157d9ff7ddd8d426a0013c682dd1567f074f6ec7  IN   333ETH_10 Ether0.000065967
0xef6b15bd9bb9f1a7aef667f0973ecd2d6981895d743924f33ec78740986da7cc22 days 22 hrs ago0xdef5d60704c076acfac520d5cf5b81f0d65f8d81  IN   333ETH_10 Ether0.000131934
0x413575ef04765a81f5bf9861ae44678912ca1591f2b446468a35c98be4c34b9b22 days 23 hrs ago0x5456733fccf939dcffabdd43490576deebeb616c  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
0x3239b042ff6e2a9251c8971a146c8a00219ff350031e924d3c382460fa9a81fa696698021 days 22 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0x3239b042ff6e2a9251c8971a146c8a00219ff350031e924d3c382460fa9a81fa696698021 days 22 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0xc4fbb3715880f505b075a5a84c362c309c598fedf5480d51d1a092c23dfe628a683170144 days 13 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.047734956051386071 Ether
0xc4fbb3715880f505b075a5a84c362c309c598fedf5480d51d1a092c23dfe628a683170144 days 13 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.068192794359122959 Ether
0x8321d7de52a31bc9e103586a0596b2817c9d2876496f61b4a25404732a22945d679746550 days 5 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0x8321d7de52a31bc9e103586a0596b2817c9d2876496f61b4a25404732a22945d679746550 days 5 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0x8be89bf2f19441a911aaae08f3ac8cae6755919bd76e9ef75f565b2e0f463bb9679744750 days 5 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0x8be89bf2f19441a911aaae08f3ac8cae6755919bd76e9ef75f565b2e0f463bb9679744750 days 5 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0xefb9d2a4207e302a20688dfa04448f8858ef12de2a4e7dd83e003916a35c008a679704650 days 7 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0028 Ether
0xefb9d2a4207e302a20688dfa04448f8858ef12de2a4e7dd83e003916a35c008a679704650 days 7 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.004 Ether
0x29f0b98a8f9796416e24c82ab3372da6470a26b98148607e33db4538c3f3142b679426750 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.007 Ether
0x29f0b98a8f9796416e24c82ab3372da6470a26b98148607e33db4538c3f3142b679426750 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.01 Ether
0x0776a156b4a06a1c83b969a732ea8acb53d8b323d8de92dbf09910bcca4b3226679425950 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.007 Ether
0x0776a156b4a06a1c83b969a732ea8acb53d8b323d8de92dbf09910bcca4b3226679425950 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.01 Ether
0xfe6dbd5e869a7c180c7ef2b338b98273a9abf8341776340e5dcdd50d8c206446679423950 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.00084 Ether
0xfe6dbd5e869a7c180c7ef2b338b98273a9abf8341776340e5dcdd50d8c206446679423950 days 18 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.0012 Ether
0xbb04f3d868965710c1e723b04924a11e538020d5c5f06a45a6a439e252c771b3679290850 days 23 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0xbb04f3d868965710c1e723b04924a11e538020d5c5f06a45a6a439e252c771b3679290850 days 23 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0x8721e4120f61ad5e8c98b2ea0c1a841e86d2d472faa343f04b1d3554dbe7cefb678046953 days 1 hr ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0x8721e4120f61ad5e8c98b2ea0c1a841e86d2d472faa343f04b1d3554dbe7cefb678046953 days 1 hr ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0x80c7102e266fc6c15093ee4cd7e0763259c6daeb58d64dc0ecafdea81c4b5038673504560 days 11 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0x80c7102e266fc6c15093ee4cd7e0763259c6daeb58d64dc0ecafdea81c4b5038673504560 days 11 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0xb464a80ef00cc6107ffabcbf2d16469185472447f7e7119b26ea7697e1dbe3b1669547666 days 23 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0007 Ether
0xb464a80ef00cc6107ffabcbf2d16469185472447f7e7119b26ea7697e1dbe3b1669547666 days 23 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x8f19b97b91bf2aa4c8efa5548867343e43d516a20.001 Ether
0x7ee32c720d099f1ae8a0aab96df93d79145df8ed5811b696a6a70647b0026d4c666237872 days 9 hrs ago0x311f71389e3de68f7b2097ad02c6ad7b2dde4c710x4eac9ea2bfb3f78d7bcf61b5e4ba5e9345c200070.0014 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.