Contract 0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb

Contract Overview

Balance:
87.814174993406042083 Ether
TxHash Block Age From To Value [TxFee]
0x2f842305441069b758262711a0a99decf906a601cac364b7c60531d477afdebe51956227 days 5 hrs ago0x368daa9d3670418de343cd32f5333405cf34afab IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0 Ether0.000067802
0xc62ce1dc38250f72c63da384cde8ac78926293915102f1ec0397caebbae9bdfc51956227 days 5 hrs ago0x368daa9d3670418de343cd32f5333405cf34afab IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0 Ether0.000097738
0x53df8aac1e5f12cab0a09a6da17ba04bc921d1d6323cfb9285273320f7a5cf9951956207 days 5 hrs ago0x368daa9d3670418de343cd32f5333405cf34afab IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0 Ether0.000097738
0x90e9812d699217b8044b1ccd7953bc2b0443ac6da6f1774236e7990456bb055a493716547 days 2 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0 Ether0.000097802
0xda5331bb01c663a9d3f9435bb14ec0189f1bc2597d11e5cd67316f6cba749948493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.018781106207155 Ether0.00129232
0x3128f538d2d5d0f1f73558042de4567f92321dced327552d4be944e48f0af0f8493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.413184336557423 Ether0.0012936
0xd876ab587bbec200609b552479c8e6afde7c2b45296033d315c251b1b90e331c493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.319278805521645 Ether0.00129232
0x2f8d91b44b293723ed8d7a1f6123e9fe4902a50a5734842457e0b60df01631c5493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.037562212414311 Ether0.0012936
0x2dedeca218817de1cccd30498a68116fe95e4e594ffd3ee0e80037a49abdfff5493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.028171659310733 Ether0.0012936
0x7dc7e13c8873b503ae3ad2ec840439b6457581c724b1afeb61eb15eef017ff19493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.056343318621466 Ether0.0012936
0x9143a6aaba543412eb060d9a01e3c7332e119934641a0b792e872fd8e7d7ed4e493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.018781106207155 Ether0.0012936
0xe8b1ad009b35c024b0d2472995789e65fda682e95d72e06b5d026fa4e6850838493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.0845149779322 Ether0.0012936
0xf44de2e582aa1e2e220ad774a2a6d54ee1571f845fb1ae6d18f2357436fae708493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.018781106207155 Ether0.0012936
0x859a802cba4763db87692d93e9e0a79604cdbafa0883ca96f8a38709719b0a4e493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.046952765517889 Ether0.0012936
0xd005ed0d7755540b2f274120c3033603f9de9c801d8cf30316bdfa098108102f493557647 days 8 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.272326040003756 Ether0.00129232
0x611945d6b6aa317f3db3ba6f88a28a0de626fbc8434060f80ae8d410e6bbbb89493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.028280542986425 Ether0.00129232
0xd9514d39d410803940b273668a4def52d17ddf0da8b4cfab18636187d04a78b0493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.235671191553544 Ether0.0012936
0x4eae166041b669df658833a1e625a29d4a926495d580d572c5f5f341c1c36e02493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.150829562594268 Ether0.00129232
0x127d91390297a5e9da7e19ae3cfb9bf927a6e45fb48e5d9f72ae7ef3f462d16b493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.094268476621417 Ether0.0012936
0x29cb6cad722837a295759348d8b7cd46d6e5866bb1ed8c871be7d2f06ec59faf493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.037707390648567 Ether0.0012936
0x742e483922f4829c491861927e8355f0ba07e9337e134b8cd6c1f49a03b74bf7493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.131975867269984 Ether0.0012936
0x4eb25ba1c49e5df8228382a8361052a289ce33acf8cf0e95472a905316962d4d493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.028280542986425 Ether0.0012936
0xfb33948093d93d388c0fb3adb82715a70dfb1b790e9813a18524cd0519e2957c493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.122549019607843 Ether0.0012936
0xb3354e6fdf5292cdbaa69fcadf5f701658b4dc18fe3aba02604b5bda12280ce2493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.009426847662141 Ether0.0012936
0xaf7a6370c3b3ab3883cd54d3c4f72736c8cd397feca52742422c6752603e84f8493507247 days 10 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a IN  0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0.075414781297134 Ether0.0012936
[ Download CSV Export 

Latest 25 internal transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0x2f842305441069b758262711a0a99decf906a601cac364b7c60531d477afdebe51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x368daa9d3670418de343cd32f5333405cf34afab0.093047123264734078 Ether
0x2f842305441069b758262711a0a99decf906a601cac364b7c60531d477afdebe51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x2f842305441069b758262711a0a99decf906a601cac364b7c60531d477afdebe51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x2f842305441069b758262711a0a99decf906a601cac364b7c60531d477afdebe51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x2f842305441069b758262711a0a99decf906a601cac364b7c60531d477afdebe51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x2f842305441069b758262711a0a99decf906a601cac364b7c60531d477afdebe51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x2f842305441069b758262711a0a99decf906a601cac364b7c60531d477afdebe51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x2f842305441069b758262711a0a99decf906a601cac364b7c60531d477afdebe51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xc62ce1dc38250f72c63da384cde8ac78926293915102f1ec0397caebbae9bdfc51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x368daa9d3670418de343cd32f5333405cf34afab0.029637198060236226 Ether
0xc62ce1dc38250f72c63da384cde8ac78926293915102f1ec0397caebbae9bdfc51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xc62ce1dc38250f72c63da384cde8ac78926293915102f1ec0397caebbae9bdfc51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xc62ce1dc38250f72c63da384cde8ac78926293915102f1ec0397caebbae9bdfc51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xc62ce1dc38250f72c63da384cde8ac78926293915102f1ec0397caebbae9bdfc51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xc62ce1dc38250f72c63da384cde8ac78926293915102f1ec0397caebbae9bdfc51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xc62ce1dc38250f72c63da384cde8ac78926293915102f1ec0397caebbae9bdfc51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xc62ce1dc38250f72c63da384cde8ac78926293915102f1ec0397caebbae9bdfc51956227 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x53df8aac1e5f12cab0a09a6da17ba04bc921d1d6323cfb9285273320f7a5cf9951956207 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x368daa9d3670418de343cd32f5333405cf34afab0.383434330560576175 Ether
0x53df8aac1e5f12cab0a09a6da17ba04bc921d1d6323cfb9285273320f7a5cf9951956207 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x53df8aac1e5f12cab0a09a6da17ba04bc921d1d6323cfb9285273320f7a5cf9951956207 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x53df8aac1e5f12cab0a09a6da17ba04bc921d1d6323cfb9285273320f7a5cf9951956207 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x53df8aac1e5f12cab0a09a6da17ba04bc921d1d6323cfb9285273320f7a5cf9951956207 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x53df8aac1e5f12cab0a09a6da17ba04bc921d1d6323cfb9285273320f7a5cf9951956207 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x53df8aac1e5f12cab0a09a6da17ba04bc921d1d6323cfb9285273320f7a5cf9951956207 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x53df8aac1e5f12cab0a09a6da17ba04bc921d1d6323cfb9285273320f7a5cf9951956207 days 5 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x90e9812d699217b8044b1ccd7953bc2b0443ac6da6f1774236e7990456bb055a493716547 days 2 hrs ago0xab37c6746bcfd82ce460b624cf7ebe88e88c0beb0xbb64ac045539bc0e9fffd04399347a8459e8282a0.445443028063555422 Ether
[ Download CSV Export 
Warning: The compiled contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) Solidity Compiler Bugs.

Contract Source Code Verified (Exact Match)

Contract Name:
Asset

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No

Runs (Optimizer):
200

Contract Source Code

pragma solidity 0.4.24;


//------------------------------------------------------------------------------------------------------------------
// Asset contract manages all payments, withdrawls and trading of ownershipUnits for live assets
// All information about assets are stored in Database.sol.
//------------------------------------------------------------------------------------------------------------------
contract Asset {
using SafeMath for uint;

  Database public database;


  //------------------------------------------------------------------------------------------------------------------
  // Constructor
  // @Param: Address of the database contract
  //------------------------------------------------------------------------------------------------------------------
  constructor(address _database)
  public {
    database = Database(_database);
  }

  //------------------------------------------------------------------------------------------------------------------
  // Revenue produced by the asset will be sent here
  // Invariants: Requires Eth is sent with transaction | Asset must be "live" (stage 4)
  // @Param: The ID of the asset to send to
  // @Param: A note that can be left by the payee
  //------------------------------------------------------------------------------------------------------------------
  function receiveIncome(bytes32 _assetID, bytes32 _note)
  external
  payable
  requiresEther
  atStage(_assetID, uint(4))
  returns (bool)  {
    uint assetIncome = database.uintStorage(keccak256(abi.encodePacked("assetIncome", _assetID)));
    uint managerShare = msg.value.getFractionalAmount(database.uintStorage(keccak256(abi.encodePacked("managerPercentage", _assetID))));
    require(setManagerIncome(_assetID, managerShare));
    database.setUint(keccak256(abi.encodePacked("assetIncome", _assetID)), assetIncome.add(msg.value.sub(managerShare)));
    emit LogIncomeReceived(msg.sender, msg.value, _assetID, _note);
    return true;
  }


  //------------------------------------------------------------------------------------------------------------------
  // Revenue produced by the asset will be sent here
  // Invariants: Requires Eth is sent with transaction | Asset must be "live" (stage 4)
  // @Param: The ID of the asset earning income
  // @Param: The amount of WEI owed to the staker or manager
  //------------------------------------------------------------------------------------------------------------------
  function setManagerIncome(bytes32 _assetID, uint _managerAmount)
  internal
  returns (bool) {
      address manager = database.addressStorage(keccak256(abi.encodePacked("assetManager", _assetID)));
      uint managerOwed = database.uintStorage(keccak256(abi.encodePacked("managerIncome", manager)));
      database.setUint(keccak256(abi.encodePacked("managerIncome", manager)), managerOwed.add(_managerAmount));
      emit LogManagerIncomeEarned(_assetID, manager, _managerAmount);
      return true;
  }

  //------------------------------------------------------------------------------------------------------------------
  // Revenue produced by the asset will be sent here
  // @dev: Requires Eth is sent with transaction | Asset must be "live" (stage 4)
  // @param: bytes32: The ID of the asset
  //------------------------------------------------------------------------------------------------------------------
  function withdrawManagerIncome(bytes32 _assetID)
  external
  atStage(_assetID, uint(4))
  returns (bool) {
    uint owed = database.uintStorage(keccak256(abi.encodePacked("managerIncome", msg.sender)));
    require(owed > 0);
    database.setUint(keccak256(abi.encodePacked("managerIncome", msg.sender)), 0);
    msg.sender.transfer(owed);
    emit LogManagerIncomeWithdraw(_assetID, msg.sender, owed);
  }

  //------------------------------------------------------------------------------------------------------------------
  // Asset funders can receive their share of the income here
  // Invariants: Asset must be live. Sender must have ownershipUnits in the asset. There must be income earned.
  // @Param: The assetID this funder is trying to withdraw from
  // @Param: Boolean, whether or not the user wants the withdraw to go to an external address
  //------------------------------------------------------------------------------------------------------------------
  function withdraw(bytes32 _assetID)
  external
  returns (bool){
    uint ownershipUnits = database.uintStorage(keccak256(abi.encodePacked("ownershipUnits", _assetID, msg.sender)));
    require (ownershipUnits > uint(0));
    uint amountRaised = database.uintStorage(keccak256(abi.encodePacked("amountRaised", _assetID)));
    uint totalPaidToFunders = database.uintStorage(keccak256(abi.encodePacked("totalPaidToFunders", _assetID)));
    uint totalPaidToFunder = database.uintStorage(keccak256(abi.encodePacked("totalPaidToFunder", _assetID, msg.sender)));
    uint assetIncome = database.uintStorage(keccak256(abi.encodePacked("assetIncome", _assetID)));
    uint payment = (assetIncome.mul(ownershipUnits).div(amountRaised)).sub(totalPaidToFunder);
    assert (payment != uint(0));
    database.setUint(keccak256(abi.encodePacked("totalPaidToFunder", _assetID, msg.sender)), totalPaidToFunder.add(payment));
    database.setUint(keccak256(abi.encodePacked("totalPaidToFunders", _assetID)), totalPaidToFunders.add(payment));
    msg.sender.transfer(payment);
    emit LogIncomeWithdrawl(msg.sender, payment);
    return true;
  }

  //------------------------------------------------------------------------------------------------------------------
  // Asset funders can receive their share of the income here
  // Invariants: Asset must be live. Sender must have ownershipUnits in the asset. There must be income earned.
  // @Param: The assetID this funder is trying to withdraw from
  // @Param: Boolean, whether or not the user wants the withdraw to go to an external address
  //------------------------------------------------------------------------------------------------------------------
  function batchWithdraw(bytes32[] _assetIDs)
  external
  whenNotPaused
  returns (bool){
    require(_assetIDs.length < 5);
    uint payment;
    for (uint i = 0; i < _assetIDs.length; i++){
      bytes32 assetID = _assetIDs[i];
      uint ownershipUnits = database.uintStorage(keccak256(abi.encodePacked("ownershipUnits", assetID, msg.sender)));
      require (ownershipUnits > uint(0));
      uint amountRaised = database.uintStorage(keccak256(abi.encodePacked("amountRaised", assetID)));
      uint totalPaidToFunders = database.uintStorage(keccak256(abi.encodePacked("totalPaidToFunders", assetID)));
      uint totalPaidToFunder = database.uintStorage(keccak256(abi.encodePacked("totalPaidToFunder", assetID, msg.sender)));
      uint assetIncome = database.uintStorage(keccak256(abi.encodePacked("assetIncome", assetID)));
      uint thisPayment = (assetIncome.mul(ownershipUnits).div(amountRaised)).sub(totalPaidToFunder);
      assert (thisPayment != uint(0));
      assert (totalPaidToFunders <= assetIncome);    // Don't let amount paid to funders exceed amount received
      database.setUint(keccak256(abi.encodePacked("totalPaidToFunder", assetID, msg.sender)), totalPaidToFunder.add(thisPayment));
      database.setUint(keccak256(abi.encodePacked("totalPaidToFunders", assetID)), totalPaidToFunders.add(thisPayment));
      payment = payment.add(thisPayment);
    }
    msg.sender.transfer(payment);
    emit LogIncomeWithdrawl(msg.sender, payment);
    return true;
  }

  //------------------------------------------------------------------------------------------------------------------
  // Returns the amount of WEI owed to the asset owner
  // @Param: The ID of the asset
  // @Param: The address of the asset owner
  //------------------------------------------------------------------------------------------------------------------
  function getAmountOwed(bytes32 _assetID, address _user)
  public
  view
  returns (uint){
    uint ownershipUnits = database.uintStorage(keccak256(abi.encodePacked("ownershipUnits", _assetID, _user)));
    if (ownershipUnits == uint(0)) { return uint(0); }
    uint amountRaised = database.uintStorage(keccak256(abi.encodePacked("amountRaised", _assetID)));
    uint totalPaidToFunder = database.uintStorage(keccak256(abi.encodePacked("totalPaidToFunder", _assetID, _user)));
    uint assetIncome = database.uintStorage(keccak256(abi.encodePacked("assetIncome", _assetID)));
    return assetIncome.mul(ownershipUnits).div(amountRaised).sub(totalPaidToFunder);
  }



  //------------------------------------------------------------------------------------------------------------------
  // Must be authorized by 1 of the 3 owners and then can be called by any of the other 2
  // @Param: The address of the owner who authorized this function to be called in
  // Invariants: Must be 1 of 3 owners. Cannot be called by same owner who authorized the function to be called.
  //------------------------------------------------------------------------------------------------------------------
  function destroy(address _functionInitiator, address _holdingAddress)
  anyOwner
  public {
    require(_functionInitiator != msg.sender);
    bytes32 functionHash = keccak256(abi.encodePacked(address(this), _functionInitiator, "destroy", keccak256(abi.encodePacked(_holdingAddress))));
    require(database.boolStorage(functionHash));
    database.setBool(functionHash, false);
    emit LogDestruction(_holdingAddress, address(this).balance, msg.sender);
    selfdestruct(_holdingAddress);
  }

  //------------------------------------------------------------------------------------------------------------------
  //                                            Modifiers
  //------------------------------------------------------------------------------------------------------------------

  //------------------------------------------------------------------------------------------------------------------
  // Checks that the asset is at the proper funding stage
  //------------------------------------------------------------------------------------------------------------------
  modifier atStage(bytes32 _assetID, uint _stage) {
    require(database.uintStorage(keccak256(abi.encodePacked("fundingStage", _assetID))) == _stage);
    _;
  }

  //------------------------------------------------------------------------------------------------------------------
  // Checks that the user has reached a high enough access level
  //------------------------------------------------------------------------------------------------------------------
  modifier onlyApproved(uint8 _accessLevel) {
    require(database.uintStorage(keccak256(abi.encodePacked("userAccess", msg.sender))) >= _accessLevel);
    require(database.uintStorage(keccak256(abi.encodePacked("userAccessExpiration", msg.sender))) > now);
    _;
  }

  //------------------------------------------------------------------------------------------------------------------
  // Makes sure function won't run when contract has been paused
  //------------------------------------------------------------------------------------------------------------------
  modifier whenNotPaused {
    require(!database.boolStorage(keccak256(abi.encodePacked("pause", this))));
    _;
  }

  //------------------------------------------------------------------------------------------------------------------
  // Throw if Ether hasn't been sent
  //------------------------------------------------------------------------------------------------------------------
  modifier requiresEther() {
    require(msg.value > 0);
    _;
  }

  //------------------------------------------------------------------------------------------------------------------
  // Verify that the sender is a registered owner
  //------------------------------------------------------------------------------------------------------------------
  modifier anyOwner {
    require(database.boolStorage(keccak256(abi.encodePacked("owner", msg.sender))));
    _;
  }

  //------------------------------------------------------------------------------------------------------------------
  // Fallback
  //------------------------------------------------------------------------------------------------------------------
  function ()
  public {
    revert();
  }

  //------------------------------------------------------------------------------------------------------------------
  //------------------------------------------------------------------------------------------------------------------
  //                                     Events
  //------------------------------------------------------------------------------------------------------------------
  //------------------------------------------------------------------------------------------------------------------

  event LogownershipUnitsTraded(bytes32 _assetID, address _from, address _to, uint _amount);
  event LogDestruction(address indexed _locationSent, uint indexed _amountSent, address indexed _caller);
  event LogIncomeReceived(address _sender, uint indexed _amount, bytes32 indexed _assetID, bytes32 _note);
  event LogIncomeWithdrawl(address indexed _funder, uint _amount);
  event LogManagerIncomeWithdraw(bytes32 indexed _assetID, address indexed _manager, uint owed);
  event LogManagerIncomeEarned(bytes32 indexed _assetID, address indexed _manager, uint _managerAmount);
}

// ---------------------------------------------------------------------------------
// This contract holds all long-term data for the MyBit smart-contract systems
// All values are stored in mappings using a bytes32 keys.
// The bytes32 is derived from keccak256(variableName, uniqueID) => value
// ---------------------------------------------------------------------------------
contract Database {

    // --------------------------------------------------------------------------------------
    // Storage Variables
    // --------------------------------------------------------------------------------------
    mapping(bytes32 => uint) public uintStorage;
    mapping(bytes32 => string) public stringStorage;
    mapping(bytes32 => address) public addressStorage;
    mapping(bytes32 => bytes) public bytesStorage;
    mapping(bytes32 => bytes32) public bytes32Storage;
    mapping(bytes32 => bool) public boolStorage;
    mapping(bytes32 => int) public intStorage;



    // --------------------------------------------------------------------------------------
    // Constructor: Sets the owners of the platform
    // Owners must set the contract manager to add more contracts
    // --------------------------------------------------------------------------------------
    constructor(address _ownerOne, address _ownerTwo, address _ownerThree)
    public {
        boolStorage[keccak256(abi.encodePacked("owner", _ownerOne))] = true;
        boolStorage[keccak256(abi.encodePacked("owner", _ownerTwo))] = true;
        boolStorage[keccak256(abi.encodePacked("owner", _ownerThree))] = true;
        emit LogInitialized(_ownerOne, _ownerTwo, _ownerThree);
    }


    // --------------------------------------------------------------------------------------
    // ContractManager will be the only contract that can add/remove contracts on the platform.
    // Invariants: ContractManager address must not be null.
    // ContractManager must not be set, Only owner can call this function.
    // --------------------------------------------------------------------------------------
    function setContractManager(address _contractManager)
    external {
        require(_contractManager != address(0));
        require(boolStorage[keccak256(abi.encodePacked("owner", msg.sender))]);
        require(addressStorage[keccak256(abi.encodePacked("contract", "ContractManager"))] == address(0));
        addressStorage[keccak256(abi.encodePacked("contract", "ContractManager"))] = _contractManager;
        boolStorage[keccak256(abi.encodePacked("contract", _contractManager))] = true;
    }

    // --------------------------------------------------------------------------------------
    //  Storage functions
    // --------------------------------------------------------------------------------------

    function setAddress(bytes32 _key, address _value)
    onlyMyBitContract
    external {
        addressStorage[_key] = _value;
    }

    function setUint(bytes32 _key, uint _value)
    onlyMyBitContract
    external {
        uintStorage[_key] = _value;
    }

    function setString(bytes32 _key, string _value)
    onlyMyBitContract
    external {
        stringStorage[_key] = _value;
    }

    function setBytes(bytes32 _key, bytes _value)
    onlyMyBitContract
    external {
        bytesStorage[_key] = _value;
    }

    function setBytes32(bytes32 _key, bytes32 _value)
    onlyMyBitContract
    external {
        bytes32Storage[_key] = _value;
    }

    function setBool(bytes32 _key, bool _value)
    onlyMyBitContract
    external {
        boolStorage[_key] = _value;
    }

    function setInt(bytes32 _key, int _value)
    onlyMyBitContract
    external {
        intStorage[_key] = _value;
    }


    // --------------------------------------------------------------------------------------
    // Deletion functions
    // --------------------------------------------------------------------------------------

    function deleteAddress(bytes32 _key)
    onlyMyBitContract
    external {
        delete addressStorage[_key];
    }

    function deleteUint(bytes32 _key)
    onlyMyBitContract
    external {
        delete uintStorage[_key];
    }

    function deleteString(bytes32 _key)
    onlyMyBitContract
    external {
        delete stringStorage[_key];
    }

    function deleteBytes(bytes32 _key)
    onlyMyBitContract
    external {
        delete bytesStorage[_key];
    }

    function deleteBytes32(bytes32 _key)
    onlyMyBitContract
    external {
        delete bytes32Storage[_key];
    }

    function deleteBool(bytes32 _key)
    onlyMyBitContract
    external {
        delete boolStorage[_key];
    }

    function deleteInt(bytes32 _key)
    onlyMyBitContract
    external {
        delete intStorage[_key];
    }



    // --------------------------------------------------------------------------------------
    // Caller must be registered as a contract within the MyBit Dapp through ContractManager.sol
    // --------------------------------------------------------------------------------------
    modifier onlyMyBitContract() {
        require(boolStorage[keccak256(abi.encodePacked("contract", msg.sender))]);
        _;
    }

    // --------------------------------------------------------------------------------------
    // Events
    // --------------------------------------------------------------------------------------
    event LogInitialized(address indexed _ownerOne, address indexed _ownerTwo, address indexed _ownerThree);

}

// https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/math/SafeMath.sol

  //--------------------------------------------------------------------------------------------------
  // Math operations with safety checks that throw on error
  //--------------------------------------------------------------------------------------------------
library SafeMath {

  //--------------------------------------------------------------------------------------------------
  // Multiplies two numbers, throws on overflow.
  //--------------------------------------------------------------------------------------------------
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  //--------------------------------------------------------------------------------------------------
  // Integer division of two numbers, truncating the quotient.
  //--------------------------------------------------------------------------------------------------
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    // uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return a / b;
  }

  //--------------------------------------------------------------------------------------------------
  // Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  //--------------------------------------------------------------------------------------------------
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  //--------------------------------------------------------------------------------------------------
  // Adds two numbers, throws on overflow.
  //--------------------------------------------------------------------------------------------------
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }

  //--------------------------------------------------------------------------------------------------
  // Returns fractional amount
  //--------------------------------------------------------------------------------------------------
  function getFractionalAmount(uint256 _amount, uint256 _percentage)
  internal
  pure
  returns (uint256) {
    return div(mul(_amount, _percentage), 100);
  }

  //--------------------------------------------------------------------------------------------------
  // Convert bytes to uint
  // TODO: needs testing: use SafeMath
  //--------------------------------------------------------------------------------------------------
  function bytesToUint(bytes b) internal pure returns (uint256) {
      uint256 number;
      for(uint i=0; i < b.length; i++){
          number = number + uint(b[i]) * (2**(8 * (b.length - (i+1))));
      }
      return number;
  }

}

Contract ABI

[{"constant":false,"inputs":[{"name":"_assetIDs","type":"bytes32[]"}],"name":"batchWithdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_functionInitiator","type":"address"},{"name":"_holdingAddress","type":"address"}],"name":"destroy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"database","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_assetID","type":"bytes32"}],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_assetID","type":"bytes32"}],"name":"withdrawManagerIncome","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_assetID","type":"bytes32"},{"name":"_user","type":"address"}],"name":"getAmountOwed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_assetID","type":"bytes32"},{"name":"_note","type":"bytes32"}],"name":"receiveIncome","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[{"name":"_database","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_assetID","type":"bytes32"},{"indexed":false,"name":"_from","type":"address"},{"indexed":false,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"LogownershipUnitsTraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_locationSent","type":"address"},{"indexed":true,"name":"_amountSent","type":"uint256"},{"indexed":true,"name":"_caller","type":"address"}],"name":"LogDestruction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_sender","type":"address"},{"indexed":true,"name":"_amount","type":"uint256"},{"indexed":true,"name":"_assetID","type":"bytes32"},{"indexed":false,"name":"_note","type":"bytes32"}],"name":"LogIncomeReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_funder","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"LogIncomeWithdrawl","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetID","type":"bytes32"},{"indexed":true,"name":"_manager","type":"address"},{"indexed":false,"name":"owed","type":"uint256"}],"name":"LogManagerIncomeWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetID","type":"bytes32"},{"indexed":true,"name":"_manager","type":"address"},{"indexed":false,"name":"_managerAmount","type":"uint256"}],"name":"LogManagerIncomeEarned","type":"event"}]

Contract Creation Code

608060405234801561001057600080fd5b50604051602080613e4983398101806040528101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050613dc6806100836000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806359c19cee1461009557806362b40f9f146100e8578063713b563f1461014b5780638e19899e146101a25780639fd58182146101eb578063b9b6c2d414610234578063c71c6c5514610299575b34801561008f57600080fd5b50600080fd5b3480156100a157600080fd5b506100ce6004803603810190808035906020019082018035906020019190919293919293905050506102e3565b604051808215151515815260200191505060405180910390f35b3480156100f457600080fd5b50610149600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061117a565b005b34801561015757600080fd5b50610160611795565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ae57600080fd5b506101d160048036038101908080356000191690602001909291905050506117ba565b604051808215151515815260200191505060405180910390f35b3480156101f757600080fd5b5061021a600480360381019080803560001916906020019092919050505061241b565b604051808215151515815260200191505060405180910390f35b34801561024057600080fd5b506102836004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129b9565b6040518082815260200191505060405180910390f35b6102c9600480360381019080803560001916906020019092919080356000191690602001909291905050506130b5565b604051808215151515815260200191505060405180910390f35b6000806000806000806000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b7bfda03060405160200180807f70617573650000000000000000000000000000000000000000000000000000008152506005018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156103e757805182526020820191506020810190506020830392506103c2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561046e57600080fd5b505af1158015610482573d6000803e3d6000fd5b505050506040513d602081101561049857600080fd5b81019080805190602001909291905050501515156104b557600080fd5b60058c8c90501015156104c757600080fd5b600097505b8b8b90508810156110d2578b8b8981811015156104e557fe5b905060200201356000191696506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce883360405160200180807f6f776e657273686970556e697473000000000000000000000000000000000000815250600e0183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b6020831015156105f757805182526020820191506020810190506020830392506105d2565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561067e57600080fd5b505af1158015610692573d6000803e3d6000fd5b505050506040513d60208110156106a857600080fd5b810190808051906020019092919050505095506000861115156106ca57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8860405160200180807f616d6f756e745261697365640000000000000000000000000000000000000000815250600c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561078c5780518252602082019150602081019050602083039250610767565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561081357600080fd5b505af1158015610827573d6000803e3d6000fd5b505050506040513d602081101561083d57600080fd5b810190808051906020019092919050505094506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8860405160200180807f746f74616c50616964546f46756e64657273000000000000000000000000000081525060120182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561091257805182526020820191506020810190506020830392506108ed565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561099957600080fd5b505af11580156109ad573d6000803e3d6000fd5b505050506040513d60208110156109c357600080fd5b810190808051906020019092919050505093506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce883360405160200180807f746f74616c50616964546f46756e64657200000000000000000000000000000081525060110183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b602083101515610adb5780518252602082019150602081019050602083039250610ab6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610b6257600080fd5b505af1158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b810190808051906020019092919050505092506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8860405160200180807f6173736574496e636f6d65000000000000000000000000000000000000000000815250600b0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515610c615780518252602082019150602081019050602083039250610c3c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610ce857600080fd5b505af1158015610cfc573d6000803e3d6000fd5b505050506040513d6020811015610d1257600080fd5b81019080805190602001909291905050509150610d5c83610d4e87610d408a876137a390919063ffffffff16565b6137de90919063ffffffff16565b6137f490919063ffffffff16565b905060008114151515610d6b57fe5b818411151515610d7757fe5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a883360405160200180807f746f74616c50616964546f46756e64657200000000000000000000000000000081525060110183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b602083101515610e7c5780518252602082019150602081019050602083039250610e57565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020610ebc848761380d90919063ffffffff16565b6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015610f1d57600080fd5b505af1158015610f31573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a8860405160200180807f746f74616c50616964546f46756e64657273000000000000000000000000000081525060120182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515610ff75780518252602082019150602081019050602083039250610fd2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020611037848861380d90919063ffffffff16565b6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561109857600080fd5b505af11580156110ac573d6000803e3d6000fd5b505050506110c3818a61380d90919063ffffffff16565b985087806001019850506104cc565b3373ffffffffffffffffffffffffffffffffffffffff166108fc8a9081150290604051600060405180830381858888f19350505050158015611118573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f2e5086ab45200e0c8c24cdf6bedc2d2485bb82b66f97b9b3a282445a1b5c35e38a6040518082815260200191505060405180910390a26001995050505050505050505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b7bfda03360405160200180807f6f776e65720000000000000000000000000000000000000000000000000000008152506005018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515611271578051825260208201915060208101905060208303925061124c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156112f857600080fd5b505af115801561130c573d6000803e3d6000fd5b505050506040513d602081101561132257600080fd5b8101908080519060200190929190505050151561133e57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561137957600080fd5b308383604051602001808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561140b57805182526020820191506020810190506020830392506113e6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f64657374726f7900000000000000000000000000000000000000000000000000815250600701826000191660001916815260200193505050506040516020818303038152906040526040518082805190602001908083835b602083101515611540578051825260208201915060208101905060208303925061151b565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633b7bfda0826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561160757600080fd5b505af115801561161b573d6000803e3d6000fd5b505050506040513d602081101561163157600080fd5b8101908080519060200190929190505050151561164d57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663abfdcced8260006040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018215151515815260200192505050600060405180830381600087803b1580156116f257600080fd5b505af1158015611706573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16318373ffffffffffffffffffffffffffffffffffffffff167f8c7ae8776186c2e87b266886e8af282b7fdb52b47993376583987a14656a367860405160405180910390a48173ffffffffffffffffffffffffffffffffffffffff16ff5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce893360405160200180807f6f776e657273686970556e697473000000000000000000000000000000000000815250600e0183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b6020831015156118ca57805182526020820191506020810190506020830392506118a5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b505050506040513d602081101561197b57600080fd5b8101908080519060200190929190505050955060008611151561199d57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8960405160200180807f616d6f756e745261697365640000000000000000000000000000000000000000815250600c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515611a5f5780518252602082019150602081019050602083039250611a3a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611ae657600080fd5b505af1158015611afa573d6000803e3d6000fd5b505050506040513d6020811015611b1057600080fd5b810190808051906020019092919050505094506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8960405160200180807f746f74616c50616964546f46756e64657273000000000000000000000000000081525060120182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515611be55780518252602082019150602081019050602083039250611bc0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611c6c57600080fd5b505af1158015611c80573d6000803e3d6000fd5b505050506040513d6020811015611c9657600080fd5b810190808051906020019092919050505093506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce893360405160200180807f746f74616c50616964546f46756e64657200000000000000000000000000000081525060110183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b602083101515611dae5780518252602082019150602081019050602083039250611d89565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611e3557600080fd5b505af1158015611e49573d6000803e3d6000fd5b505050506040513d6020811015611e5f57600080fd5b810190808051906020019092919050505092506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8960405160200180807f6173736574496e636f6d65000000000000000000000000000000000000000000815250600b0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515611f345780518252602082019150602081019050602083039250611f0f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611fbb57600080fd5b505af1158015611fcf573d6000803e3d6000fd5b505050506040513d6020811015611fe557600080fd5b8101908080519060200190929190505050915061202f83612021876120138a876137a390919063ffffffff16565b6137de90919063ffffffff16565b6137f490919063ffffffff16565b90506000811415151561203e57fe5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a893360405160200180807f746f74616c50616964546f46756e64657200000000000000000000000000000081525060110183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b602083101515612143578051825260208201915060208101905060208303925061211e565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020612183848761380d90919063ffffffff16565b6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156121e457600080fd5b505af11580156121f8573d6000803e3d6000fd5b505050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a8960405160200180807f746f74616c50616964546f46756e64657273000000000000000000000000000081525060120182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b6020831015156122be5780518252602082019150602081019050602083039250612299565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206122fe848861380d90919063ffffffff16565b6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561235f57600080fd5b505af1158015612373573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123bd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f2e5086ab45200e0c8c24cdf6bedc2d2485bb82b66f97b9b3a282445a1b5c35e3826040518082815260200191505060405180910390a260019650505050505050919050565b600080826004806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8460405160200180807f66756e64696e6753746167650000000000000000000000000000000000000000815250600c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b6020831015156124e457805182526020820191506020810190506020830392506124bf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561256b57600080fd5b505af115801561257f573d6000803e3d6000fd5b505050506040513d602081101561259557600080fd5b81019080805190602001909291905050501415156125b257600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce3360405160200180807f6d616e61676572496e636f6d6500000000000000000000000000000000000000815250600d018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b6020831015156126a75780518252602082019150602081019050602083039250612682565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561272e57600080fd5b505af1158015612742573d6000803e3d6000fd5b505050506040513d602081101561275857600080fd5b8101908080519060200190929190505050925060008311151561277a57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a3360405160200180807f6d616e61676572496e636f6d6500000000000000000000000000000000000000815250600d018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b60208310151561286f578051825260208201915060208101905060208303925061284a565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060006040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b1580156128ff57600080fd5b505af1158015612913573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015801561295d573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff1685600019167f38f5ccc9a1e2d5f31643fc98d4b5a81df5d0a36c9f748b4f284525b20328bff2856040518082815260200191505060405180910390a3505050919050565b60008060008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce888860405160200180807f6f776e657273686970556e697473000000000000000000000000000000000000815250600e0183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b602083101515612ac65780518252602082019150602081019050602083039250612aa1565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612b4d57600080fd5b505af1158015612b61573d6000803e3d6000fd5b505050506040513d6020811015612b7757600080fd5b810190808051906020019092919050505093506000841415612b9c57600094506130ab565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8860405160200180807f616d6f756e745261697365640000000000000000000000000000000000000000815250600c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515612c5e5780518252602082019150602081019050602083039250612c39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612ce557600080fd5b505af1158015612cf9573d6000803e3d6000fd5b505050506040513d6020811015612d0f57600080fd5b810190808051906020019092919050505092506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce888860405160200180807f746f74616c50616964546f46756e64657200000000000000000000000000000081525060110183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401925050506040516020818303038152906040526040518082805190602001908083835b602083101515612e275780518252602082019150602081019050602083039250612e02565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015612eae57600080fd5b505af1158015612ec2573d6000803e3d6000fd5b505050506040513d6020811015612ed857600080fd5b810190808051906020019092919050505091506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8860405160200180807f6173736574496e636f6d65000000000000000000000000000000000000000000815250600b0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515612fad5780518252602082019150602081019050602083039250612f88565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561303457600080fd5b505af1158015613048573d6000803e3d6000fd5b505050506040513d602081101561305e57600080fd5b810190808051906020019092919050505090506130a88261309a8561308c88866137a390919063ffffffff16565b6137de90919063ffffffff16565b6137f490919063ffffffff16565b94505b5050505092915050565b600080600080341115156130c857600080fd5b846004806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8460405160200180807f66756e64696e6753746167650000000000000000000000000000000000000000815250600c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561318e5780518252602082019150602081019050602083039250613169565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561321557600080fd5b505af1158015613229573d6000803e3d6000fd5b505050506040513d602081101561323f57600080fd5b810190808051906020019092919050505014151561325c57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8860405160200180807f6173736574496e636f6d65000000000000000000000000000000000000000000815250600b0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561331e57805182526020820191506020810190506020830392506132f9565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156133a557600080fd5b505af11580156133b9573d6000803e3d6000fd5b505050506040513d60208110156133cf57600080fd5b810190808051906020019092919050505093506135786000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8960405160200180807f6d616e6167657250657263656e7461676500000000000000000000000000000081525060110182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b6020831015156134a75780518252602082019150602081019050602083039250613482565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561352e57600080fd5b505af1158015613542573d6000803e3d6000fd5b505050506040513d602081101561355857600080fd5b81019080805190602001909291905050503461382b90919063ffffffff16565b92506135848784613849565b151561358f57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a8860405160200180807f6173736574496e636f6d65000000000000000000000000000000000000000000815250600b0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b602083101515613651578051825260208201915060208101905060208303925061362c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206136a361369487346137f490919063ffffffff16565b8861380d90919063ffffffff16565b6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561370457600080fd5b505af1158015613718573d6000803e3d6000fd5b505050508660001916347f3deb6fcc658f219e5dceee1125d19f5fda60e95722a15937b61357fa65cc18af3389604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019250505060405180910390a3600194505050505092915050565b60008060008414156137b857600091506137d7565b82840290508284828115156137c957fe5b041415156137d357fe5b8091505b5092915050565b600081838115156137eb57fe5b04905092915050565b600082821115151561380257fe5b818303905092915050565b600080828401905083811015151561382157fe5b8091505092915050565b600061384161383a84846137a3565b60646137de565b905092915050565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304f49a3a8660405160200180807f61737365744d616e616765720000000000000000000000000000000000000000815250600c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b60208310151561391057805182526020820191506020810190506020830392506138eb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561399757600080fd5b505af11580156139ab573d6000803e3d6000fd5b505050506040513d60208110156139c157600080fd5b810190808051906020019092919050505091506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a855d4ce8360405160200180807f6d616e61676572496e636f6d6500000000000000000000000000000000000000815250600d018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613ac95780518252602082019150602081019050602083039250613aa4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015613b5057600080fd5b505af1158015613b64573d6000803e3d6000fd5b505050506040513d6020811015613b7a57600080fd5b810190808051906020019092919050505090506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e2a4853a8360405160200180807f6d616e61676572496e636f6d6500000000000000000000000000000000000000815250600d018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014019150506040516020818303038152906040526040518082805190602001908083835b602083101515613c825780518252602082019150602081019050602083039250613c5d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020613cc2878561380d90919063ffffffff16565b6040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015613d2357600080fd5b505af1158015613d37573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1685600019167f623385a276294091b6f9bc9479739c7150575e5e6948744e486cc9417286a48f866040518082815260200191505060405180910390a3600192505050929150505600a165627a7a7230582082f2947f94727ab8e7e3c8973dc7344bc7ddbd9172e353498fd714f80f86603e002900000000000000000000000088638d553238ff817900dad9da6a9b1b2884ba5d

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000088638d553238ff817900dad9da6a9b1b2884ba5d

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000088638d553238ff817900dad9da6a9b1b2884ba5d

Swarm Source

bzzr://82f2947f94727ab8e7e3c8973dc7344bc7ddbd9172e353498fd714f80f86603e
Block Age Transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward