Sponsored Link:   Learn and build dApps today without code using Crowd Machine's Crowd App Studio.
Contract Overview
Balance: 22.49374368065489975 Ether
Ether Value: $10,700.05 (@ $475.69/ETH)
Transactions: 111665 txns
 Latest 25 txns from a total Of 111665 transactions

TxHash Age From To Value [TxFee]
0x9a5c2d9456bade079eb7b650f46e5b1ade2d32ff19d7dbf0b5b6541b386daff85 days 13 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.0009469656
0x3f0bf67c35ab4527fee5500268485a488a515dad5142dc73ebd0f609f6f87a0b5 days 14 hrs ago0x1fc9756f317640d04f7fccba99ebaa73511f1f97  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0.04153 Ether0.000973056
0x48dcd44e741ea0b08fec986bf8636a984df3677b432acf7825c8a5db5ec2645f7 days 2 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.00104077512
0xcc91fb6e867da15900c4fcb731e1d3789780c14bb8b372079d5367022abb244b7 days 2 hrs ago0x757281f12fcb5e88e6c8f29458a988bd55604002  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0.06308 Ether0.0010674048
0xac80e6b9ffa41f690caf5ef23cb72afa9cd9e385fb8a5958e3f942a0ddea8c7a7 days 11 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.000946764
0x56e0f3bca80918296d9d772e7f61286a0211d1d47fc512019d515e3100fa34c98 days 5 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.0009485784
0xf6cf97e6c89b88ef0959d1fb93e95bce3cccd848645173fa2570f33903ed4b1a8 days 5 hrs ago0x2f6bf50302c5b080c9b1f5f8b87893daec7a92c6  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0.21305 Ether0.0010713472
0xbbc86758a128f0ca8bbe4e10f7bd75efadd7a51345d9582ea60c309a0189fed114 days 14 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.00483774984
0xc1346504daa3f18c4c0515be3de57a41a8b5e0582dab1107893ee614ca6e27b414 days 14 hrs ago0x6e88da9a024d448af59b9507c2cf01416323c731  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d3.09299 Ether0.006811392
0x1de9e0c7acfdc28c9ef20c37a28b0dcee8ebe372e005e3a7e70aa035812ff62516 days 9 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.00435604176
0x9e2145c14dce88a42f1721e53fc8d9a48af0145b4383cbe29fd110f6b0eeb10016 days 9 hrs ago0x23192921a54cfc94da24b47a896ef21856a92b3a  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0.02897 Ether0.0048608
0x9643edaf4b2b855a148b8e38c21433d3514a9acd6caca341280895cdf4db7ab922 days 10 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.00009484524
0x5fcb884b53e2439b8d92a0db80d7f743ea00fd1bed43fd8f89c90cd705329aa122 days 12 hrs ago0x1b6bda2a4eb1d4ae767dad3e1c19fe677894eaff  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0.07205 Ether0.0000971264
0x9b1724f36d090c7d56f360ac0e780141e03f62a5c3bc6b12e4cb4c70d661a13823 days 3 hrs ago0x77eb7f625124139ac8ce959a0d688367be24acbe  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0.14319 Ether0.0000973952
0x3ff87c79f5006e1f7a4ba3083ad993f88ee584635bc294c45ccab406ff5fdd9d23 days 4 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.00009485784
0xed34783220bbc03034011f4072e69f02bd01336823f82ccdf1469c6a2f6b07ea23 days 4 hrs ago0x77eb7f625124139ac8ce959a0d688367be24acbe  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d1.01011 Ether0.0000973056
0xf6b9cfe9ee64b4a1d2555c637ed5c7c137e0ddc5ccb5773959f67c6bb2afd4d624 days 14 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.00009443448
0x7e2aad2d9949c1317f606aa6e37c358d74cbcc043e276dcadc40329c09996f2324 days 15 hrs ago0x8b7a61a1bdcc45a03a457c0e43e02118da360c06  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0.02072 Ether0.000194432
0x0f306e3c8b02de6e144a65038b31f04b77f8ff7d650a005248a4567d8737c8ea24 days 23 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.0001895544
0xdeff52668ec3460a52f321129c996df0b5ff8c462d503c5567381705da23107a25 days 36 mins ago0x1fa347571a42c59fb161dcc4270905c39c8c14c4  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0.13284 Ether0.0001946112
0x234932c0b4b0c19400b63f7648e5bd921841f279e3f26128cb9a1d89f2b86f8125 days 1 hr ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.00022746528
0xa822116f1cbdf816f1f72318f5259ef6441e7c1018481298b494db45f189537b25 days 1 hr ago0x8b7a61a1bdcc45a03a457c0e43e02118da360c06  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0.02618 Ether0.0001946112
0xda395b216530e505fd2cdfd821bf370e3a55be541bc74a375f3d3a7a0913727525 days 2 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.00018971568
0x18eaa7b752f4355aa6d84ebf3e12f4758e67310fcb9cc6b2ae242b35a449692425 days 2 hrs ago0x8b7a61a1bdcc45a03a457c0e43e02118da360c06  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d2.6329 Ether0.000194432
0xf8b6f70743ba81aaf4772338c8cd5ec2427ce04d39a6dc14812f39f24510ef2b26 days 1 hr ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   0x09678741bd50c3e74301f38fbd0136307099ae5d0 Ether0.00018939312
[ 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
0x9a5c2d9456bade079eb7b650f46e5b1ade2d32ff19d7dbf0b5b6541b386daff859437095 days 13 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xb5b064cc8ed8aed4f121d9e8d723db0eeae13b240.04030074 Ether
0x48dcd44e741ea0b08fec986bf8636a984df3677b432acf7825c8a5db5ec2645f59347667 days 2 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x41c404ce87abfcf725c752cbedda39d3df633f140.061553844 Ether
0xac80e6b9ffa41f690caf5ef23cb72afa9cd9e385fb8a5958e3f942a0ddea8c7a59324857 days 11 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x778ec67a733076e33f03da24f101dd78ed8fe2840.14237604 Ether
0x56e0f3bca80918296d9d772e7f61286a0211d1d47fc512019d515e3100fa34c959281248 days 5 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x0158f03d072787b106027d16f9f6681e83850cd70.21010554 Ether
0xbbc86758a128f0ca8bbe4e10f7bd75efadd7a51345d9582ea60c309a0189fed1589122214 days 14 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x16dbb5a380da523cdc1363dd86c48159e735db183.057908904 Ether
0x1de9e0c7acfdc28c9ef20c37a28b0dcee8ebe372e005e3a7e70aa035812ff625588070916 days 9 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x524de0c4a9acd214700f6f44c1393b4d44b738dc0.024936084 Ether
0x9643edaf4b2b855a148b8e38c21433d3514a9acd6caca341280895cdf4db7ab9584577422 days 10 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x005ac19365d5988ee2afa08aa9e2e6d45123fc8c0.071968604 Ether
0x3ff87c79f5006e1f7a4ba3083ad993f88ee584635bc294c45ccab406ff5fdd9d584110323 days 4 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x1eb38db8376310f722d1b637e9916d0d2c2c579b0.999927504 Ether
0xf6b9cfe9ee64b4a1d2555c637ed5c7c137e0ddc5ccb5773959f67c6bb2afd4d6583281124 days 14 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x2049f8f9f3eb8910dde8a3cfa3faf428d29dde650.020638604 Ether
0x0f306e3c8b02de6e144a65038b31f04b77f8ff7d650a005248a4567d8737c8ea583063724 days 23 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x927427728200d641a92897369a6076f5466d3cec0.131348808 Ether
0x234932c0b4b0c19400b63f7648e5bd921841f279e3f26128cb9a1d89f2b86f81583036225 days 1 hr ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xf1b8f7349e4b2caa0b5006ea687a77914dc99a4e0.0257228496 Ether
0xda395b216530e505fd2cdfd821bf370e3a55be541bc74a375f3d3a7a09137275582999125 days 2 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xbacdcb57353a9aabca37dcd583b83a25fcab2d642.606408208 Ether
0xf8b6f70743ba81aaf4772338c8cd5ec2427ce04d39a6dc14812f39f24510ef2b582445026 days 1 hr ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xca0d5a248fb482e680c3b757200c0d816976210e0.039437208 Ether
0x0ecf56658ba45b52f26ad5d0d5faabe3c3454a0b2330c72b839991e642c61047582155826 days 13 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xb08b1ce7e343543665871c13acf41c0889f34ba30.033722712 Ether
0x884aab77e87437806c41d12e68900c8b043e1f5be8b9e50c6008d5a40859d90e580483629 days 9 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x950e3248c8a77ab3e6451c49666df715b430cae21.092710304 Ether
0xcebb86964078a0181070c789913c2736f5e9b77dd222513b137c1be734bea8e0579994830 days 5 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x96c78ae86626b2203fc756424188f7c45799f7571.542698316 Ether
0x622a8133c38fc2b7a9532b9bcd11eb4de49279c2073f2f19aaca2539d1407edd579600930 days 21 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x18519c52f0397e39aaa2d1b38b6154f2f66ea3431.030047336 Ether
0x92c0e598009b7da0d1bc6c9143c21c15e4cb9a3765bab742f16f22733bfe6d3c579406431 days 5 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x2c2f77bc75237875045ed0cf9a0259289db749861.01720862 Ether
0x7bdde78f792fa998db74774647d504c68b5babb9b6c8c285537e17eddaa8216a579313131 days 9 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xf4bc3954434e19f64e46754cb5574e6578de3e990.046044936 Ether
0x4dbcd3e3adac91eee715a00b91877740e71bda9c3bdf972038f42776e2f34a52578899232 days 2 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x903434ebf4b00d0c1b11e9e3cc1e242c28a795c50.023831568 Ether
0xd0cd0c32e3a74b7f28041d5fe788f1c42a3642a5d3d84bccd991c91631995909578877732 days 3 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xc75eac906ba5a291c2d3c59f80262156c95be0a00.04426074 Ether
0x39cad7828b3a79ce16217373f7b0f52389b291336018d8fc12eb62639a4bc675578764632 days 8 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x6c667824af44e99fa166ead8c0386c0307faab390.165237436 Ether
0x1d7b6b884e164bd00b17096f0a907fc0e545ef51bf7682d8b3f8b922ba1d1603578519432 days 18 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xde6df0e5413dc63f559b00415d59c64d5b5d93c115.126904116 Ether
0x5a438e70484b2a9b31b050507441e8883298facd6d65ded4c282998f4cb8d656578499832 days 19 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xdd07f92fb645db741c39346aa2c0f75b3356dffc0.303990516 Ether
0x86895df1b72a8c81f8535c1e16f8f8d0969509f37514b226697b0716dab48f78578166533 days 8 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x2deff6ec8bd230808c3291310ff8f6f80430896c0.053514416 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: LocalEthereumEscrows
Compiler Version: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18;
contract Token {
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
}
contract LocalEthereumEscrows {
    // The address of the arbitrator
    // In the first version, this is always localethereum staff.
    address public arbitrator;
    address public owner;
    address public relayer;
    uint32 public requestCancellationMinimumTime;
    uint256 public feesAvailableForWithdraw;

    uint8 constant ACTION_SELLER_CANNOT_CANCEL = 0x01; // Called when marking as paid or calling a dispute as the buyer
    uint8 constant ACTION_BUYER_CANCEL = 0x02;
    uint8 constant ACTION_SELLER_CANCEL = 0x03;
    uint8 constant ACTION_SELLER_REQUEST_CANCEL = 0x04;
    uint8 constant ACTION_RELEASE = 0x05;
    uint8 constant ACTION_DISPUTE = 0x06;

    event Created(bytes32 _tradeHash);
    event SellerCancelDisabled(bytes32 _tradeHash);
    event SellerRequestedCancel(bytes32 _tradeHash);
    event CancelledBySeller(bytes32 _tradeHash);
    event CancelledByBuyer(bytes32 _tradeHash);
    event Released(bytes32 _tradeHash);
    event DisputeResolved(bytes32 _tradeHash);

    struct Escrow {
        // Set so we know the trade has already been created
        bool exists;
        // The timestamp in which the seller can cancel the trade if the buyer has not yet marked as paid. Set to 0 on marked paid or dispute
        // 1 = unlimited cancel time
        uint32 sellerCanCancelAfter;
        // The total cost of gas spent by relaying parties. This amount will be
        // refunded/paid to localethereum.com once the escrow is finished.
        uint128 totalGasFeesSpentByRelayer;
    }
    // Mapping of active trades. Key is a hash of the trade data
    mapping (bytes32 => Escrow) public escrows;

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    modifier onlyArbitrator() {
        require(msg.sender == arbitrator);
        _;
    }

    function getRelayedSender(
      bytes16 _tradeID, // The unique ID of the trade, generated by localethereum.com
      uint8 _actionByte, // The desired action of the user, matching an ACTION_* constant
      uint128 _maximumGasPrice, // The maximum gas price the user is willing to pay
      uint8 _v, // Signature value
      bytes32 _r, // Signature value
      bytes32 _s // Signature value
    ) view private returns (address) {
        bytes32 _hash = keccak256(_tradeID, _actionByte, _maximumGasPrice);
        if(tx.gasprice > _maximumGasPrice) return;
        return ecrecover(_hash, _v, _r, _s);
    }

    function LocalEthereumEscrows() public {
        /**
         * Initialize the contract.
         */
        owner = msg.sender;
        arbitrator = msg.sender;
        relayer = msg.sender;
        requestCancellationMinimumTime = 2 hours; // TODO
    }

    function getEscrowAndHash(
      /**
       * Hashes the values and returns the matching escrow object and trade hash.
       * Returns an empty escrow struct and 0 _tradeHash if not found
       */
      bytes16 _tradeID,
      address _seller,
      address _buyer,
      uint256 _value,
      uint16 _fee
    ) view private returns (Escrow, bytes32) {
        bytes32 _tradeHash = keccak256(_tradeID, _seller, _buyer, _value, _fee);
        return (escrows[_tradeHash], _tradeHash);
    }

    function createEscrow(
      /**
       * Create a new escrow and add it to `escrows`.
       * _tradeHash is created by hashing _tradeID, _seller, _buyer, _value and _fee variables. These variables must be supplied on future contract calls.
       * v, r and s is the signature data supplied from the api. The sig is keccak256(_tradeHash, _paymentWindowInSeconds, _expiry).
       */
      bytes16 _tradeID, // The unique ID of the trade, generated by localethereum.com
      address _seller, // The selling party of the trade
      address _buyer, // The buying party of the trade
      uint256 _value, // The ether amount being held in escrow
      uint16 _fee, // The localethereum.com fee in 1/10000ths
      uint32 _paymentWindowInSeconds, // The time in seconds from contract creation that the buyer has to mark as paid
      uint32 _expiry, // Provided by localethereum.com. This transaction must be created before this time.
      uint8 _v, // Signature value
      bytes32 _r, // Signature value
      bytes32 _s // Signature value
    ) payable external {
        bytes32 _tradeHash = keccak256(_tradeID, _seller, _buyer, _value, _fee);
        require(!escrows[_tradeHash].exists); // Require that trade does not already exist
        require(ecrecover(keccak256(_tradeHash, _paymentWindowInSeconds, _expiry), _v, _r, _s) == relayer); // Signature must have come from the relayer
        require(block.timestamp < _expiry);
        require(msg.value == _value && msg.value > 0); // Check sent eth against signed _value and make sure is not 0
        uint32 _sellerCanCancelAfter = _paymentWindowInSeconds == 0 ? 1 : uint32(block.timestamp) + _paymentWindowInSeconds;
        escrows[_tradeHash] = Escrow(true, _sellerCanCancelAfter, 0);
        Created(_tradeHash);
    }

    uint16 constant GAS_doRelease = 36100;
    function doRelease(
      /**
       * Called by the seller to releases the funds for a successful trade.
       * Deletes the trade from the `escrows` mapping.
       */
      bytes16 _tradeID,
      address _seller,
      address _buyer,
      uint256 _value,
      uint16 _fee,
      uint128 _additionalGas
    ) private returns (bool) {
        var (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) return false;
        uint128 _gasFees = _escrow.totalGasFeesSpentByRelayer + (msg.sender == relayer ? (GAS_doRelease + _additionalGas) * uint128(tx.gasprice) : 0);
        delete escrows[_tradeHash];
        Released(_tradeHash);
        transferMinusFees(_buyer, _value, _gasFees, _fee);
        return true;
    }

    uint16 constant GAS_doDisableSellerCancel = 12100;
    function doDisableSellerCancel(
      /**
       * Stops the seller from cancelling the trade.
       * Can only be called the buyer.
       * Used to mark the trade as paid, or if the buyer has a dispute.
       */
      bytes16 _tradeID,
      address _seller,
      address _buyer,
      uint256 _value,
      uint16 _fee,
      uint128 _additionalGas
    ) private returns (bool) {
        var (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) return false;
        if(_escrow.sellerCanCancelAfter == 0) return false;
        escrows[_tradeHash].sellerCanCancelAfter = 0;
        SellerCancelDisabled(_tradeHash);
        if (msg.sender == relayer) {
          increaseGasSpent(_tradeHash, GAS_doDisableSellerCancel + _additionalGas);
        }
        return true;
    }

    uint16 constant GAS_doBuyerCancel = 36100;
    function doBuyerCancel(
      /**
       * Cancels the trade and returns the ether to the seller.
       * Can only be called the buyer.
       */
      bytes16 _tradeID,
      address _seller,
      address _buyer,
      uint256 _value,
      uint16 _fee,
      uint128 _additionalGas
    ) private returns (bool) {
        var (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) return false;
        uint128 _gasFees = _escrow.totalGasFeesSpentByRelayer + (msg.sender == relayer ? (GAS_doBuyerCancel + _additionalGas) * uint128(tx.gasprice) : 0);
        delete escrows[_tradeHash];
        CancelledByBuyer(_tradeHash);
        transferMinusFees(_seller, _value, _gasFees, 0);
        return true;
    }

    uint16 constant GAS_doSellerCancel = 36100;
    function doSellerCancel(
      /**
       * Cancels the trade and returns the ether to the seller.
       * Can only be called the seller.
       * Can only be called if the payment window was missed by the buyer
       */
      bytes16 _tradeID,
      address _seller,
      address _buyer,
      uint256 _value,
      uint16 _fee,
      uint128 _additionalGas
    ) private returns (bool) {
        var (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) return false;
        if(_escrow.sellerCanCancelAfter <= 1 || _escrow.sellerCanCancelAfter > block.timestamp) return false;
        uint128 _gasFees = _escrow.totalGasFeesSpentByRelayer + (msg.sender == relayer ? (GAS_doSellerCancel + _additionalGas) * uint128(tx.gasprice) : 0);
        delete escrows[_tradeHash];
        CancelledBySeller(_tradeHash);
        transferMinusFees(_seller, _value, _gasFees, 0);
        return true;
    }

    uint16 constant GAS_doSellerRequestCancel = 12100;
    function doSellerRequestCancel(
      /**
       * Called by the seller if the buyer is unresponsive
       * Can only be called on unlimited payment window trades (sellerCanCancelAfter == 1)
       * Sets the payment window to `requestCancellationMinimumTime` from now, in which it can be cancelled.
       */
      bytes16 _tradeID,
      address _seller,
      address _buyer,
      uint256 _value,
      uint16 _fee,
      uint128 _additionalGas
    ) private returns (bool) {
        // Called on unlimited payment window trades wheret the buyer is not responding
        var (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        if (!_escrow.exists) return false;
        if(_escrow.sellerCanCancelAfter != 1) return false;
        escrows[_tradeHash].sellerCanCancelAfter = uint32(block.timestamp) + requestCancellationMinimumTime;
        SellerRequestedCancel(_tradeHash);
        if (msg.sender == relayer) {
          increaseGasSpent(_tradeHash, GAS_doSellerRequestCancel + _additionalGas);
        }
        return true;
    }

    uint16 constant GAS_doResolveDispute = 36100;
    function resolveDispute(
      /**
       * Called by the arbitrator to resolve a dispute
       * Requires the signed ACTION_DISPUTE actionByte from either the buyer or the seller
       */
      bytes16 _tradeID,
      address _seller,
      address _buyer,
      uint256 _value,
      uint16 _fee,
      uint8 _v,
      bytes32 _r,
      bytes32 _s,
      uint8 _buyerPercent
    ) external onlyArbitrator {
        address _signature = ecrecover(keccak256(_tradeID, ACTION_DISPUTE), _v, _r, _s);
        require(_signature == _buyer || _signature == _seller);

        var (_escrow, _tradeHash) = getEscrowAndHash(_tradeID, _seller, _buyer, _value, _fee);
        require(_escrow.exists);
        require(_buyerPercent <= 100);

        uint256 _totalFees = _escrow.totalGasFeesSpentByRelayer + GAS_doResolveDispute;
        require(_value - _totalFees <= _value); // Prevent underflow
        feesAvailableForWithdraw += _totalFees; // Add the the pot for localethereum to withdraw

        delete escrows[_tradeHash];
        DisputeResolved(_tradeHash);
        _buyer.transfer((_value - _totalFees) * _buyerPercent / 100);
        _seller.transfer((_value - _totalFees) * (100 - _buyerPercent) / 100);
    }

    function release(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee) external returns (bool){
      require(msg.sender == _seller);
      return doRelease(_tradeID, _seller, _buyer, _value, _fee, 0);
    }
    function disableSellerCancel(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee) external returns (bool) {
      require(msg.sender == _buyer);
      return doDisableSellerCancel(_tradeID, _seller, _buyer, _value, _fee, 0);
    }
    function buyerCancel(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee) external returns (bool) {
      require(msg.sender == _buyer);
      return doBuyerCancel(_tradeID, _seller, _buyer, _value, _fee, 0);
    }
    function sellerCancel(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee) external returns (bool) {
      require(msg.sender == _seller);
      return doSellerCancel(_tradeID, _seller, _buyer, _value, _fee, 0);
    }
    function sellerRequestCancel(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee) external returns (bool) {
      require(msg.sender == _seller);
      return doSellerRequestCancel(_tradeID, _seller, _buyer, _value, _fee, 0);
    }

    function relaySellerCannotCancel(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee, uint128 _maximumGasPrice, uint8 _v, bytes32 _r, bytes32 _s) external returns (bool) {
      return relay(_tradeID, _seller, _buyer, _value, _fee, _maximumGasPrice, _v, _r, _s, ACTION_SELLER_CANNOT_CANCEL, 0);
    }
    function relayBuyerCancel(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee, uint128 _maximumGasPrice, uint8 _v, bytes32 _r, bytes32 _s) external returns (bool) {
      return relay(_tradeID, _seller, _buyer, _value, _fee, _maximumGasPrice, _v, _r, _s, ACTION_BUYER_CANCEL, 0);
    }
    function relayRelease(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee, uint128 _maximumGasPrice, uint8 _v, bytes32 _r, bytes32 _s) external returns (bool) {
      return relay(_tradeID, _seller, _buyer, _value, _fee, _maximumGasPrice, _v, _r, _s, ACTION_RELEASE, 0);
    }
    function relaySellerCancel(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee, uint128 _maximumGasPrice, uint8 _v, bytes32 _r, bytes32 _s) external returns (bool) {
      return relay(_tradeID, _seller, _buyer, _value, _fee, _maximumGasPrice, _v, _r, _s, ACTION_SELLER_CANCEL, 0);
    }
    function relaySellerRequestCancel(bytes16 _tradeID, address _seller, address _buyer, uint256 _value, uint16 _fee, uint128 _maximumGasPrice, uint8 _v, bytes32 _r, bytes32 _s) external returns (bool) {
      return relay(_tradeID, _seller, _buyer, _value, _fee, _maximumGasPrice, _v, _r, _s, ACTION_SELLER_REQUEST_CANCEL, 0);
    }

    function relay(
      bytes16 _tradeID,
      address _seller,
      address _buyer,
      uint256 _value,
      uint16 _fee,
      uint128 _maximumGasPrice,
      uint8 _v,
      bytes32 _r,
      bytes32 _s,
      uint8 _actionByte,
      uint128 _additionalGas
    ) private returns (bool) {
      address _relayedSender = getRelayedSender(_tradeID, _actionByte, _maximumGasPrice, _v, _r, _s);
      if (_relayedSender == _buyer) {
        if (_actionByte == ACTION_SELLER_CANNOT_CANCEL) {
          return doDisableSellerCancel(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
        } else if (_actionByte == ACTION_BUYER_CANCEL) {
          return doBuyerCancel(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
        }
      } else if (_relayedSender == _seller) {
        if (_actionByte == ACTION_RELEASE) {
          return doRelease(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
        } else if (_actionByte == ACTION_SELLER_CANCEL) {
          return doSellerCancel(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
        } else if (_actionByte == ACTION_SELLER_REQUEST_CANCEL){
          return doSellerRequestCancel(_tradeID, _seller, _buyer, _value, _fee, _additionalGas);
        }
      } else {
        return false;
      }
    }

    uint16 constant GAS_batchRelayBaseCost = 28500;
    function batchRelay(
      /**
       * Call multiple relay methods at once to save on gas.
       */
        bytes16[] _tradeID,
        address[] _seller,
        address[] _buyer,
        uint256[] _value,
        uint16[] _fee,
        uint128[] _maximumGasPrice,
        uint8[] _v,
        bytes32[] _r,
        bytes32[] _s,
        uint8[] _actionByte
    ) public returns (bool[]) {
        bool[] memory _results = new bool[](_tradeID.length);
        uint128 _additionalGas = uint128(msg.sender == relayer ? GAS_batchRelayBaseCost / _tradeID.length : 0);
        for (uint8 i=0; i<_tradeID.length; i++) {
            _results[i] = relay(_tradeID[i], _seller[i], _buyer[i], _value[i], _fee[i], _maximumGasPrice[i], _v[i], _r[i], _s[i], _actionByte[i], _additionalGas);
        }
        return _results;
    }

    function increaseGasSpent(bytes32 _tradeHash, uint128 _gas) private {
        /** Increase `totalGasFeesSpentByRelayer` to be charged later on completion of the trade.
         */
        escrows[_tradeHash].totalGasFeesSpentByRelayer += _gas * uint128(tx.gasprice);
    }

    function transferMinusFees(address _to, uint256 _value, uint128 _totalGasFeesSpentByRelayer, uint16 _fee) private {
        uint256 _totalFees = (_value * _fee / 10000) + _totalGasFeesSpentByRelayer;
        if(_value - _totalFees > _value) return; // Prevent underflow
        feesAvailableForWithdraw += _totalFees; // Add the the pot for localethereum to withdraw
        _to.transfer(_value - _totalFees);
    }

    function withdrawFees(address _to, uint256 _amount) onlyOwner external {
      /**
       * Withdraw fees collected by the contract. Only the owner can call this.
       */
        require(_amount <= feesAvailableForWithdraw); // Also prevents underflow
        feesAvailableForWithdraw -= _amount;
        _to.transfer(_amount);
    }

    function setArbitrator(address _newArbitrator) onlyOwner external {
        /**
         * Set the arbitrator to a new address. Only the owner can call this.
         * @param address _newArbitrator
         */
        arbitrator = _newArbitrator;
    }

    function setOwner(address _newOwner) onlyOwner external {
        /**
         * Change the owner to a new address. Only the owner can call this.
         * @param address _newOwner
         */
        owner = _newOwner;
    }

    function setRelayer(address _newRelayer) onlyOwner external {
        /**
         * Change the relayer to a new address. Only the owner can call this.
         * @param address _newRelayer
         */
        relayer = _newRelayer;
    }

    function setRequestCancellationMinimumTime(uint32 _newRequestCancellationMinimumTime) onlyOwner external {
        /**
         * Change the requestCancellationMinimumTime. Only the owner can call this.
         * @param uint32 _newRequestCancellationMinimumTime
         */
        requestCancellationMinimumTime = _newRequestCancellationMinimumTime;
    }

    function transferToken(Token _tokenContract, address _transferTo, uint256 _value) onlyOwner external {
        /**
         * If ERC20 tokens are sent to this contract, they will be trapped forever.
         * This function is way for us to withdraw them so we can get them back to their rightful owner
         */
         _tokenContract.transfer(_transferTo, _value);
    }
    function transferTokenFrom(Token _tokenContract, address _transferTo, address _transferFrom, uint256 _value) onlyOwner external {
        /**
         * If ERC20 tokens are sent to this contract, they will be trapped forever.
         * This function is way for us to withdraw them so we can get them back to their rightful owner
         */
         _tokenContract.transferFrom(_transferTo, _transferFrom, _value);
    }
    function approveToken(Token _tokenContract, address _spender, uint256 _value) onlyOwner external {
        /**
         * If ERC20 tokens are sent to this contract, they will be trapped forever.
         * This function is way for us to withdraw them so we can get them back to their rightful owner
         */
         _tokenContract.approve(_spender, _value);
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"},{"name":"_maximumGasPrice","type":"uint128"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"relaySellerRequestCancel","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newRequestCancellationMinimumTime","type":"uint32"}],"name":"setRequestCancellationMinimumTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"},{"name":"_buyerPercent","type":"uint8"}],"name":"resolveDispute","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"}],"name":"buyerCancel","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"escrows","outputs":[{"name":"exists","type":"bool"},{"name":"sellerCanCancelAfter","type":"uint32"},{"name":"totalGasFeesSpentByRelayer","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"},{"name":"_maximumGasPrice","type":"uint128"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"relaySellerCancel","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"}],"name":"sellerCancel","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"},{"name":"_maximumGasPrice","type":"uint128"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"relayRelease","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"requestCancellationMinimumTime","outputs":[{"name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"}],"name":"disableSellerCancel","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newRelayer","type":"address"}],"name":"setRelayer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"}],"name":"sellerRequestCancel","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"arbitrator","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"relayer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16[]"},{"name":"_seller","type":"address[]"},{"name":"_buyer","type":"address[]"},{"name":"_value","type":"uint256[]"},{"name":"_fee","type":"uint16[]"},{"name":"_maximumGasPrice","type":"uint128[]"},{"name":"_v","type":"uint8[]"},{"name":"_r","type":"bytes32[]"},{"name":"_s","type":"bytes32[]"},{"name":"_actionByte","type":"uint8[]"}],"name":"batchRelay","outputs":[{"name":"","type":"bool[]"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"},{"name":"_maximumGasPrice","type":"uint128"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"relaySellerCannotCancel","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newArbitrator","type":"address"}],"name":"setArbitrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"},{"name":"_maximumGasPrice","type":"uint128"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"relayBuyerCancel","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approveToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feesAvailableForWithdraw","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"_transferTo","type":"address"},{"name":"_transferFrom","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferTokenFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"}],"name":"release","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tradeID","type":"bytes16"},{"name":"_seller","type":"address"},{"name":"_buyer","type":"address"},{"name":"_value","type":"uint256"},{"name":"_fee","type":"uint16"},{"name":"_paymentWindowInSeconds","type":"uint32"},{"name":"_expiry","type":"uint32"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"createEscrow","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"_transferTo","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tradeHash","type":"bytes32"}],"name":"Created","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tradeHash","type":"bytes32"}],"name":"SellerCancelDisabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tradeHash","type":"bytes32"}],"name":"SellerRequestedCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tradeHash","type":"bytes32"}],"name":"CancelledBySeller","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tradeHash","type":"bytes32"}],"name":"CancelledByBuyer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tradeHash","type":"bytes32"}],"name":"Released","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tradeHash","type":"bytes32"}],"name":"DisputeResolved","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b60018054600160a060020a031990811633600160a060020a0316908117909255600080548216831781556002805490921690921760a060020a63ffffffff021916751c200000000000000000000000000000000000000000179055611e1290819061007a90396000f3006060604052600436106101455763ffffffff60e060020a600035041663036c36eb811461014a57806305b64993146101b357806313af4035146101d157806324943c7d146101f05780632cc9636c146102415780632d83549c1461027d57806331d36cf0146102c757806335adc0c51461031c578063520c3db71461035857806357938b2a146103ad5780635c810f09146103d95780636548e9bc146104155780636b407837146104345780636cc6cde1146104705780638406c0791461049f5780638da5cb5b146104b25780638eb4e0ad146104c5578063a246d83b146107a7578063ad3b1b47146107fc578063b0eefabe1461081e578063d81d50621461083d578063da3e339714610892578063de5785d5146108ba578063e5994905146108df578063e9600f121461090d578063f1e03d6714610949578063f5537ede14610997575b600080fd5b341561015557600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff6084351660a4356001608060020a031660ff60c4351660e435610104356109bf565b604051901515815260200160405180910390f35b34156101be57600080fd5b6101cf63ffffffff600435166109e4565b005b34156101dc57600080fd5b6101cf600160a060020a0360043516610a47565b34156101fb57600080fd5b6101cf6001608060020a031960043516600160a060020a036024358116906044351660643561ffff6084351660ff60a43581169060c4359060e435906101043516610a91565b341561024c57600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff60843516610cf3565b341561028857600080fd5b610293600435610d2e565b604051921515835263ffffffff90911660208301526001608060020a03166040808301919091526060909101905180910390f35b34156102d257600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff6084351660a4356001608060020a031660ff60c4351660e43561010435610d63565b341561032757600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff60843516610d7a565b341561036357600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff6084351660a4356001608060020a031660ff60c4351660e43561010435610dab565b34156103b857600080fd5b6103c0610dc2565b60405163ffffffff909116815260200160405180910390f35b34156103e457600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff60843516610de6565b341561042057600080fd5b6101cf600160a060020a0360043516610e17565b341561043f57600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff60843516610e61565b341561047b57600080fd5b610483610e92565b604051600160a060020a03909116815260200160405180910390f35b34156104aa57600080fd5b610483610ea1565b34156104bd57600080fd5b610483610eb0565b34156104d057600080fd5b6107546004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610ebf95505050505050565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561079357808201518382015260200161077b565b505050509050019250505060405180910390f35b34156107b257600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff6084351660a4356001608060020a031660ff60c4351660e43561010435611070565b341561080757600080fd5b6101cf600160a060020a0360043516602435611087565b341561082957600080fd5b6101cf600160a060020a03600435166110ef565b341561084857600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff6084351660a4356001608060020a031660ff60c4351660e43561010435611139565b341561089d57600080fd5b6101cf600160a060020a0360043581169060243516604435611150565b34156108c557600080fd5b6108cd6111e8565b60405190815260200160405180910390f35b34156108ea57600080fd5b6101cf600160a060020a03600435811690602435811690604435166064356111ee565b341561091857600080fd5b61019f6001608060020a031960043516600160a060020a036024358116906044351660643561ffff60843516611294565b6101cf6001608060020a031960043516600160a060020a036024358116906044351660643561ffff6084351663ffffffff60a43581169060c4351660ff60e4351661010435610124356112c5565b34156109a257600080fd5b6101cf600160a060020a0360043581169060243516604435611542565b60006109d68a8a8a8a8a8a8a8a8a600460006115ba565b9a9950505050505050505050565b60015433600160a060020a039081169116146109ff57600080fd5b6002805463ffffffff909216740100000000000000000000000000000000000000000277ffffffff000000000000000000000000000000000000000019909216919091179055565b60015433600160a060020a03908116911614610a6257600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000610a9b611db4565b60008054819033600160a060020a03908116911614610ab957600080fd5b60018d60066040516001608060020a031992909216825260ff167f010000000000000000000000000000000000000000000000000000000000000002601082015260110160405180910390208989896040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610b6757600080fd5b50506020604051035193508a600160a060020a031684600160a060020a03161480610ba357508b600160a060020a031684600160a060020a0316145b1515610bae57600080fd5b610bbb8d8d8d8d8d6116a4565b909350915082511515610bcd57600080fd5b606460ff86161115610bde57600080fd5b618d046040840151016001608060020a0316905089818b0311151515610c0357600080fd5b600380548201905560008281526004602052604090819020805474ffffffffffffffffffffffffffffffffffffffffff191690557f65e0c7182ce84cd9087c1b07dc4b65875578877b885848e4be19ee312f2c3d319083905190815260200160405180910390a1600160a060020a038b16606460ff8716838d03020480156108fc0290604051600060405180830381858888f193505050501515610ca657600080fd5b600160a060020a038c16606486810360ff16838d03020480156108fc0290604051600060405180830381858888f193505050501515610ce457600080fd5b50505050505050505050505050565b600083600160a060020a031633600160a060020a0316141515610d1557600080fd5b610d2486868686866000611793565b9695505050505050565b60046020526000908152604090205460ff811690610100810463ffffffff16906501000000000090046001608060020a031683565b60006109d68a8a8a8a8a8a8a8a8a600360006115ba565b600084600160a060020a031633600160a060020a0316141515610d9c57600080fd5b610d248686868686600061186f565b60006109d68a8a8a8a8a8a8a8a8a600560006115ba565b60025474010000000000000000000000000000000000000000900463ffffffff1681565b600083600160a060020a031633600160a060020a0316141515610e0857600080fd5b610d248686868686600061196a565b60015433600160a060020a03908116911614610e3257600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600084600160a060020a031633600160a060020a0316141515610e8357600080fd5b610d2486868686866000611a38565b600054600160a060020a031681565b600254600160a060020a031681565b600154600160a060020a031681565b610ec7611dd4565b610ecf611dd4565b6000808d51604051805910610ee15750595b908082528060200260200182016040525060025490935033600160a060020a03908116911614610f12576000610f22565b8d51616f54811515610f2057fe5b045b9150600090505b8d518160ff16101561105e576110388e8260ff1681518110610f4757fe5b906020019060200201518e8360ff1681518110610f6057fe5b906020019060200201518e8460ff1681518110610f7957fe5b906020019060200201518e8560ff1681518110610f9257fe5b906020019060200201518e8660ff1681518110610fab57fe5b906020019060200201518e8760ff1681518110610fc457fe5b906020019060200201518e8860ff1681518110610fdd57fe5b906020019060200201518e8960ff1681518110610ff657fe5b906020019060200201518e8a60ff168151811061100f57fe5b906020019060200201518e8b60ff168151811061102857fe5b906020019060200201518c6115ba565b838260ff168151811061104757fe5b911515602092830290910190910152600101610f29565b50909c9b505050505050505050505050565b60006109d68a8a8a8a8a8a8a8a8a600160006115ba565b60015433600160a060020a039081169116146110a257600080fd5b6003548111156110b157600080fd5b600380548290039055600160a060020a03821681156108fc0282604051600060405180830381858888f1935050505015156110eb57600080fd5b5050565b60015433600160a060020a0390811691161461110a57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006109d68a8a8a8a8a8a8a8a8a600260006115ba565b60015433600160a060020a0390811691161461116b57600080fd5b82600160a060020a031663095ea7b3838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156111c857600080fd5b6102c65a03f115156111d957600080fd5b50505060405180515050505050565b60035481565b60015433600160a060020a0390811691161461120957600080fd5b83600160a060020a03166323b872dd84848460006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561127357600080fd5b6102c65a03f1151561128457600080fd5b5050506040518051505050505050565b600084600160a060020a031633600160a060020a03161415156112b657600080fd5b610d2486868686866000611b2b565b6000808b8b8b8b8b6040516001608060020a031990951685526c01000000000000000000000000600160a060020a039485168102601087015292909316909102602484015260388301527e0100000000000000000000000000000000000000000000000000000000000061ffff909116026058820152605a0160405190819003902060008181526004602052604090205490925060ff161561136657600080fd5b600254600160a060020a0316600183898960405192835260e060020a63ffffffff92831681026020850152911602602482015260280160405180910390208787876040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561140657600080fd5b505060206040510351600160a060020a03161461142257600080fd5b63ffffffff8616421061143457600080fd5b88341480156114435750600034115b151561144e57600080fd5b63ffffffff87161561146257864201611465565b60015b9050606060405190810160409081526001825263ffffffff831660208084019190915260008284018190528581526004909152208151815460ff19169015151781556020820151815463ffffffff919091166101000264ffffffff0019909116178155604082015181546001608060020a0391909116650100000000000274ffffffffffffffffffffffffffffffff000000000019909116179055507f102d25c49d33fcdb8976a3f2744e0785c98d9e43b88364859e6aec4ae82eff5c8260405190815260200160405180910390a1505050505050505050505050565b60015433600160a060020a0390811691161461155d57600080fd5b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156111c857600080fd5b6000806115cb8d858a8a8a8a611bf4565b90508a600160a060020a031681600160a060020a031614156116275760ff841660011415611608576116018d8d8d8d8d8861196a565b9150611694565b60ff841660021415611622576116018d8d8d8d8d88611793565b611694565b8b600160a060020a031681600160a060020a0316141561168f5760ff84166005141561165b576116018d8d8d8d8d88611b2b565b60ff841660031415611675576116018d8d8d8d8d8861186f565b60ff841660041415611622576116018d8d8d8d8d88611a38565b600091505b509b9a5050505050505050505050565b6116ac611db4565b60008087878787876040516001608060020a031990951685526c01000000000000000000000000600160a060020a039485168102601087015292909316909102602484015260388301527e0100000000000000000000000000000000000000000000000000000000000061ffff909116026058820152605a016040519081900390206000818152600460205260409081902091925082908290606090519081016040908152915460ff811615158252610100810463ffffffff1660208301526501000000000090046001608060020a0316918101919091529a909950975050505050505050565b600061179d611db4565b6000806117ad8a8a8a8a8a6116a4565b9093509150825115156117c35760009350611862565b60025433600160a060020a039081169116146117e05760006117e8565b618d0485013a025b836040015160008481526004602052604090819020805474ffffffffffffffffffffffffffffffffffffffffff19169055910191507fd9b627ddaa414e8e6c82366cc9c179f6281d73968827cc17038a56852e28ac8b9083905190815260200160405180910390a161185d8988836000611cf9565b600193505b5050509695505050505050565b6000611879611db4565b6000806118898a8a8a8a8a6116a4565b90935091508251151561189f5760009350611862565b6001836020015163ffffffff161115806118c2575042836020015163ffffffff16115b156118d05760009350611862565b60025433600160a060020a039081169116146118ed5760006118f5565b618d0485013a025b836040015160008481526004602052604090819020805474ffffffffffffffffffffffffffffffffffffffffff19169055910191507f366d2b4e6cc37ecebb3d7d41df6d581634fd8137412710a1e086e4ca4656bb589083905190815260200160405180910390a161185d8988836000611cf9565b6000611974611db4565b600061198389898989896116a4565b9092509050815115156119995760009250611a2c565b816020015163ffffffff1615156119b35760009250611a2c565b60008181526004602052604090819020805464ffffffff00191690557fe95fa7985c7585e90dab2dc46470726468662be06f67d79a31a5012e4bc0edeb9082905190815260200160405180910390a160025433600160a060020a0390811691161415611a2757611a2781612f448601611d62565b600192505b50509695505050505050565b6000611a42611db4565b6000611a5189898989896116a4565b909250905081511515611a675760009250611a2c565b816020015163ffffffff166001141515611a845760009250611a2c565b6002546000828152600460205260409081902080544263ffffffff740100000000000000000000000000000000000000009095048516019093166101000264ffffffff0019909316929092179091557f43e76a2687c7b12792086e4c776772be26c4d6a7041115f446cbc22ccada08ab9082905190815260200160405180910390a160025433600160a060020a0390811691161415611a2757611a2781612f448601611d62565b6000611b35611db4565b600080611b458a8a8a8a8a6116a4565b909350915082511515611b5b5760009350611862565b60025433600160a060020a03908116911614611b78576000611b80565b618d0485013a025b836040015160008481526004602052604090819020805474ffffffffffffffffffffffffffffffffffffffffff19169055910191507f6eec2dd2382427616d4ea7ef183b16091feac4e2e63c8b55f25215f132df8d149083905190815260200160405180910390a161185d88888389611cf9565b6000808787876040516001608060020a031993909316835260ff919091167f01000000000000000000000000000000000000000000000000000000000000000260108301526001608060020a031670010000000000000000000000000000000002601182015260210160405180910390209050856001608060020a03163a1115611c7d57611cee565b6001818686866040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515611ce257600080fd5b50506020604051035191505b509695505050505050565b61271061ffff82168402046001608060020a0383160180840384901115611d1f57611d5b565b6003805482019055600160a060020a03851681850380156108fc0290604051600060405180830381858888f193505050501515611d5b57600080fd5b5050505050565b600091825260046020526040909120805474ffffffffffffffffffffffffffffffff00000000001981163a90930265010000000000918290046001608060020a03908116919091011602919091179055565b606060405190810160409081526000808352602083018190529082015290565b602060405190810160405260008152905600a165627a7a723058206892bb8b3f3d8d03c452391b945a85a0b85bc59f54ace201085313f16b984ce40029

   Swarm Source:
bzzr://6892bb8b3f3d8d03c452391b945a85a0b85bc59f54ace201085313f16b984ce4

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.