Sponsored:   VC, TLDR and CoinBene Funded "TEMCO: Bitcoin Network (RSK) Suppy Chain! Whitelist KYC Starts Now!!"
Contract Overview |  LocalEthereum_2
Balance: 21.81112266649489975 Ether
Ether Value: $2,066.17 (@ $94.73/ETH)
Transactions: 111670 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xa38f728c9431a4248753c63423518faf4de63e18at txn 0x1e3ca6184edd369d00f84a89fed8e7646ea15fa11fd53bc890805d368a229a83
Token Balance:
 Latest 25 transactions from a total of 111670 transactions

TxHash Age From To Value [TxFee]
0xddf277f0d3d5de0b06a6f1459f1d64222fa9922f2d6a213153136389456e86e435 days 16 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.000303762816
0x059e5cd233acdb8e8a031317836c023b61434d70feacdfd2d720ac7db7298c2c47 days 9 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.000877115131
0x001784d47e70ea8993b2e2d53a987d34df5b7a2d333476fcea22947d209b62b4147 days 5 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.00019903212
0xa770271c893dbfd02c04a1bccd57e094ab13778db4c61b7438390f32ee311c1d147 days 6 hrs ago0x0b7ef4607e2b9a4f8724386d664ffa8fa76ba3b2  IN   LocalEthereum_20.03913 Ether0.0002041536
0xf17c0d437cd7fea4da905a5e4e2916b0732dbdfb58569d5f666d91c9eb8b92f5154 days 10 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.0002842938
0x9a5c2d9456bade079eb7b650f46e5b1ade2d32ff19d7dbf0b5b6541b386daff8160 days 12 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.0009469656
0x3f0bf67c35ab4527fee5500268485a488a515dad5142dc73ebd0f609f6f87a0b160 days 13 hrs ago0x1fc9756f317640d04f7fccba99ebaa73511f1f97  IN   LocalEthereum_20.04153 Ether0.000973056
0x48dcd44e741ea0b08fec986bf8636a984df3677b432acf7825c8a5db5ec2645f162 days 1 hr ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.00104077512
0xcc91fb6e867da15900c4fcb731e1d3789780c14bb8b372079d5367022abb244b162 days 2 hrs ago0x757281f12fcb5e88e6c8f29458a988bd55604002  IN   LocalEthereum_20.06308 Ether0.0010674048
0xac80e6b9ffa41f690caf5ef23cb72afa9cd9e385fb8a5958e3f942a0ddea8c7a162 days 11 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.000946764
0x56e0f3bca80918296d9d772e7f61286a0211d1d47fc512019d515e3100fa34c9163 days 5 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.0009485784
0xf6cf97e6c89b88ef0959d1fb93e95bce3cccd848645173fa2570f33903ed4b1a163 days 5 hrs ago0x2f6bf50302c5b080c9b1f5f8b87893daec7a92c6  IN   LocalEthereum_20.21305 Ether0.0010713472
0xbbc86758a128f0ca8bbe4e10f7bd75efadd7a51345d9582ea60c309a0189fed1169 days 13 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.00483774984
0xc1346504daa3f18c4c0515be3de57a41a8b5e0582dab1107893ee614ca6e27b4169 days 13 hrs ago0x6e88da9a024d448af59b9507c2cf01416323c731  IN   LocalEthereum_23.09299 Ether0.006811392
0x1de9e0c7acfdc28c9ef20c37a28b0dcee8ebe372e005e3a7e70aa035812ff625171 days 8 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.00435604176
0x9e2145c14dce88a42f1721e53fc8d9a48af0145b4383cbe29fd110f6b0eeb100171 days 8 hrs ago0x23192921a54cfc94da24b47a896ef21856a92b3a  IN   LocalEthereum_20.02897 Ether0.0048608
0x9643edaf4b2b855a148b8e38c21433d3514a9acd6caca341280895cdf4db7ab9177 days 9 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.00009484524
0x5fcb884b53e2439b8d92a0db80d7f743ea00fd1bed43fd8f89c90cd705329aa1177 days 12 hrs ago0x1b6bda2a4eb1d4ae767dad3e1c19fe677894eaff  IN   LocalEthereum_20.07205 Ether0.0000971264
0x9b1724f36d090c7d56f360ac0e780141e03f62a5c3bc6b12e4cb4c70d661a138178 days 2 hrs ago0x77eb7f625124139ac8ce959a0d688367be24acbe  IN   LocalEthereum_20.14319 Ether0.0000973952
0x3ff87c79f5006e1f7a4ba3083ad993f88ee584635bc294c45ccab406ff5fdd9d178 days 4 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.00009485784
0xed34783220bbc03034011f4072e69f02bd01336823f82ccdf1469c6a2f6b07ea178 days 4 hrs ago0x77eb7f625124139ac8ce959a0d688367be24acbe  IN   LocalEthereum_21.01011 Ether0.0000973056
0xf6b9cfe9ee64b4a1d2555c637ed5c7c137e0ddc5ccb5773959f67c6bb2afd4d6179 days 14 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.00009443448
0x7e2aad2d9949c1317f606aa6e37c358d74cbcc043e276dcadc40329c09996f23179 days 15 hrs ago0x8b7a61a1bdcc45a03a457c0e43e02118da360c06  IN   LocalEthereum_20.02072 Ether0.000194432
0x0f306e3c8b02de6e144a65038b31f04b77f8ff7d650a005248a4567d8737c8ea179 days 23 hrs ago0xf008e2c7a7f16ac706c2e0ebd3f015d442016420  IN   LocalEthereum_20 Ether0.0001895544
0xdeff52668ec3460a52f321129c996df0b5ff8c462d503c5567381705da23107a180 days 15 mins ago0x1fa347571a42c59fb161dcc4270905c39c8c14c4  IN   LocalEthereum_20.13284 Ether0.0001946112
[ 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
0xddf277f0d3d5de0b06a6f1459f1d64222fa9922f2d6a213153136389456e86e4669478835 days 16 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xba74a4aabdc19290757dbd64d86b1a16ea9fb2ef0.6071095328 Ether
0x059e5cd233acdb8e8a031317836c023b61434d70feacdfd2d720ac7db7298c2c662350547 days 9 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x79bdb5c77c37a2c62554a8b67fb4ab2a5f6adfc40.06418790096 Ether
0x001784d47e70ea8993b2e2d53a987d34df5b7a2d333476fcea22947d209b62b46022339147 days 5 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xee356239b56059a3ee0739e25cfa91e82b0f35d30.0385677684 Ether
0xf17c0d437cd7fea4da905a5e4e2916b0732dbdfb58569d5f666d91c9eb8b92f55980167154 days 10 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x388046e03bc2da0d62bf6686fcd6d456f3b2b2900.011885812 Ether
0x9a5c2d9456bade079eb7b650f46e5b1ade2d32ff19d7dbf0b5b6541b386daff85943709160 days 12 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xb5b064cc8ed8aed4f121d9e8d723db0eeae13b240.04030074 Ether
0x48dcd44e741ea0b08fec986bf8636a984df3677b432acf7825c8a5db5ec2645f5934766162 days 1 hr ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x41c404ce87abfcf725c752cbedda39d3df633f140.061553844 Ether
0xac80e6b9ffa41f690caf5ef23cb72afa9cd9e385fb8a5958e3f942a0ddea8c7a5932485162 days 11 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x778ec67a733076e33f03da24f101dd78ed8fe2840.14237604 Ether
0x56e0f3bca80918296d9d772e7f61286a0211d1d47fc512019d515e3100fa34c95928124163 days 5 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x0158f03d072787b106027d16f9f6681e83850cd70.21010554 Ether
0xbbc86758a128f0ca8bbe4e10f7bd75efadd7a51345d9582ea60c309a0189fed15891222169 days 13 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x16dbb5a380da523cdc1363dd86c48159e735db183.057908904 Ether
0x1de9e0c7acfdc28c9ef20c37a28b0dcee8ebe372e005e3a7e70aa035812ff6255880709171 days 8 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x524de0c4a9acd214700f6f44c1393b4d44b738dc0.024936084 Ether
0x9643edaf4b2b855a148b8e38c21433d3514a9acd6caca341280895cdf4db7ab95845774177 days 9 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x005ac19365d5988ee2afa08aa9e2e6d45123fc8c0.071968604 Ether
0x3ff87c79f5006e1f7a4ba3083ad993f88ee584635bc294c45ccab406ff5fdd9d5841103178 days 4 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x1eb38db8376310f722d1b637e9916d0d2c2c579b0.999927504 Ether
0xf6b9cfe9ee64b4a1d2555c637ed5c7c137e0ddc5ccb5773959f67c6bb2afd4d65832811179 days 14 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x2049f8f9f3eb8910dde8a3cfa3faf428d29dde650.020638604 Ether
0x0f306e3c8b02de6e144a65038b31f04b77f8ff7d650a005248a4567d8737c8ea5830637179 days 23 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x927427728200d641a92897369a6076f5466d3cec0.131348808 Ether
0x234932c0b4b0c19400b63f7648e5bd921841f279e3f26128cb9a1d89f2b86f815830362180 days 43 mins ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xf1b8f7349e4b2caa0b5006ea687a77914dc99a4e0.0257228496 Ether
0xda395b216530e505fd2cdfd821bf370e3a55be541bc74a375f3d3a7a091372755829991180 days 2 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xbacdcb57353a9aabca37dcd583b83a25fcab2d642.606408208 Ether
0xf8b6f70743ba81aaf4772338c8cd5ec2427ce04d39a6dc14812f39f24510ef2b5824450181 days 45 mins ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xca0d5a248fb482e680c3b757200c0d816976210e0.039437208 Ether
0x0ecf56658ba45b52f26ad5d0d5faabe3c3454a0b2330c72b839991e642c610475821558181 days 12 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xb08b1ce7e343543665871c13acf41c0889f34ba30.033722712 Ether
0x884aab77e87437806c41d12e68900c8b043e1f5be8b9e50c6008d5a40859d90e5804836184 days 9 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x950e3248c8a77ab3e6451c49666df715b430cae21.092710304 Ether
0xcebb86964078a0181070c789913c2736f5e9b77dd222513b137c1be734bea8e05799948185 days 4 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x96c78ae86626b2203fc756424188f7c45799f7571.542698316 Ether
0x622a8133c38fc2b7a9532b9bcd11eb4de49279c2073f2f19aaca2539d1407edd5796009185 days 21 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x18519c52f0397e39aaa2d1b38b6154f2f66ea3431.030047336 Ether
0x92c0e598009b7da0d1bc6c9143c21c15e4cb9a3765bab742f16f22733bfe6d3c5794064186 days 5 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x2c2f77bc75237875045ed0cf9a0259289db749861.01720862 Ether
0x7bdde78f792fa998db74774647d504c68b5babb9b6c8c285537e17eddaa8216a5793131186 days 9 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xf4bc3954434e19f64e46754cb5574e6578de3e990.046044936 Ether
0x4dbcd3e3adac91eee715a00b91877740e71bda9c3bdf972038f42776e2f34a525788992187 days 2 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0x903434ebf4b00d0c1b11e9e3cc1e242c28a795c50.023831568 Ether
0xd0cd0c32e3a74b7f28041d5fe788f1c42a3642a5d3d84bccd991c916319959095788777187 days 3 hrs ago0x09678741bd50c3e74301f38fbd0136307099ae5d0xc75eac906ba5a291c2d3c59f80262156c95be0a00.04426074 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: LocalEthereumEscrows
Compiler Text: 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 transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.