Latest 25 transactions from a total of 686 transactions

TxHash Age From To Value [TxFee]
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b6620 days 13 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190 Ether0.00139328
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f720 days 13 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190 Ether0.001392
0xa1fa9cd9086189a8cc163c5caaad51595fb5aefefe84c90c335d86ff2e04238921 days 15 hrs ago0xec67cb7f06856c7af657ed6c81aaf0e87d416057  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f193 Ether0.000090035
0x2b905a910a657547a83916640ae7cf1f0efd1d99d5210229ee7da10606d92f0a23 days 11 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f193.19863 Ether0.000090035
0xa98a3b623661503fd3b799c7c84bf3984014f3c0fcb2749af69514eb14a26f4f23 days 12 hrs ago0x11cf613d319dc923f3248175e0271588f1b26991  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f191.38201 Ether0.000073506
0x8a752ddc3dbbca6a20802fcb52b3a2d0a18e7c54a7c2921388b9d46ea8d4baf523 days 12 hrs ago0x11cf613d319dc923f3248175e0271588f1b26991  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f191.16159 Ether0.000073506
0x0b90e804a50119c5404074825603dc1e8b17bff8b087e4ab9d762a964bb97f2123 days 12 hrs ago0x11cf613d319dc923f3248175e0271588f1b26991  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f191.16531 Ether0.000073506
0x07918f31824753a439e96d99829e7afdc1be2d3ca4cb510bb0c4c5c5f565bf2a23 days 12 hrs ago0x11cf613d319dc923f3248175e0271588f1b26991  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f192.07576 Ether0.000105035
0x017406435ce0c6088ad67ef0b5c18a5df530c4a39d87b5c89c61cec481032ea223 days 12 hrs ago0x11cf613d319dc923f3248175e0271588f1b26991  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f191.33732 Ether0.000105035
0xc46d28510aef1b0baa91be1496beb9c3f9a91833bb7bc6c576baae13698bae8626 days 19 hrs ago0x8e58ffdc6541b60b9a5056f7110ea1dc7a8a86c4  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190.93322 Ether0.000100848
0xdeab33befe3ddf91f2710afa8825dc3687f68f2c83549e55b49abc909c1ae7c726 days 19 hrs ago0x8e58ffdc6541b60b9a5056f7110ea1dc7a8a86c4  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f196 Ether0.000090035
0xbccd924547c0b31374884b4842be3bda876af13736612f134e3b1cbd9a619f6226 days 19 hrs ago0x8e58ffdc6541b60b9a5056f7110ea1dc7a8a86c4  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190.62665 Ether0.000100784
0x05addf64dd8888956b1e9110a32f1e7da02b8eb514edf7b3fc84f8eacbc33bb027 days 22 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190 Ether0.001392
0xc3c1df2387ebae653c9668a67425bebe9df1097cfa06e154d92fc8866037ab0530 days 52 mins ago0x368daa9d3670418de343cd32f5333405cf34afab  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f192 Ether0.000090035
0x153ed8726770b1d6cfb8996b45b20d4c40faefe3432a609179a5d28f2d90f82e32 days 13 hrs ago0x8b9b0d323aa73385e5c284a3db77159307529978  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f1923 Ether0.000105035
0x977264df9dc2c86815d0e834bbac7074854bbd45880ccd5ab281a1740516193e32 days 14 hrs ago0x8b9b0d323aa73385e5c284a3db77159307529978  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f1915.84043 Ether0.000084255
0xee8953b27cc8fa5d991a0a5aec72e79179602bb6e1e6518d273d1f00468d6ebb34 days 23 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190 Ether0.00139328
0xb1408d75e3b3cb8fcedba13108b9080a8ee2f762b72efcec3b14e52dc745c1f535 days 11 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190.80827 Ether0.000073506
0xf6ebe622e2f8fee8594368faf510c83ff6a8133543dd31e1fe6a78c963ab952535 days 11 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190.80933 Ether0.000084319
0x1870ee276993a2516b9f3ef6716d8a5ac41feccde02b1200e00fa9d03e77cc6135 days 18 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190.80775 Ether0.000090035
0x095b18e97b9cc144877e031cae556e57c553931911a0fea054d8cecc74929e0635 days 18 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190.80635 Ether0.000090035
0xc995c132c6447da1f2a8110ccb42e6310951781c42d68e488b6b1d8e6e2e23fe36 days 19 hrs ago0x8b9b0d323aa73385e5c284a3db77159307529978  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f1925 Ether0.000089971
0xc9b7acb49c957bbf0418d89d6ed3a4a13dbe8228066b74493b0422a497ff1caa36 days 21 hrs ago0xd514d81287a7f2fe3931ce117b87cde4c96eaf91  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f191.00181 Ether0.000089971
0xad16095112ae3de3bc52f6e9b32335b2aea65dcf395f57f13ba5bccad459db6336 days 22 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190 Ether0.00139328
0xeb51b40761dad15957f8e0f0be015eedbf4b6f683307f1b6a44375a25092b32036 days 22 hrs ago0xbb64ac045539bc0e9fffd04399347a8459e8282a  IN   0xb94bd7c5ca000beeff27db7cebb9c03749901f190 Ether0.00139328
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b66493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b66493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x3428b4da000705192f4f012a05e71e1da129aa4e4.2540399 Ether
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b66493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b66493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190xa4bf7ae7b0e6e59bc467b14014d4cd72a55302f20.0429701 Ether
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b66493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b66493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b66493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b66493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x67fa2314039d89a4b7ee2fac46c54bedc2fcda4bf8d7f0f3ebe8a60e31181b66493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f7493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f7493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x3428b4da000705192f4f012a05e71e1da129aa4e4.2498126 Ether
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f7493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f7493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190xa4bf7ae7b0e6e59bc467b14014d4cd72a55302f20.0429274 Ether
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f7493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f7493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f7493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f7493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0x5c17a6cb48def85df944aeccd6115aef28267c1d017bba73b2c3cd965b19e9f7493204020 days 13 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xa1fa9cd9086189a8cc163c5caaad51595fb5aefefe84c90c335d86ff2e042389492479221 days 15 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xa1fa9cd9086189a8cc163c5caaad51595fb5aefefe84c90c335d86ff2e042389492479221 days 15 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xa1fa9cd9086189a8cc163c5caaad51595fb5aefefe84c90c335d86ff2e042389492479221 days 15 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xa1fa9cd9086189a8cc163c5caaad51595fb5aefefe84c90c335d86ff2e042389492479221 days 15 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xa1fa9cd9086189a8cc163c5caaad51595fb5aefefe84c90c335d86ff2e042389492479221 days 15 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xa1fa9cd9086189a8cc163c5caaad51595fb5aefefe84c90c335d86ff2e042389492479221 days 15 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
0xa1fa9cd9086189a8cc163c5caaad51595fb5aefefe84c90c335d86ff2e042389492479221 days 15 hrs ago0xb94bd7c5ca000beeff27db7cebb9c03749901f190x88638d553238ff817900dad9da6a9b1b2884ba5d0 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

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



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.24;

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

}


// ---------------------------------------------------------------------------------
// 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));   TODO: Allow swapping of CM for testing
        addressStorage[keccak256(abi.encodePacked("contract", "ContractManager"))] = _contractManager;
        boolStorage[keccak256(abi.encodePacked("contract", _contractManager))] = true;
        emit LogContractManager(_contractManager, msg.sender); 
    }

    // --------------------------------------------------------------------------------------
    //  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);
    event LogContractManager(address indexed _contractManager, address indexed _initiator); 
}

  //------------------------------------------------------------------------------------------------------------------
  // This contract is where users can fund assets or receive refunds from failed funding periods. Funding stages are represented by uints.
  // Funding stages: 0: funding hasn't started, 1: currently being funded, 2: funding failed,  3: funding success, 4: asset is live
  //------------------------------------------------------------------------------------------------------------------
  contract FundingHub {
    using SafeMath for *;

    Database public database;

    bool private rentrancy_lock;    // Prevents re-entrancy attack

    //------------------------------------------------------------------------------------------------------------------
    // Contructor:
    // @Param: The address for the MyBit database
    //------------------------------------------------------------------------------------------------------------------
    constructor(address _database)
    public {
        database = Database(_database);
    }

    //------------------------------------------------------------------------------------------------------------------
    // Users can send Ether here to fund asset if funding goal hasn't been reached and the funding period isn't over.
    // Invariants: Requires Eth be sent with transaction |  Must be in funding stage. Must be under goal | Must have KYC approved. | contract is not paused
    //------------------------------------------------------------------------------------------------------------------
    function fund(bytes32 _assetID)
    external
    payable
    requiresEther
    whenNotPaused
    atStage(_assetID, uint(1))
    priceUpdated
    fundingLimit(_assetID)
    // onlyApproved   TODO: uncomment when inner-alpha done
    returns (bool) {
      uint ownershipUnits = database.uintStorage(keccak256(abi.encodePacked("ownershipUnits", _assetID, msg.sender)));
      if (ownershipUnits == 0) {
        emit LogNewFunder(_assetID, msg.sender);    // Create event to reference list of funders
      }
      uint amountRaised = database.uintStorage(keccak256(abi.encodePacked("amountRaised", _assetID)));
      database.setUint(keccak256(abi.encodePacked("amountRaised", _assetID)), amountRaised.add(msg.value));
      database.setUint(keccak256(abi.encodePacked("ownershipUnits", _assetID, msg.sender)), ownershipUnits.add(msg.value));
      emit LogAssetFunded(_assetID, msg.sender, msg.value);
      return true;
    }

    //------------------------------------------------------------------------------------------------------------------
    // This is called once funding has succeeded. Sends Ether to installer, foundation and Token Holders
    // Invariants: Must be in stage FundingSuccess | MyBitFoundation + AssetEscrow  + BugEscrow addresses are set | Contract is not paused
    // Note: Will fail if addresses + percentages are not set. AmountRaised = WeiRaised = ownershipUnits
    // TODO: Installer gets extra 1-2 wei from solidity rounding down when faced with fraction
    // TODO: Create asset tokens here
    //------------------------------------------------------------------------------------------------------------------
    function payout(bytes32 _assetID)
    external
    nonReentrant
    whenNotPaused
    atStage(_assetID, uint(3))       // Can only get to stage 3 by receiving enough funding within time limit
    returns (bool) {
      uint amountRaised = database.uintStorage(keccak256(abi.encodePacked("amountRaised", _assetID)));
      uint myBitAmount = amountRaised.getFractionalAmount(database.uintStorage(keccak256(abi.encodePacked("myBitFoundationPercentage"))));
      uint installerAmount = amountRaised.sub(myBitAmount);
      database.addressStorage(keccak256(abi.encodePacked("MyBitFoundation"))).transfer(myBitAmount);             // Must be normal account
      database.addressStorage(keccak256(abi.encodePacked("InstallerEscrow"))).transfer(installerAmount);             // Must be normal account
      database.setUint(keccak256(abi.encodePacked("fundingStage", _assetID)), uint(4));
      emit LogAssetPayout(_assetID, amountRaised);
      return true;
    }

    //------------------------------------------------------------------------------------------------------------------
    // This function needs to be called to allow refunds to be made. Signals to the myBitHub contract that funding has failed + moves stage to Funding failed
    // Invariants: Must be still be in funding stage | must be passed deadline
    //------------------------------------------------------------------------------------------------------------------
    function initiateRefund(bytes32 _assetID)
    external
    fundingPeriodOver(_assetID)
    atStage(_assetID, uint(1))
    returns (bool) {
      database.setUint(keccak256(abi.encodePacked("fundingStage", _assetID)), uint(2));
      emit LogAssetFundingFailed(_assetID, database.uintStorage(keccak256(abi.encodePacked("amountRaised", _assetID))));
      return true;
    }

    //------------------------------------------------------------------------------------------------------------------
    // Contributors can retrieve their funds here if campaign is finished + failure and initateRefund() has been called.
    // Invariants: sender must have ownershipUnits | Must be in failed funding stage || No re-entry | Contract must not be paused
    //------------------------------------------------------------------------------------------------------------------
    function refund(bytes32 _assetID)
    external
    nonReentrant
    whenNotPaused
    atStage(_assetID, uint(2))
    returns (bool) {
      uint ownershipUnits = database.uintStorage(keccak256(abi.encodePacked("ownershipUnits", _assetID, msg.sender)));
      require (ownershipUnits > uint(0));
      database.deleteUint(keccak256(abi.encodePacked("ownershipUnits", _assetID, msg.sender)));
      uint amountRaised = database.uintStorage(keccak256(abi.encodePacked("amountRaised", _assetID)));
      database.setUint(keccak256(abi.encodePacked("amountRaised", _assetID)), amountRaised.sub(ownershipUnits));
      msg.sender.transfer(ownershipUnits);
      emit LogRefund(_assetID, msg.sender, ownershipUnits);
      return true;
    }

    //------------------------------------------------------------------------------------------------------------------
    // Must be authorized by 1 of the 3 owners and then can be called by any of the other 2
    // 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);
      require(database.boolStorage(keccak256(abi.encodePacked(address(this), _functionInitiator, "destroy", keccak256(abi.encodePacked(_holdingAddress))))));
      emit LogDestruction(_holdingAddress, address(this).balance, msg.sender);
      selfdestruct(_holdingAddress);
    }


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

    //------------------------------------------------------------------------------------------------------------------
    // Requires caller is one of the three owners
    //------------------------------------------------------------------------------------------------------------------
    modifier anyOwner {
      require(database.boolStorage(keccak256(abi.encodePacked("owner", msg.sender))));
      _;
    }

    //------------------------------------------------------------------------------------------------------------------
    // Requires that the contract is not paused
    //------------------------------------------------------------------------------------------------------------------
    modifier whenNotPaused {
      require(!database.boolStorage(keccak256(abi.encodePacked("pause", address(this)))));
      _;
    }

    //------------------------------------------------------------------------------------------------------------------
    // Don't let function caller re-enter function before initial transaction finishes
    //------------------------------------------------------------------------------------------------------------------
    modifier nonReentrant() {
      require(!rentrancy_lock);
      rentrancy_lock = true;
      _;
      rentrancy_lock = false;
    }

    //------------------------------------------------------------------------------------------------------------------
    // Requires that Ether is sent with the transaction
    //------------------------------------------------------------------------------------------------------------------
    modifier requiresEther() {
      require(msg.value > 0);
      _;
    }

    //------------------------------------------------------------------------------------------------------------------
    // Requires user has burnt tokens to access this function
    //------------------------------------------------------------------------------------------------------------------
    modifier onlyApproved{
      require(database.uintStorage(keccak256(abi.encodePacked("userAccess", msg.sender))) >= uint(1));
      require(database.uintStorage(keccak256(abi.encodePacked("userAccessExpiration", msg.sender))) > now);
      _;
    }

    //------------------------------------------------------------------------------------------------------------------
    // Transitions funding period to success if enough Ether is raised
    // Must be in funding stage 3 (currently being funded).
    // Deletes funding raising variables if current transaction puts it over the goal.
    // TODO: Limit how far over the goal users are allowed to fund?
    //------------------------------------------------------------------------------------------------------------------
    modifier fundingLimit(bytes32 _assetID) {
      require(now <= database.uintStorage(keccak256(abi.encodePacked("fundingDeadline", _assetID))));
      uint currentEthPrice = database.uintStorage(keccak256(abi.encodePacked("ethUSDPrice")));
      assert (currentEthPrice > uint(0));
      _;
      uint amountRaised = database.uintStorage(keccak256(abi.encodePacked("amountRaised", _assetID))); 
      if (amountRaised.mul(currentEthPrice).div(1e18) >= database.uintStorage(keccak256(abi.encodePacked("amountToBeRaised", _assetID)))) {
         database.setUint(keccak256(abi.encodePacked("fundingStage", _assetID)), uint(3));
         emit LogAssetFundingSuccess(_assetID, currentEthPrice, amountRaised);
        }
    }

    //------------------------------------------------------------------------------------------------------------------
    // Check that the Ether/USD prices have been updated
    //------------------------------------------------------------------------------------------------------------------
    modifier priceUpdated {
      require (now < database.uintStorage(keccak256(abi.encodePacked("priceExpiration"))));
      _;
    }

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

    //------------------------------------------------------------------------------------------------------------------
    // Requires that the funding deadline has passed
    //------------------------------------------------------------------------------------------------------------------
    modifier fundingPeriodOver(bytes32 _assetID) {
      require(now >= database.uintStorage(keccak256(abi.encodePacked("fundingDeadline", _assetID))));
      _;
    }

    //------------------------------------------------------------------------------------------------------------------
    // Fallback: Reject Ether
    //------------------------------------------------------------------------------------------------------------------
    function ()
    public {
      revert();
    }


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

    event LogNewFunder(bytes32 indexed _assetID, address indexed _funder);
    event LogAssetFunded(bytes32 indexed _assetID, address indexed _sender, uint _amount);
    event LogAssetFundingFailed(bytes32 indexed _assetID, uint _amountRaised);
    event LogAssetFundingSuccess(bytes32 indexed _assetID, uint _currentEthPrice, uint _amountRaised);
    event LogRefund(bytes32 indexed _assetID, address indexed _funder, uint _amount);
    event LogAssetPayout(bytes32 indexed _assetID, uint _amount);
    event LogDestruction(address indexed _locationSent, uint indexed _amountSent, address indexed _caller);
  }

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_assetID","type":"bytes32"}],"name":"initiateRefund","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":"refund","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_assetID","type":"bytes32"}],"name":"fund","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_assetID","type":"bytes32"}],"name":"payout","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_database","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetID","type":"bytes32"},{"indexed":true,"name":"_funder","type":"address"}],"name":"LogNewFunder","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetID","type":"bytes32"},{"indexed":true,"name":"_sender","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"LogAssetFunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetID","type":"bytes32"},{"indexed":false,"name":"_amountRaised","type":"uint256"}],"name":"LogAssetFundingFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetID","type":"bytes32"},{"indexed":false,"name":"_currentEthPrice","type":"uint256"},{"indexed":false,"name":"_amountRaised","type":"uint256"}],"name":"LogAssetFundingSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetID","type":"bytes32"},{"indexed":true,"name":"_funder","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"LogRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_assetID","type":"bytes32"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"LogAssetPayout","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"}]

  Contract Creation Code Switch To Opcodes View
608060405234801561001057600080fd5b506040516020806128c0833981016040525160008054600160a060020a03909216600160a060020a031990921691909117905561286e806100526000396000f30060806040526004361061005e5763ffffffff60e060020a60003504166344a2542a811461007057806362b40f9f1461009c578063713b563f146100c55780637249fbb6146100f6578063bf14c1191461010e578063cfefb3d514610119575b34801561006a57600080fd5b50600080fd5b34801561007c57600080fd5b50610088600435610131565b604080519115158252519081900360200190f35b3480156100a857600080fd5b506100c3600160a060020a03600435811690602435166105ab565b005b3480156100d157600080fd5b506100da610909565b60408051600160a060020a039092168252519081900360200190f35b34801561010257600080fd5b50610088600435610918565b610088600435611082565b34801561012557600080fd5b50610088600435611e84565b60008054604080517f66756e64696e67446561646c696e650000000000000000000000000000000000602080830191909152602f80830187905283518084039091018152604f9092019283905281518694600160a060020a03169363a855d4ce9392909182918401908083835b602083106101bd5780518252601f19909201916020918201910161019e565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561021e57600080fd5b505af1158015610232573d6000803e3d6000fd5b505050506040513d602081101561024857600080fd5b505142101561025657600080fd5b60005460408051600080516020612803833981519152602080830191909152602c80830188905283518084039091018152604c90920192839052815187946001948594600160a060020a039092169363a855d4ce9382918401908083835b602083106102d35780518252601f1990920191602091820191016102b4565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561033457600080fd5b505af1158015610348573d6000803e3d6000fd5b505050506040513d602081101561035e57600080fd5b50511461036a57600080fd5b60005460408051600080516020612803833981519152602080830191909152602c8083018a905283518084039091018152604c909201928390528151600160a060020a039094169363e2a4853a93918291908401908083835b602083106103e25780518252601f1990920191602091820191016103c3565b5181516020939093036101000a60001901801990911692169190911790526040805191909301819003812063ffffffff871660e060020a028252600482015260026024820152915160448084019550600094509092839003019050818387803b15801561044e57600080fd5b505af1158015610462573d6000803e3d6000fd5b5050600054604080516000805160206127e3833981519152602080830191909152602c8083018c905283518084039091018152604c9092019283905281518b96507fa946ebac75e7958f76eca23dda8528aec8e27e72f7a709f94b3777c3bcd9de4c9550600160a060020a039094169363a855d4ce93918291908401908083835b602083106105025780518252601f1990920191602091820191016104e3565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561056357600080fd5b505af1158015610577573d6000803e3d6000fd5b505050506040513d602081101561058d57600080fd5b505160408051918252519081900360200190a2506001949350505050565b600054604080517f6f776e6572000000000000000000000000000000000000000000000000000000602080830191909152606060020a33026025830152825160198184030181526039909201928390528151600160a060020a0390941693633b7bfda093918291908401908083835b602083106106395780518252601f19909201916020918201910161061a565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561069a57600080fd5b505af11580156106ae573d6000803e3d6000fd5b505050506040513d60208110156106c457600080fd5b505115156106d157600080fd5b600160a060020a0382163314156106e757600080fd5b6000809054906101000a9004600160a060020a0316600160a060020a0316633b7bfda03084846040516020018082600160a060020a0316600160a060020a0316606060020a0281526014019150506040516020818303038152906040526040518082805190602001908083835b602083106107735780518252601f199092019160209182019101610754565b51815160209384036101000a600019018019909216911617905260408051929094018290038220600160a060020a03988916606060020a908102848401529790981690960260348201527f64657374726f79000000000000000000000000000000000000000000000000006048820152604f8082019790975282518082039097018752606f01918290525084519093849350850191508083835b6020831061082c5780518252601f19909201916020918201910161080d565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561088d57600080fd5b505af11580156108a1573d6000803e3d6000fd5b505050506040513d60208110156108b757600080fd5b505115156108c457600080fd5b6040513390303190600160a060020a038416907f8c7ae8776186c2e87b266886e8af282b7fdb52b47993376583987a14656a367890600090a480600160a060020a0316ff5b600054600160a060020a031681565b600080548190819074010000000000000000000000000000000000000000900460ff161561094557600080fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790819055604080517f7061757365000000000000000000000000000000000000000000000000000000602080830191909152606060020a30026025830152825160198184030181526039909201928390528151600160a060020a0390941693633b7bfda093918291908401908083835b60208310610a075780518252601f1990920191602091820191016109e8565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b158015610a6857600080fd5b505af1158015610a7c573d6000803e3d6000fd5b505050506040513d6020811015610a9257600080fd5b505115610a9e57600080fd5b60005460408051600080516020612803833981519152602080830191909152602c80830189905283518084039091018152604c90920192839052815188946002948594600160a060020a039092169363a855d4ce9382918401908083835b60208310610b1b5780518252601f199092019160209182019101610afc565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b158015610b7c57600080fd5b505af1158015610b90573d6000803e3d6000fd5b505050506040513d6020811015610ba657600080fd5b505114610bb257600080fd5b60005460408051600080516020612823833981519152602080830191909152602e82018a9052606060020a3302604e830152825160428184030181526062909201928390528151600160a060020a039094169363a855d4ce93918291908401908083835b60208310610c355780518252601f199092019160209182019101610c16565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b158015610c9657600080fd5b505af1158015610caa573d6000803e3d6000fd5b505050506040513d6020811015610cc057600080fd5b5051935060008411610cd157600080fd5b60005460408051600080516020612823833981519152602080830191909152602e82018a9052606060020a3302604e830152825160428184030181526062909201928390528151600160a060020a039094169363e2b202bf93918291908401908083835b60208310610d545780518252601f199092019160209182019101610d35565b5181516020939093036101000a60001901801990911692169190911790526040805191909301819003812063ffffffff871660e060020a0282526004820152915160248084019550600094509092839003019050818387803b158015610db957600080fd5b505af1158015610dcd573d6000803e3d6000fd5b5050600054604080516000805160206127e3833981519152602080830191909152602c8083018d905283518084039091018152604c909201928390528151600160a060020a03909416955063a855d4ce9450909282918401908083835b60208310610e495780518252601f199092019160209182019101610e2a565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b158015610eaa57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b505050506040513d6020811015610ed457600080fd5b5051600054604080516000805160206127e3833981519152602082810191909152602c8083018c905283518084039091018152604c909201928390528151949750600160a060020a039093169363e2a4853a939192918291908401908083835b60208310610f535780518252601f199092019160209182019101610f34565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020610f93878761275990919063ffffffff16565b6040518363ffffffff1660e060020a02815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015610fdb57600080fd5b505af1158015610fef573d6000803e3d6000fd5b505060405133925086156108fc02915086906000818181858888f19350505050158015611020573d6000803e3d6000fd5b50604080518581529051339188917f7b6ccf85690b8ce1b7d21a94ca738803a9da7dc74e10140f269efa0d8d6fb8519181900360200190a350506000805474ff0000000000000000000000000000000000000000191690555060019392505050565b6000808034811061109257600080fd5b600054604080517f7061757365000000000000000000000000000000000000000000000000000000602080830191909152606060020a30026025830152825160198184030181526039909201928390528151600160a060020a0390941693633b7bfda093918291908401908083835b602083106111205780518252601f199092019160209182019101611101565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561118157600080fd5b505af1158015611195573d6000803e3d6000fd5b505050506040513d60208110156111ab57600080fd5b5051156111b757600080fd5b60005460408051600080516020612803833981519152602080830191909152602c80830189905283518084039091018152604c90920192839052815188946001948594600160a060020a039092169363a855d4ce9382918401908083835b602083106112345780518252601f199092019160209182019101611215565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561129557600080fd5b505af11580156112a9573d6000803e3d6000fd5b505050506040513d60208110156112bf57600080fd5b5051146112cb57600080fd5b600054604080517f707269636545787069726174696f6e00000000000000000000000000000000006020808301919091528251808303600f018152602f909201928390528151600160a060020a039094169363a855d4ce93918291908401908083835b6020831061134d5780518252601f19909201916020918201910161132e565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b1580156113ae57600080fd5b505af11580156113c2573d6000803e3d6000fd5b505050506040513d60208110156113d857600080fd5b505142106113e557600080fd5b60008054604080517f66756e64696e67446561646c696e650000000000000000000000000000000000602080830191909152602f8083018c905283518084039091018152604f9092019283905281518b95948594600160a060020a039091169363a855d4ce93909282918401908083835b602083106114755780518252601f199092019160209182019101611456565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b1580156114d657600080fd5b505af11580156114ea573d6000803e3d6000fd5b505050506040513d602081101561150057600080fd5b505142111561150e57600080fd5b600054604080517f65746855534450726963650000000000000000000000000000000000000000006020808301919091528251808303600b018152602b909201928390528151600160a060020a039094169363a855d4ce93918291908401908083835b602083106115905780518252601f199092019160209182019101611571565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b1580156115f157600080fd5b505af1158015611605573d6000803e3d6000fd5b505050506040513d602081101561161b57600080fd5b505191506000821161162957fe5b60005460408051600080516020612823833981519152602080830191909152602e82018d9052606060020a3302604e830152825160428184030181526062909201928390528151600160a060020a039094169363a855d4ce93918291908401908083835b602083106116ac5780518252601f19909201916020918201910161168d565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561170d57600080fd5b505af1158015611721573d6000803e3d6000fd5b505050506040513d602081101561173757600080fd5b505196508615156117705760405133908a907fa1e9db5829418205d34d8823e5d72d89769c56512622ab5acf29b9f2554a13f090600090a35b600054604080516000805160206127e3833981519152602080830191909152602c8083018e905283518084039091018152604c909201928390528151600160a060020a039094169363a855d4ce93918291908401908083835b602083106117e85780518252601f1990920191602091820191016117c9565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561184957600080fd5b505af115801561185d573d6000803e3d6000fd5b505050506040513d602081101561187357600080fd5b5051600054604080516000805160206127e3833981519152602082810191909152602c8083018f905283518084039091018152604c909201928390528151949a50600160a060020a039093169363e2a4853a939192918291908401908083835b602083106118f25780518252601f1990920191602091820191016118d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020611932348a61276b90919063ffffffff16565b6040518363ffffffff1660e060020a02815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b15801561197a57600080fd5b505af115801561198e573d6000803e3d6000fd5b505060005460408051600080516020612823833981519152602080830191909152602e82018f9052606060020a3302604e830152825160428184030181526062909201928390528151600160a060020a03909416955063e2a4853a9450909282918401908083835b60208310611a155780518252601f1990920191602091820191016119f6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020611a55348b61276b90919063ffffffff16565b6040518363ffffffff1660e060020a02815260040180836000191660001916815260200182815260200192505050600060405180830381600087803b158015611a9d57600080fd5b505af1158015611ab1573d6000803e3d6000fd5b50506040805134815290513393508c92507fdfae09646add0c3ff3c8a61988fda3ec21616837b9cf280a54385d3da09973559181900360200190a360019750600054604080516000805160206127e3833981519152602080830191909152602c80830188905283518084039091018152604c909201928390528151600160a060020a039094169363a855d4ce93918291908401908083835b60208310611b685780518252601f199092019160209182019101611b49565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b158015611bc957600080fd5b505af1158015611bdd573d6000803e3d6000fd5b505050506040513d6020811015611bf357600080fd5b5051600054604080517f616d6f756e74546f4265526169736564000000000000000000000000000000006020828101919091526030808301899052835180840390910181526050909201928390528151949550600160a060020a039093169363a855d4ce939192918291908401908083835b60208310611c845780518252601f199092019160209182019101611c65565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b158015611ce557600080fd5b505af1158015611cf9573d6000803e3d6000fd5b505050506040513d6020811015611d0f57600080fd5b5051611d39670de0b6b3a7640000611d2d848663ffffffff61278516565b9063ffffffff6127b016565b10611e785760005460408051600080516020612803833981519152602080830191909152602c80830188905283518084039091018152604c909201928390528151600160a060020a039094169363e2a4853a93918291908401908083835b60208310611db65780518252601f199092019160209182019101611d97565b5181516020939093036101000a60001901801990911692169190911790526040805191909301819003812063ffffffff871660e060020a028252600482015260036024820152915160448084019550600094509092839003019050818387803b158015611e2257600080fd5b505af1158015611e36573d6000803e3d6000fd5b5050604080518581526020810185905281518794507fca2bea473aeb046f60d64c3377f67f3648239971bf752a2515649ff970dd13ef93509081900390910190a25b50505050505050919050565b6000805481908190819074010000000000000000000000000000000000000000900460ff1615611eb357600080fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790819055604080517f7061757365000000000000000000000000000000000000000000000000000000602080830191909152606060020a30026025830152825160198184030181526039909201928390528151600160a060020a0390941693633b7bfda093918291908401908083835b60208310611f755780518252601f199092019160209182019101611f56565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b158015611fd657600080fd5b505af1158015611fea573d6000803e3d6000fd5b505050506040513d602081101561200057600080fd5b50511561200c57600080fd5b60005460408051600080516020612803833981519152602080830191909152602c8083018a905283518084039091018152604c90920192839052815189946003948594600160a060020a039092169363a855d4ce9382918401908083835b602083106120895780518252601f19909201916020918201910161206a565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b1580156120ea57600080fd5b505af11580156120fe573d6000803e3d6000fd5b505050506040513d602081101561211457600080fd5b50511461212057600080fd5b600054604080516000805160206127e3833981519152602080830191909152602c8083018c905283518084039091018152604c909201928390528151600160a060020a039094169363a855d4ce93918291908401908083835b602083106121985780518252601f199092019160209182019101612179565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b1580156121f957600080fd5b505af115801561220d573d6000803e3d6000fd5b505050506040513d602081101561222357600080fd5b5051600054604080517f6d79426974466f756e646174696f6e50657263656e746167650000000000000060208281019190915282518083036019018152603990920192839052815194995061234894600160a060020a039094169363a855d4ce93918291908401908083835b602083106122ae5780518252601f19909201916020918201910161228f565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561230f57600080fd5b505af1158015612323573d6000803e3d6000fd5b505050506040513d602081101561233957600080fd5b5051869063ffffffff6127c516565b935061235a858563ffffffff61275916565b92506000809054906101000a9004600160a060020a0316600160a060020a03166304f49a3a60405160200180807f4d79426974466f756e646174696f6e0000000000000000000000000000000000815250600f0190506040516020818303038152906040526040518082805190602001908083835b602083106123ee5780518252601f1990920191602091820191016123cf565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561244f57600080fd5b505af1158015612463573d6000803e3d6000fd5b505050506040513d602081101561247957600080fd5b5051604051600160a060020a039091169085156108fc029086906000818181858888f193505050501580156124b2573d6000803e3d6000fd5b50600054604080517f496e7374616c6c6572457363726f7700000000000000000000000000000000006020808301919091528251808303600f018152602f909201928390528151600160a060020a03909416936304f49a3a93918291908401908083835b602083106125355780518252601f199092019160209182019101612516565b51815160209384036101000a60001901801990921691161790526040805192909401829003822063ffffffff881660e060020a0283526004830152925160248083019650939450929083900301905081600087803b15801561259657600080fd5b505af11580156125aa573d6000803e3d6000fd5b505050506040513d60208110156125c057600080fd5b5051604051600160a060020a039091169084156108fc029085906000818181858888f193505050501580156125f9573d6000803e3d6000fd5b5060005460408051600080516020612803833981519152602080830191909152602c8083018c905283518084039091018152604c909201928390528151600160a060020a039094169363e2a4853a93918291908401908083835b602083106126725780518252601f199092019160209182019101612653565b5181516020939093036101000a60001901801990911692169190911790526040805191909301819003812063ffffffff871660e060020a0282526004808301919091526024820152915160448084019550600094509092839003019050818387803b1580156126e057600080fd5b505af11580156126f4573d6000803e3d6000fd5b50506040805188815290518a93507fb91cc48e5aadfdc16d855301e83a9a7088f6ba3850a8f3bdee70f4af7c3825df92509081900360200190a250506000805474ff000000000000000000000000000000000000000019169055506001949350505050565b60008282111561276557fe5b50900390565b60008282018381101561277a57fe5b8091505b5092915050565b600080831515612798576000915061277e565b508282028284828115156127a857fe5b041461277a57fe5b600081838115156127bd57fe5b049392505050565b60006127db6127d48484612785565b60646127b0565b93925050505600616d6f756e74526169736564000000000000000000000000000000000000000066756e64696e67537461676500000000000000000000000000000000000000006f776e657273686970556e697473000000000000000000000000000000000000a165627a7a72305820df01ea87bd6896986f1a85fa0c66f208635473255a73d6b4e3fb794b66c0ff90002900000000000000000000000088638d553238ff817900dad9da6a9b1b2884ba5d

    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://df01ea87bd6896986f1a85fa0c66f208635473255a73d6b4e3fb794b66c0ff90

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward