Contract 0xe26b758708f39276f879c0a187d9a789fc26c38e

 
Txn Hash Method
Block
From
To
Value
0x65fcabf806bc6104f4b587eb795eb8c26c79b7f2c1031930eb9a2888af90fbd3Withdraw Rent93408532020-01-23 23:12:14505 days 13 hrs ago0x2ebd882ea64ae24eceebd198c180684f12aa31fd IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.00006080041.8
0x95fe8bee50d174293b2bafb97e201541483d8aa81684aded80ade175e680daf6Update Payout93408482020-01-23 23:11:06505 days 13 hrs ago0x2ebd882ea64ae24eceebd198c180684f12aa31fd IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.00005653261.8
0xc09038e48d1af93e54617da56b4c23f41a90d00f4aa0949fde8fb65ccf29af34Withdraw93408482020-01-23 23:11:06505 days 13 hrs ago0x2ebd882ea64ae24eceebd198c180684f12aa31fd IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0000244641.1
0xfc4c66026e1a6b2ede0160eee8a91aa0ab2269089867ee7a34538ee65b191da3Withdraw Rent93408482020-01-23 23:11:06505 days 13 hrs ago0x2ebd882ea64ae24eceebd198c180684f12aa31fd IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.00004914581.1
0xab4cde3c3521a1e5d7db39258b676c18184bcd88fc9bfab534e095e36e9154b1Withdraw Rent64412752018-10-02 19:06:50983 days 17 hrs ago0xd5a7a48ef07c1ff4f0c8015871475ae500a01ee4 IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0005005089
0x0ba554fb2b05d08f96088d7c6aee5f75716f6b5966fb5ea992a614ba60107bb2Withdraw Rent63162832018-09-12 5:24:321004 days 6 hrs ago0x1f2672e17fd7ec4b52b7f40d41ec5c477fe85c0c IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.000244635
0xa4e0e45aa2f372a724b9ddfb93755724d875b27cbb4ae26d35e4869b8c1af25dWithdraw Rent62843332018-09-06 20:48:221009 days 15 hrs ago0x61e8950107ed3d4225c1e640ce4d744ef507265d IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0001670283
0x49e8a2c9a804dadba8a63e141a27ee81a5fa38de83f047df1481767fef2dc55aWithdraw Rent58268382018-06-21 6:03:191087 days 6 hrs ago0xa67e5696775d2f25dbdc3d44c4d16c612b4f2cda IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0004742610
0xf9ff772f7f7261dc0556e08464359fb2e202305ff439f573888295c6c75604cfWithdraw Rent58144802018-06-19 3:10:391089 days 9 hrs ago0x74d8a622f6d49c605995770e7fab412a25d8d217 IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0000489261
0x8bb93e1c1f950a2c6667acf37b83caf76371637d07e1bb08b6cc9c941502af15Withdraw Rent58129332018-06-18 21:00:211089 days 15 hrs ago0xa1be46ec15610c88f0ffb8b947de8033281db0ad IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0000691761
0x113393b5a6858e4e2ba20169429d0c0c9d40e2bedb9e836ade428ded9d3d6916Purchase Estate57558992018-06-08 23:20:001099 days 13 hrs ago0xb9b23bb8920b6875fc50281910a27a12bfb421cf IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0.041355373916794 Ether0.000821645
0x7c2ff3929662da4a9153fd6fb4123a203a80f4162ed5e7dfae84297931d1cd01Purchase Estate56774072018-05-26 1:44:261113 days 10 hrs ago0xebbc391992710fe6f2d1aa9bda76670f7d32cea6 IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0.041355373916794 Ether0.000896645
0x50ccb995fa4a56ba3ccf7cfc6859533a5904e14748d895c261f86bd0fdd464a2Withdraw56729132018-05-25 6:24:181114 days 5 hrs ago0x83a3af0ee6addda9176dca89831d348b289f38ce IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0001584088
0xeb455b4f1ce7f0652c5eb21a1011cfefce11f0a3462bc6dca7a4e6bcc39dfabfPurchase Estate56397522018-05-19 9:03:021120 days 3 hrs ago0x4edeb56e0a46258d01b41225f82a5b90dd7904dd IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0.041355373916794 Ether0.001988368812.1
0xf9bec380a18d7181b4eadf165e357e101354385dd52b5724268ee1b3725ce135Withdraw Rent55766052018-05-08 7:17:131131 days 5 hrs ago0x2ebd882ea64ae24eceebd198c180684f12aa31fd IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0000489261
0x45fb7f1376fe58b8e97bc6507d998e78d964f992a156fba2672b63bba7f3f5bbPurchase Estate55050912018-04-25 20:13:111143 days 16 hrs ago0xf0055278edaac39d7675fae7c8b39436fdc345c9 IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0.041355373916794 Ether0.00052584963.2
0x2cf5f91dbc165caf1aa5ff4f6653eb38d7d98495ec0a13ed165b1fc6306bf0daWithdraw Rent54059712018-04-08 23:23:401160 days 12 hrs ago0x0d41f957181e584db82d2e316837b2de1738c477 IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0000489261
0xf5b3d55639ab4b40f62a40726f51a00ed3ba9d0845245676943ecb05763417e2Withdraw Rent53860532018-04-05 16:46:011163 days 19 hrs ago0x74d8a622f6d49c605995770e7fab412a25d8d217 IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0000489261
0x84135d2afb61bfecef96acf29717c85d1bdca619dc5de7942b5fb1e4fc202accWithdraw Rent53501702018-03-30 17:38:391169 days 18 hrs ago0x2ebd882ea64ae24eceebd198c180684f12aa31fd IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0000978522
0x0830348d38887233d331ed83e614bc5d70676a153c4143217e27b9247a0ba0a1Withdraw Rent53390272018-03-28 20:25:481171 days 15 hrs ago0xd068e1cc864c47f616f84598f2ff2f1131d91b23 IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0001670283
0x7fc93ad6cc24252bbbeb703ad77f9d6cd60c524810482d6e57e57a12d8865f50Withdraw Rent53361952018-03-28 9:09:461172 days 3 hrs ago0xd387a6e4e84a6c86bd90c158c6028a58cc8ac459 IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.000473385
0x2e449768d1274b5cc846f1da8d8a945ebbf5e8ad13a2b5e5e3ab096fa2545261Withdraw Rent53355052018-03-28 6:11:121172 days 6 hrs agoENS Name emron.eth IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0001248522
0x1f5db0b26b08d1bbc94f67ea5f290a8dcec62c2721db11b1c40552236d1eabdaWithdraw Rent53325682018-03-27 18:16:071172 days 18 hrs ago0xd5a7a48ef07c1ff4f0c8015871475ae500a01ee4 IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0001668363
0xeb8eaf923a8f68330fc3b843fe68d45ce276c5f82ff979516497bbb5f0f5a62cWithdraw Rent52974242018-03-21 21:36:301178 days 14 hrs ago0xa1be46ec15610c88f0ffb8b947de8033281db0ad IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0000691761
0xf353e37fa3e10a0fa9e83962d5b66e7b704977227660a69863910c31140799efWithdraw Rent52929422018-03-21 3:29:271179 days 8 hrs ago0xe52470bef1da70af094a91e326076c0bdca688ff IN  0xe26b758708f39276f879c0a187d9a789fc26c38e0 Ether0.0002480283
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xfc4c66026e1a6b2ede0160eee8a91aa0ab2269089867ee7a34538ee65b191da393408482020-01-23 23:11:06505 days 13 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x2ebd882ea64ae24eceebd198c180684f12aa31fd0.000032567356959475 Ether
0xab4cde3c3521a1e5d7db39258b676c18184bcd88fc9bfab534e095e36e9154b164412752018-10-02 19:06:50983 days 17 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xd5a7a48ef07c1ff4f0c8015871475ae500a01ee40.000043423142612632 Ether
0x0ba554fb2b05d08f96088d7c6aee5f75716f6b5966fb5ea992a614ba60107bb263162832018-09-12 5:24:321004 days 6 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x1f2672e17fd7ec4b52b7f40d41ec5c477fe85c0c0.002856961215409915 Ether
0xa4e0e45aa2f372a724b9ddfb93755724d875b27cbb4ae26d35e4869b8c1af25d62843332018-09-06 20:48:221009 days 15 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x61e8950107ed3d4225c1e640ce4d744ef507265d0.001778376951504681 Ether
0x49e8a2c9a804dadba8a63e141a27ee81a5fa38de83f047df1481767fef2dc55a58268382018-06-21 6:03:191087 days 6 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xa67e5696775d2f25dbdc3d44c4d16c612b4f2cda0.035100151207413442 Ether
0xf9ff772f7f7261dc0556e08464359fb2e202305ff439f573888295c6c75604cf58144802018-06-19 3:10:391089 days 9 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x74d8a622f6d49c605995770e7fab412a25d8d2170.000021711571306316 Ether
0x8bb93e1c1f950a2c6667acf37b83caf76371637d07e1bb08b6cc9c941502af1558129332018-06-18 21:00:211089 days 15 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xa1be46ec15610c88f0ffb8b947de8033281db0ad0.001389540563604281 Ether
0x113393b5a6858e4e2ba20169429d0c0c9d40e2bedb9e836ade428ded9d3d691657558992018-06-08 23:20:001099 days 13 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x2fa510f124950952c9bafadb404ccd4205d9b97f0.037943555568658579 Ether
0x7c2ff3929662da4a9153fd6fb4123a203a80f4162ed5e7dfae84297931d1cd0156774072018-05-26 1:44:261113 days 10 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xb1b1cfefcae407902b3331003568bba023d099f00.037943555568658579 Ether
0x50ccb995fa4a56ba3ccf7cfc6859533a5904e14748d895c261f86bd0fdd464a256729132018-05-25 6:24:181114 days 5 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x83a3af0ee6addda9176dca89831d348b289f38ce3.034747767655681664 Ether
0xeb455b4f1ce7f0652c5eb21a1011cfefce11f0a3462bc6dca7a4e6bcc39dfabf56397522018-05-19 9:03:021120 days 3 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xef764bac8a438e7e498c2e5fccf0f174c3e3f8db0.037943555568658579 Ether
0xf9bec380a18d7181b4eadf165e357e101354385dd52b5724268ee1b3725ce13555766052018-05-08 7:17:131131 days 5 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x2ebd882ea64ae24eceebd198c180684f12aa31fd0.000010855785653158 Ether
0x45fb7f1376fe58b8e97bc6507d998e78d964f992a156fba2672b63bba7f3f5bb55050912018-04-25 20:13:111143 days 16 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x78e93d288340f4d5a31be74bb98b2e267e4369630.037943555568658579 Ether
0x2cf5f91dbc165caf1aa5ff4f6653eb38d7d98495ec0a13ed165b1fc6306bf0da54059712018-04-08 23:23:401160 days 12 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x0d41f957181e584db82d2e316837b2de1738c4770.012216438000056359 Ether
0xf5b3d55639ab4b40f62a40726f51a00ed3ba9d0845245676943ecb05763417e253860532018-04-05 16:46:011163 days 19 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x74d8a622f6d49c605995770e7fab412a25d8d2170.000250977474507256 Ether
0x84135d2afb61bfecef96acf29717c85d1bdca619dc5de7942b5fb1e4fc202acc53501702018-03-30 17:38:391169 days 18 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x2ebd882ea64ae24eceebd198c180684f12aa31fd0.000037723855144726 Ether
0x0830348d38887233d331ed83e614bc5d70676a153c4143217e27b9247a0ba0a153390272018-03-28 20:25:481171 days 15 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xd068e1cc864c47f616f84598f2ff2f1131d91b230.002235592834657259 Ether
0x7fc93ad6cc24252bbbeb703ad77f9d6cd60c524810482d6e57e57a12d8865f5053361952018-03-28 9:09:461172 days 3 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xd387a6e4e84a6c86bd90c158c6028a58cc8ac4590.020365476358604543 Ether
0x2e449768d1274b5cc846f1da8d8a945ebbf5e8ad13a2b5e5e3ab096fa254526153355052018-03-28 6:11:121172 days 6 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38eENS Name emron.eth0.01471608559183242 Ether
0x1f5db0b26b08d1bbc94f67ea5f290a8dcec62c2721db11b1c40552236d1eabda53325682018-03-27 18:16:071172 days 18 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xd5a7a48ef07c1ff4f0c8015871475ae500a01ee40.002873680929601484 Ether
0xeb8eaf923a8f68330fc3b843fe68d45ce276c5f82ff979516497bbb5f0f5a62c52974242018-03-21 21:36:301178 days 14 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xa1be46ec15610c88f0ffb8b947de8033281db0ad0.000694770281802141 Ether
0xf353e37fa3e10a0fa9e83962d5b66e7b704977227660a69863910c31140799ef52929422018-03-21 3:29:271179 days 8 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xe52470bef1da70af094a91e326076c0bdca688ff0.003598458766648532 Ether
0xbfe432d0002ec43e630da1ae1bc8b05f735daf062cc5c0b148195e747dcbe9d752928192018-03-21 2:59:061179 days 9 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0x2fa510f124950952c9bafadb404ccd4205d9b97f0.037943555568658579 Ether
0xff994aee2277d212b714cea6c449174d9ef94f38f3c5914dc5669fed64d0411a52928182018-03-21 2:59:021179 days 9 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xd3bc475f397542ad02342b377e72dfb21aada9cc0.037943555568658579 Ether
0x8442081f2e00ed62ea7378da896c887c1743b06c768ea0df2f5bc69e3727503952917182018-03-20 22:32:541179 days 13 hrs ago 0xe26b758708f39276f879c0a187d9a789fc26c38e0xa1be46ec15610c88f0ffb8b947de8033281db0ad0.000859778223730147 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EstatesToken

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-21
*/

pragma solidity ^0.4.18;

/**
 * @title ERC721 interface
 * @dev see https://github.com/ethereum/eips/issues/721
 */
contract ERC721 {
  event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
  event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);

  function balanceOf(address _owner) public view returns (uint256 _balance);
  function ownerOf(uint256 _tokenId) public view returns (address _owner);
  function transfer(address _to, uint256 _tokenId) public;
  function approve(address _to, uint256 _tokenId) public;
  function takeOwnership(uint256 _tokenId) public;
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
  address public owner;


  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() public {
    owner = msg.sender;
  }


  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }


  /**
   * @dev Allows the current owner to transfer control of the contract to a newOwner.
   * @param newOwner The address to transfer ownership to.
   */
  function transferOwnership(address newOwner) onlyOwner public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  function sub(uint256 a, uint256 b) internal constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }
  
  function add(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

/**
 * @title ERC721Token
 * Generic implementation for the required functionality of the ERC721 standard
 */
contract EstatesToken is ERC721, Ownable {
  using SafeMath for uint256;

  // Total amount of tokens
  uint256 private totalTokens;
  uint256[] private listedEstates;
  uint256 public devOwed;
  uint256 public poolTotal;
  uint256 public lastPurchase;

  // Estate Data
  mapping (uint256 => Estate) public estateData;

  // Mapping from token ID to owner
  mapping (uint256 => address) private tokenOwner;

  // Mapping from token ID to approved address
  mapping (uint256 => address) private tokenApprovals;

  // Mapping from owner to list of owned token IDs
  mapping (address => uint256[]) private ownedTokens;

  // Mapping from token ID to index of the owner tokens list
  mapping(uint256 => uint256) private ownedTokensIndex;

  // Balances from % payouts.
  mapping (address => uint256) private payoutBalances; 

  // Events
  event EstatePurchased(uint256 indexed _tokenId, address indexed _owner, uint256 _purchasePrice);

  // Purchasing Caps for Determining Next Pool Cut
  uint256 private firstCap  = 0.5 ether;
  uint256 private secondCap = 1.0 ether;
  uint256 private thirdCap  = 3.0 ether;
  uint256 private finalCap  = 5.0 ether;

  // Struct to store Estate Data
  struct Estate {
      uint256 startingPrice; // Price the item started at.
      uint256 price;         // Current price of the item.
      uint256 lastPrice;     // lastPrice this was sold for, used for adding to pool.
      uint256 payout;        // The percent of the pool rewarded.
      uint256 withdrawn;     // The amount of Eth this estate has withdrawn from the pool.
      address owner;         // Current owner of the item.
  }

  /**
  * @dev createListing Adds new ERC721 Token
  * @param _tokenId uint256 ID of new token
  * @param _startingPrice uint256 starting price in wei
  * @param _payoutPercentage uint256 payout percentage (divisible by 10)
  * @param _owner address of new owner
  */
  function createListing(uint256 _tokenId, uint256 _startingPrice, uint256 _payoutPercentage, address _owner) onlyOwner() public {

    // make sure price > 0
    require(_startingPrice > 0);
    // make sure token hasn't been used yet
    require(estateData[_tokenId].price == 0);
    
    // create new token
    Estate storage newEstate = estateData[_tokenId];

    newEstate.owner = _owner;
    newEstate.price = getNextPrice(_startingPrice);
    newEstate.lastPrice = _startingPrice;
    newEstate.payout = _payoutPercentage;
    newEstate.startingPrice = _startingPrice;

    // store estate in storage
    listedEstates.push(_tokenId);
    
    // mint new token
    _mint(_owner, _tokenId);
  }

  function createMultiple (uint256[] _itemIds, uint256[] _prices, uint256[] _payouts, address[] _owners) onlyOwner() external {
    for (uint256 i = 0; i < _itemIds.length; i++) {
      createListing(_itemIds[i], _prices[i], _payouts[i], _owners[i]);
    }
  }

  /**
  * @dev Determines next price of token
  * @param _price uint256 ID of current price
  */
  function getNextPrice (uint256 _price) private view returns (uint256 _nextPrice) {
    if (_price < firstCap) {
      return _price.mul(200).div(95);
    } else if (_price < secondCap) {
      return _price.mul(135).div(96);
    } else if (_price < thirdCap) {
      return _price.mul(125).div(97);
    } else if (_price < finalCap) {
      return _price.mul(117).div(97);
    } else {
      return _price.mul(115).div(98);
    }
  }

  function calculatePoolCut (uint256 _price) public view returns (uint256 _poolCut) {
    if (_price < firstCap) {
      return _price.mul(10).div(100); // 5%
    } else if (_price < secondCap) {
      return _price.mul(9).div(100); // 4%
    } else if (_price < thirdCap) {
      return _price.mul(8).div(100); // 3%
    } else if (_price < finalCap) {
      return _price.mul(7).div(100); // 3%
    } else {
      return _price.mul(5).div(100); // 2%
    }
  }

  /**
  * @dev Purchase estate from previous owner
  * @param _tokenId uint256 of token
  */
  function purchaseEstate(uint256 _tokenId) public 
    payable
    isNotContract(msg.sender)
  {

    // get data from storage
    Estate storage estate = estateData[_tokenId];
    uint256 price = estate.price;
    address oldOwner = estate.owner;
    address newOwner = msg.sender;
    uint256 excess = msg.value.sub(price);

    // revert checks
    require(price > 0);
    require(msg.value >= price);
    require(oldOwner != msg.sender);

    // Calculate pool cut for taxes.
    uint256 profit = price.sub(estate.lastPrice);
    uint256 poolCut = calculatePoolCut(profit);
    poolTotal += poolCut;
    
    // 3% goes to developers
    uint256 devCut = price.mul(3).div(100);
    devOwed = devOwed.add(devCut);

    transferEstate(oldOwner, newOwner, _tokenId);

    // set new prices
    estate.lastPrice = price;
    estate.price = getNextPrice(price);

    // raise event
    EstatePurchased(_tokenId, newOwner, price);

    // Transfer payment to old owner minus the developer's and pool's cut.
    oldOwner.transfer(price.sub(devCut.add(poolCut)));

    // Send refund to owner if needed
    if (excess > 0) {
      newOwner.transfer(excess);
    }
    
    // set last purchase price to storage
    lastPurchase = now;

  }

  /**
  * @dev Transfer Estate from Previous Owner to New Owner
  * @param _from previous owner address
  * @param _to new owner address
  * @param _tokenId uint256 ID of token
  */
  function transferEstate(address _from, address _to, uint256 _tokenId) internal {

    // check token exists
    require(tokenExists(_tokenId));

    // make sure previous owner is correct
    require(estateData[_tokenId].owner == _from);

    require(_to != address(0));
    require(_to != address(this));

    // pay any unpaid payouts to previous owner of estate
    updateSinglePayout(_from, _tokenId);

    // clear approvals linked to this token
    clearApproval(_from, _tokenId);

    // remove token from previous owner
    removeToken(_from, _tokenId);

    // update owner and add token to new owner
    estateData[_tokenId].owner = _to;
    addToken(_to, _tokenId);

   //raise event
    Transfer(_from, _to, _tokenId);
  }

  /**
  * @dev Withdraw dev's cut
  */
  function withdraw() onlyOwner public {
    owner.transfer(devOwed);
    devOwed = 0;
  }

  /**
  * @dev Updates the payout for the estates the owner has
  * @param _owner address of token owner
  */
  function updatePayout(address _owner) public {
    uint256[] memory estates = ownedTokens[_owner];
    uint256 owed;
    for (uint256 i = 0; i < estates.length; i++) {
        uint256 totalEstateOwed = poolTotal * estateData[estates[i]].payout / 10000;
        uint256 estateOwed = totalEstateOwed.sub(estateData[estates[i]].withdrawn);
        owed += estateOwed;
        
        estateData[estates[i]].withdrawn += estateOwed;
    }
    payoutBalances[_owner] += owed;
  }

  /**
   * @dev Update a single estate payout for transfers.
   * @param _owner Address of the owner of the estate.
   * @param _itemId Unique Id of the token.
  **/
  function updateSinglePayout(address _owner, uint256 _itemId) internal {
    uint256 totalEstateOwed = poolTotal * estateData[_itemId].payout / 10000;
    uint256 estateOwed = totalEstateOwed.sub(estateData[_itemId].withdrawn);
        
    estateData[_itemId].withdrawn += estateOwed;
    payoutBalances[_owner] += estateOwed;
  }

  /**
  * @dev Owner can withdraw their accumulated payouts
  * @param _owner address of token owner
  */
  function withdrawRent(address _owner) public {
      updatePayout(_owner);
      uint256 payout = payoutBalances[_owner];
      payoutBalances[_owner] = 0;
      _owner.transfer(payout);
  }

  function getRentOwed(address _owner) public view returns (uint256 owed) {
    updatePayout(_owner);
    return payoutBalances[_owner];
  }

  /**
  * @dev Return all estate data
  * @param _tokenId uint256 of token
  */
  function getEstateData (uint256 _tokenId) external view 
  returns (address _owner, uint256 _startingPrice, uint256 _price, uint256 _nextPrice, uint256 _payout) 
  {
    Estate memory estate = estateData[_tokenId];
    return (estate.owner, estate.startingPrice, estate.price, getNextPrice(estate.price), estate.payout);
  }

  /**
  * @dev Determines if token exists by checking it's price
  * @param _tokenId uint256 ID of token
  */
  function tokenExists (uint256 _tokenId) public view returns (bool _exists) {
    return estateData[_tokenId].price > 0;
  }

  /**
  * @dev Guarantees msg.sender is owner of the given token
  * @param _tokenId uint256 ID of the token to validate its ownership belongs to msg.sender
  */
  modifier onlyOwnerOf(uint256 _tokenId) {
    require(ownerOf(_tokenId) == msg.sender);
    _;
  }

  /**
  * @dev Guarantees msg.sender is not a contract
  * @param _buyer address of person buying estate
  */
  modifier isNotContract(address _buyer) {
    uint size;
    assembly { size := extcodesize(_buyer) }
    require(size == 0);
    _;
  }


  /**
  * @dev Gets the total amount of tokens stored by the contract
  * @return uint256 representing the total amount of tokens
  */
  function totalSupply() public view returns (uint256) {
    return totalTokens;
  }

  /**
  * @dev Gets the balance of the specified address
  * @param _owner address to query the balance of
  * @return uint256 representing the amount owned by the passed address
  */
  function balanceOf(address _owner) public view returns (uint256) {
    return ownedTokens[_owner].length;
  }

  /**
  * @dev Gets the list of tokens owned by a given address
  * @param _owner address to query the tokens of
  * @return uint256[] representing the list of tokens owned by the passed address
  */
  function tokensOf(address _owner) public view returns (uint256[]) {
    return ownedTokens[_owner];
  }

  /**
  * @dev Gets the owner of the specified token ID
  * @param _tokenId uint256 ID of the token to query the owner of
  * @return owner address currently marked as the owner of the given token ID
  */
  function ownerOf(uint256 _tokenId) public view returns (address) {
    address owner = tokenOwner[_tokenId];
    require(owner != address(0));
    return owner;
  }

  /**
   * @dev Gets the approved address to take ownership of a given token ID
   * @param _tokenId uint256 ID of the token to query the approval of
   * @return address currently approved to take ownership of the given token ID
   */
  function approvedFor(uint256 _tokenId) public view returns (address) {
    return tokenApprovals[_tokenId];
  }

  /**
  * @dev Transfers the ownership of a given token ID to another address
  * @param _to address to receive the ownership of the given token ID
  * @param _tokenId uint256 ID of the token to be transferred
  */
  function transfer(address _to, uint256 _tokenId) public onlyOwnerOf(_tokenId) {
    clearApprovalAndTransfer(msg.sender, _to, _tokenId);
  }

  /**
  * @dev Approves another address to claim for the ownership of the given token ID
  * @param _to address to be approved for the given token ID
  * @param _tokenId uint256 ID of the token to be approved
  */
  function approve(address _to, uint256 _tokenId) public onlyOwnerOf(_tokenId) {
    address owner = ownerOf(_tokenId);
    require(_to != owner);
    if (approvedFor(_tokenId) != 0 || _to != 0) {
      tokenApprovals[_tokenId] = _to;
      Approval(owner, _to, _tokenId);
    }
  }

  /**
  * @dev Claims the ownership of a given token ID
  * @param _tokenId uint256 ID of the token being claimed by the msg.sender
  */
  function takeOwnership(uint256 _tokenId) public {
    require(isApprovedFor(msg.sender, _tokenId));
    clearApprovalAndTransfer(ownerOf(_tokenId), msg.sender, _tokenId);
  }

  /**
   * @dev Tells whether the msg.sender is approved for the given token ID or not
   * This function is not private so it can be extended in further implementations like the operatable ERC721
   * @param _owner address of the owner to query the approval of
   * @param _tokenId uint256 ID of the token to query the approval of
   * @return bool whether the msg.sender is approved for the given token ID or not
   */
  function isApprovedFor(address _owner, uint256 _tokenId) internal view returns (bool) {
    return approvedFor(_tokenId) == _owner;
  }
  
  /**
  * @dev Internal function to clear current approval and transfer the ownership of a given token ID
  * @param _from address which you want to send tokens from
  * @param _to address which you want to transfer the token to
  * @param _tokenId uint256 ID of the token to be transferred
  */
  function clearApprovalAndTransfer(address _from, address _to, uint256 _tokenId) internal isNotContract(_to) {
    require(_to != address(0));
    require(_to != ownerOf(_tokenId));
    require(ownerOf(_tokenId) == _from);

    clearApproval(_from, _tokenId);
    updateSinglePayout(_from, _tokenId);
    removeToken(_from, _tokenId);
    addToken(_to, _tokenId);
    Transfer(_from, _to, _tokenId);
  }

  /**
  * @dev Internal function to clear current approval of a given token ID
  * @param _tokenId uint256 ID of the token to be transferred
  */
  function clearApproval(address _owner, uint256 _tokenId) private {
    require(ownerOf(_tokenId) == _owner);
    tokenApprovals[_tokenId] = 0;
    Approval(_owner, 0, _tokenId);
  }


    /**
  * @dev Mint token function
  * @param _to The address that will own the minted token
  * @param _tokenId uint256 ID of the token to be minted by the msg.sender
  */
  function _mint(address _to, uint256 _tokenId) internal {
    require(_to != address(0));
    addToken(_to, _tokenId);
    Transfer(0x0, _to, _tokenId);
  }

  /**
  * @dev Internal function to add a token ID to the list of a given address
  * @param _to address representing the new owner of the given token ID
  * @param _tokenId uint256 ID of the token to be added to the tokens list of the given address
  */
  function addToken(address _to, uint256 _tokenId) private {
    require(tokenOwner[_tokenId] == address(0));
    tokenOwner[_tokenId] = _to;
    estateData[_tokenId].owner = _to;
    uint256 length = balanceOf(_to);
    ownedTokens[_to].push(_tokenId);
    ownedTokensIndex[_tokenId] = length;
    totalTokens = totalTokens.add(1);
  }

  /**
  * @dev Internal function to remove a token ID from the list of a given address
  * @param _from address representing the previous owner of the given token ID
  * @param _tokenId uint256 ID of the token to be removed from the tokens list of the given address
  */
  function removeToken(address _from, uint256 _tokenId) private {
    require(ownerOf(_tokenId) == _from);

    uint256 tokenIndex = ownedTokensIndex[_tokenId];
    uint256 lastTokenIndex = balanceOf(_from).sub(1);
    uint256 lastToken = ownedTokens[_from][lastTokenIndex];

    tokenOwner[_tokenId] = 0;
    ownedTokens[_from][tokenIndex] = lastToken;
    ownedTokens[_from][lastTokenIndex] = 0;
    // Note that this will handle single-element arrays. In that case, both tokenIndex and lastTokenIndex are going to
    // be zero. Then we can make sure that we will remove _tokenId from the ownedTokens list since we are first swapping
    // the lastToken to the first position, and then dropping the element placed in the last position of the list

    ownedTokens[_from].length--;
    ownedTokensIndex[_tokenId] = 0;
    ownedTokensIndex[lastToken] = tokenIndex;
    totalTokens = totalTokens.sub(1);
  }

  function name() public pure returns (string _name) {
    return "EtherEstates.io Estate";
  }

  function symbol() public pure returns (string _symbol) {
    return "EE";
  }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"tokenExists","outputs":[{"name":"_exists","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"getRentOwed","outputs":[{"name":"owed","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"purchaseEstate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"_name","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"estateData","outputs":[{"name":"startingPrice","type":"uint256"},{"name":"price","type":"uint256"},{"name":"lastPrice","type":"uint256"},{"name":"payout","type":"uint256"},{"name":"withdrawn","type":"uint256"},{"name":"owner","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"approvedFor","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastPurchase","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_price","type":"uint256"}],"name":"calculatePoolCut","outputs":[{"name":"_poolCut","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOf","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"withdrawRent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_itemIds","type":"uint256[]"},{"name":"_prices","type":"uint256[]"},{"name":"_payouts","type":"uint256[]"},{"name":"_owners","type":"address[]"}],"name":"createMultiple","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_payoutPercentage","type":"uint256"},{"name":"_owner","type":"address"}],"name":"createListing","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getEstateData","outputs":[{"name":"_owner","type":"address"},{"name":"_startingPrice","type":"uint256"},{"name":"_price","type":"uint256"},{"name":"_nextPrice","type":"uint256"},{"name":"_payout","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"_symbol","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"takeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"devOwed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"updatePayout","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_tokenId","type":"uint256"},{"indexed":true,"name":"_owner","type":"address"},{"indexed":false,"name":"_purchasePrice","type":"uint256"}],"name":"EstatePurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_approved","type":"address"},{"indexed":false,"name":"_tokenId","type":"uint256"}],"name":"Approval","type":"event"}]

60606040526706f05b59d3b20000600c55670de0b6b3a7640000600d556729a2241af62c0000600e55674563918244f40000600f55336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506126c2806100836000396000f300606060405260043610610153576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062923f9e1461015857806303dec4631461019357806306f470e9146101e057806306fdde03146101f8578063095ea7b31461028657806318160ddd146102c857806328fa17b6146102f15780632a6dd48f146103775780633ccfd60b146103da5780634528f3ec146103ef5780634ba336e5146104185780635a3f26721461044f5780635a5ebebf146104dd5780636352211e14610516578063704d4db01461057957806370a08231146105a25780637ecaf696146105ef5780638da5cb5b146106595780638ebaae08146106ae5780639381da6e1461070257806395d89b4114610781578063a9059cbb1461080f578063b2e6ceeb14610851578063bf37b8f114610874578063edcb9e9e1461089d578063f2fde38b146108d6575b600080fd5b341561016357600080fd5b610179600480803590602001909190505061090f565b604051808215151515815260200191505060405180910390f35b341561019e57600080fd5b6101ca600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610931565b6040518082815260200191505060405180910390f35b6101f66004808035906020019091905050610983565b005b341561020357600080fd5b61020b610c07565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561024b578082015181840152602081019050610230565b50505050905090810190601f1680156102785780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561029157600080fd5b6102c6600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610c4a565b005b34156102d357600080fd5b6102db610ddd565b6040518082815260200191505060405180910390f35b34156102fc57600080fd5b6103126004808035906020019091905050610de7565b604051808781526020018681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b341561038257600080fd5b6103986004808035906020019091905050610e43565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103e557600080fd5b6103ed610e80565b005b34156103fa57600080fd5b610402610f48565b6040518082815260200191505060405180910390f35b341561042357600080fd5b6104396004808035906020019091905050610f4e565b6040518082815260200191505060405180910390f35b341561045a57600080fd5b610486600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061105f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156104c95780820151818401526020810190506104ae565b505050509050019250505060405180910390f35b34156104e857600080fd5b610514600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110fc565b005b341561052157600080fd5b61053760048080359060200190919050506111d2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561058457600080fd5b61058c611250565b6040518082815260200191505060405180910390f35b34156105ad57600080fd5b6105d9600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611256565b6040518082815260200191505060405180910390f35b34156105fa57600080fd5b610657600480803590602001908201803590602001919091929080359060200190820180359060200191909192908035906020019082018035906020019190919290803590602001908201803590602001919091929050506112a2565b005b341561066457600080fd5b61066c611399565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156106b957600080fd5b610700600480803590602001909190803590602001909190803590602001909190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113be565b005b341561070d57600080fd5b610723600480803590602001909190505061150d565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b341561078c57600080fd5b6107946115fb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d45780820151818401526020810190506107b9565b50505050905090810190601f1680156108015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561081a57600080fd5b61084f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061163e565b005b341561085c57600080fd5b6108726004808035906020019091905050611691565b005b341561087f57600080fd5b6108876116bc565b6040518082815260200191505060405180910390f35b34156108a857600080fd5b6108d4600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506116c2565b005b34156108e157600080fd5b61090d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611893565b005b6000806006600084815260200190815260200160002060010154119050919050565b600061093c826116c2565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600080600080600080336000813b90506000811415156109a557600080fd5b600660008c81526020019081526020016000209950896001015498508960050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1697503396506109fe89346119e890919063ffffffff16565b9550600089111515610a0f57600080fd5b883410151515610a1e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614151515610a5957600080fd5b610a708a600201548a6119e890919063ffffffff16565b9450610a7b85610f4e565b935083600460008282540192505081905550610ab46064610aa660038c611a0190919063ffffffff16565b611a3490919063ffffffff16565b9250610acb83600354611a4f90919063ffffffff16565b600381905550610adc88888d611a6d565b888a60020181905550610aee89611c4f565b8a600101819055508673ffffffffffffffffffffffffffffffffffffffff168b7fe19f1c5545ae7d6e4aefaa61c1af74072206c243a220d9ce38614dc31d1bbb648b6040518082815260200191505060405180910390a38773ffffffffffffffffffffffffffffffffffffffff166108fc610b84610b758787611a4f90919063ffffffff16565b8c6119e890919063ffffffff16565b9081150290604051600060405180830381858888f193505050501515610ba957600080fd5b6000861115610bf3578673ffffffffffffffffffffffffffffffffffffffff166108fc879081150290604051600060405180830381858888f193505050501515610bf257600080fd5b5b426005819055505050505050505050505050565b610c0f6125a4565b6040805190810160405280601681526020017f4574686572457374617465732e696f2045737461746500000000000000000000815250905090565b6000813373ffffffffffffffffffffffffffffffffffffffff16610c6d826111d2565b73ffffffffffffffffffffffffffffffffffffffff16141515610c8f57600080fd5b610c98836111d2565b91508173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515610cd557600080fd5b6000610ce084610e43565b73ffffffffffffffffffffffffffffffffffffffff16141580610d1a575060008473ffffffffffffffffffffffffffffffffffffffff1614155b15610dd757836008600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a35b50505050565b6000600154905090565b60066020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905086565b60006008600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610edb57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6003549081150290604051600060405180830381858888f193505050501515610f3e57600080fd5b6000600381905550565b60055481565b6000600c54821015610f8857610f816064610f73600a85611a0190919063ffffffff16565b611a3490919063ffffffff16565b905061105a565b600d54821015610fc057610fb96064610fab600985611a0190919063ffffffff16565b611a3490919063ffffffff16565b905061105a565b600e54821015610ff857610ff16064610fe3600885611a0190919063ffffffff16565b611a3490919063ffffffff16565b905061105a565b600f5482101561103057611029606461101b600785611a0190919063ffffffff16565b611a3490919063ffffffff16565b905061105a565b6110576064611049600585611a0190919063ffffffff16565b611a3490919063ffffffff16565b90505b919050565b6110676125b8565b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156110f057602002820191906000526020600020905b8154815260200190600101908083116110dc575b50505050509050919050565b6000611107826116c2565b600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156111ce57600080fd5b5050565b6000806007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561124757600080fd5b80915050919050565b60045481565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490509050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ff57600080fd5b600090505b8888905081101561138e57611381898983818110151561132057fe5b90506020020135888884818110151561133557fe5b90506020020135878785818110151561134a57fe5b90506020020135868686818110151561135f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166113be565b8080600101915050611304565b505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561141b57600080fd5b60008411151561142a57600080fd5b6000600660008781526020019081526020016000206001015414151561144f57600080fd5b600660008681526020019081526020016000209050818160050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114b084611c4f565b8160010181905550838160020181905550828160030181905550838160000181905550600280548060010182816114e791906125cc565b9160005260206000209001600087909190915055506115068286611d60565b5050505050565b600080600080600061151d6125f8565b6006600088815260200190815260200160002060c0604051908101604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505090508060a00151816000015182602001516115e28460200151611c4f565b8460600151955095509550955095505091939590929450565b6116036125a4565b6040805190810160405280600281526020017f4545000000000000000000000000000000000000000000000000000000000000815250905090565b803373ffffffffffffffffffffffffffffffffffffffff1661165f826111d2565b73ffffffffffffffffffffffffffffffffffffffff1614151561168157600080fd5b61168c338484611dfa565b505050565b61169b3382611f65565b15156116a657600080fd5b6116b96116b2826111d2565b3383611dfa565b50565b60035481565b6116ca6125b8565b600080600080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561175957602002820191906000526020600020905b815481526020019060010190808311611745575b50505050509450600092505b845183101561183e5761271060066000878681518110151561178357fe5b90602001906020020151815260200190815260200160002060030154600454028115156117ac57fe5b0491506117ef6006600087868151811015156117c457fe5b90602001906020020151815260200190815260200160002060040154836119e890919063ffffffff16565b905080840193508060066000878681518110151561180957fe5b906020019060200201518152602001908152602001600020600401600082825401925050819055508280600101935050611765565b83600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118ee57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561192a57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008282111515156119f657fe5b818303905092915050565b60008082840290506000841480611a225750828482811515611a1f57fe5b04145b1515611a2a57fe5b8091505092915050565b6000808284811515611a4257fe5b0490508091505092915050565b6000808284019050838110151515611a6357fe5b8091505092915050565b611a768161090f565b1515611a8157600080fd5b8273ffffffffffffffffffffffffffffffffffffffff166006600083815260200190815260200160002060050160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611af157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611b2d57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611b6857600080fd5b611b728382611fa6565b611b7c8382612075565b611b86838261215e565b816006600083815260200190815260200160002060050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611be582826123e5565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000600c54821015611c8957611c82605f611c7460c885611a0190919063ffffffff16565b611a3490919063ffffffff16565b9050611d5b565b600d54821015611cc157611cba6060611cac608785611a0190919063ffffffff16565b611a3490919063ffffffff16565b9050611d5b565b600e54821015611cf957611cf26061611ce4607d85611a0190919063ffffffff16565b611a3490919063ffffffff16565b9050611d5b565b600f54821015611d3157611d2a6061611d1c607585611a0190919063ffffffff16565b611a3490919063ffffffff16565b9050611d5b565b611d586062611d4a607385611a0190919063ffffffff16565b611a3490919063ffffffff16565b90505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611d9c57600080fd5b611da682826123e5565b8173ffffffffffffffffffffffffffffffffffffffff1660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b816000813b9050600081141515611e1057600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611e4c57600080fd5b611e55836111d2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614151515611e8f57600080fd5b8473ffffffffffffffffffffffffffffffffffffffff16611eaf846111d2565b73ffffffffffffffffffffffffffffffffffffffff16141515611ed157600080fd5b611edb8584612075565b611ee58584611fa6565b611eef858461215e565b611ef984846123e5565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16611f8783610e43565b73ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600080612710600660008581526020019081526020016000206003015460045402811515611fd057fe5b049150611ffc6006600085815260200190815260200160002060040154836119e890919063ffffffff16565b905080600660008581526020019081526020016000206004016000828254019250508190555080600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555050505050565b8173ffffffffffffffffffffffffffffffffffffffff16612095826111d2565b73ffffffffffffffffffffffffffffffffffffffff161415156120b757600080fd5b60006008600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a35050565b60008060008473ffffffffffffffffffffffffffffffffffffffff16612183856111d2565b73ffffffffffffffffffffffffffffffffffffffff161415156121a557600080fd5b600a60008581526020019081526020016000205492506121d760016121c987611256565b6119e890919063ffffffff16565b9150600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110151561222557fe5b906000526020600020900154905060006007600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811015156122d357fe5b9060005260206000209001819055506000600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208381548110151561233057fe5b906000526020600020900181905550600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054809190600190036123919190612645565b506000600a60008681526020019081526020016000208190555082600a6000838152602001908152602001600020819055506123d8600180546119e890919063ffffffff16565b6001819055505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff166007600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561245457600080fd5b826007600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826006600084815260200190815260200160002060050160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061250483611256565b9050600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480600101828161255791906125cc565b91600052602060002090016000849091909150555080600a60008481526020019081526020016000208190555061259960018054611a4f90919063ffffffff16565b600181905550505050565b602060405190810160405280600081525090565b602060405190810160405280600081525090565b8154818355818115116125f3578183600052602060002091820191016125f29190612671565b5b505050565b60c0604051908101604052806000815260200160008152602001600081526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b81548183558181151161266c5781836000526020600020918201910161266b9190612671565b5b505050565b61269391905b8082111561268f576000816000905550600101612677565b5090565b905600a165627a7a72305820488df0e3104521804a33b66f6273ce9755178542cabaa76629a5e0755e1668cf0029

Swarm Source

bzzr://488df0e3104521804a33b66f6273ce9755178542cabaa76629a5e0755e1668cf
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.