Sponsored Link:   DocTailor - Legal Self Customisable Smart Contract Platform - Bridging the Gap Between Business & Cryptocurrency Holders - Join Now!
Contract Overview
ETH Balance: 593.827804901978888666 Ether
ETH USD Value: $364,438.06 (@ $613.71/ETH)
No Of Transactions: 136956 txns
Misc  
   
Address Watch Add To Watch List
Contract Creator 0x44a93f553bd529c19386b2ddfa30f458b0bc3b20at txn 0x386439acefbf00018b318f283a9ebc6185c483ff6738117243dba40fc1b42bb6
Token Balances
  Latest 25 txns from a total Of 136956 transactions (> more than 25 PendingTxns) View All

TxHash Age From To Value [TxFee]
0x73e679a5ca3ee5a31c242f69b429a7701b62c6a7ca525c8522f239829902740d(pending) 5 secs ago0x472f1c2c3bc506805784da0f246b2ca01522ffde  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x365fb29beef091c717f62c30110f59888c5cb8d715d997d2752d21f91602953a(pending) 5 secs ago0x73566bc7be21b64129449827aebf2205aea2d352  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xe6bd4ff9afba30e82bb56dc71d892b1c591d2692ff04967d0b1c9f6bc919591a(pending)1 min ago0x559aa5f3f79e0acb898e07fa40eb59a51ec82884  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x85787dcea0396b6131b1231c13eadad7ce8df0873b2228f1fd29e20b657c138b(pending)1 min ago0xd896993514b03648bbfbb8b450d8d570b097ba45  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80.77 Ether(pending)
0xb15070a70b3f0127a5d0f6e7d4369cc9e21b33b31838096702fab23574aa4534(pending)2 mins ago0x3f1eb3a18c44ec017b10e82c168443036780d4ba  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xf6389e371fc01a0406c275a7259576ea7958194cddc1624005876c886ed9e5b7(pending)4 mins ago0xeab6d0dbe36b5f92adb78d3143e01db842035aa9  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x262bab3664a1e7e33a432b273e776503dab70f5336d021b80121565ce88b6806(pending)5 mins ago0x3b19f71b8ca2eac636e0eafe264a865bd5467df6  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x4ee5d0a69a24a38723e4b3b892af0a241b76bc9b417a03237b5b69befce37408(pending)10 mins ago0x39a42d474a5296ab98523b1a3def8f1867ad32b0  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xdc18f93b2291d9c3f9b7fd8647f43deedd1bc63294554c44a993f74468fbf0c5(pending)10 mins ago0x5b418ec4508a7a7c4f38c70916f16566a871e4b1  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x133d273ce6462c45dacfe89d168f0c8800d067af6ad0ac37feddc46a2c6c1f06(pending)10 mins ago0xf0679f529e9e5bab2457aabfe2c44ff2d29aefa8  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x6683d6176d2c3d50b3312211b710f1209ff07d6421f50e6e6a5d84b8412b52b0(pending)11 mins ago0xcef33ac00909553ead3d064d03555870c2fb1644  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xb260001ebe368162aded61916777edbda3cb375a7b13b4792f0a1bbf115b8d0e(pending)11 mins ago0xcef33ac00909553ead3d064d03555870c2fb1644  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xbdfe9eaec0e968e0678bda06434c9a8a6f40cb8a2dd86cc8a2594477dbf4d104(pending)11 mins ago0xcef33ac00909553ead3d064d03555870c2fb1644  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x0e2a2cf2276997d1b7b44499831b5f28502d97b7342c81b96493b05bcb75c956(pending)11 mins ago0x4a93362c4ed812fca89239d5f4d7802f55ce1107  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x2c77f09196929c128de1cfbd703d60c03d00cff4d191c0cee3fe1569030129f2(pending)11 mins ago0x16127dd3ed0fab539c51d8eaa977a5fbaaafeebd  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x6597d635d95049734c4cdb85615d4707c64e8addcbec4c56bfe188378b15e8ed(pending)12 mins ago0x0bc5c8deb312972d725fe933ef3a7c3353133e40  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x6b89741d5851cc41f870679fdebaf1fd0afbd5ae832bb8cff0123755b9ed68d9(pending)12 mins ago0x0bc5c8deb312972d725fe933ef3a7c3353133e40  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xec14cf6e7fa9d22d0f806354b129eda1ea0173826466bd76e8f3e96355e252a0(pending)12 mins ago0x0bc5c8deb312972d725fe933ef3a7c3353133e40  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xc3c5ec65ff235642ebfa74235654771e8c363a2fb83b58fff6eaa5966d8c1170(pending)12 mins ago0x0bc5c8deb312972d725fe933ef3a7c3353133e40  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xaf88f7e32e850a878e21566c3affb42de3eee4f11a3e9a1ecc0ef5ea0c51d8ff(pending)12 mins ago0x0bc5c8deb312972d725fe933ef3a7c3353133e40  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x979c7710c5130b79755a76ff7a2b1c68b3a2bd325d44bbee65dac5716f7968be(pending)14 mins ago0x39a42d474a5296ab98523b1a3def8f1867ad32b0  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xdbff892273a31eb032613c2e2d693e849624e96f61433ae666d6809d608cd9ae(pending)17 mins ago0x6f8d1c4f37c7d762dab80e8ddd3e8722dd01d3b9  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xb912f294b265e4c81d6da5be0210bc2035fbb52b5e48752c22293421fc544562(pending)18 mins ago0x86bec6503abda0a87050db46ea3b2e2c240b96df  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x44175f4ef746c9ece09da577c348f5e4e0fc3571f2a8572ef8aa3f1ab88c69d7(pending)18 mins ago0x86bec6503abda0a87050db46ea3b2e2c240b96df  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x03dc54b3a161aa11a85bc218602181eb6827d7db6439ce43b3e56cf23c6ea9d3(pending)18 mins ago0x86bec6503abda0a87050db46ea3b2e2c240b96df  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
 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
0xcf3768e7fce06aae16d36a845bae0af353344a4eb815761418bf43bd5fb7afaf55036672 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x7a9fff8932caa0493ca15eef8ba55ebde1d156380.02 Ether
0x0a419a1053bc8a46e63757bf7ae13be92670d61cc98478f9d4625752256c677355036603 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xe7a024e0b0783a97dbd8d93e207275ed3e6767340.152 Ether
0xef41241f8e38710993e84a953265ed690cf3f5e75f4c28d424e5532b18a0e021550359519 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x3488225d31ffccfa0e7cfd0d95d6cbd26e2a620e0.07 Ether
0x31829a311db0190c03f57c42e90cf12d3d898d48f22f507982ad22cb65402e63550357822 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x8dcea2c73373ec850b5ac940c5e4a4233ca1abb12.264 Ether
0xb2f6f963e5e0aa3362be91ebd1571a6102cef7c8127b7f849f539c35d013db78550354730 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xb5e40b778bbf3d082b18e28a7c3b0f588e83caf50.00427 Ether
0x6db4337c28276f40f928dc42c458245bdd5edf4497a199bc2ebc73be3499843c55033631 hr 13 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x1e0e72534cf7a9aa0fe5b9a555c9d144f264f8af0.903 Ether
0x2d8fbac1af9d09b34b15317a3bec7d6be4c19a82c5935af63afc18d4d63b3b3c55033121 hr 27 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x0a3e36dfa53a23f1f5a2df5b43373ab47ca72f649.597 Ether
0x33e4ceeb02150f35f3ddb1ca505ce9ed45eeadb0ddc695d9fe1c764165d3b10a55032841 hr 34 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x2cd068430a1b8d515753f2dd07d02f93a2e99a800.0124 Ether
0x7d07e914e9081e83cafa5bb8e5fb5a42a7b98278acb404e5c01d543dd4194b3355032431 hr 43 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xecf125f4dd02673889871e815f523e535c44c5f10.0314 Ether
0x92230bef657920c8e3f7b63b34c7bc5473b6474726aa2ad9384fd06f2cde6a3e55031212 hrs 10 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x7573cc6e31acc9e534cd060b5ae2b59a0e7b11e30.0164 Ether
0xffac9836b07e0445b671f38539d363041181c9344d9c4681ae8f8ae546732d3f55031162 hrs 11 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x3a3201a86bd977011a1e3ece6b06fb33950f9e0c0.03 Ether
0x5b1eb27396c769399b25330c0a8a36bc31a67d61565230c7db713b48d498265455031052 hrs 13 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xbb1e7798aadfc1a30ad6745e35b0b827348919cd1.07 Ether
0xe5f8810e195575cb8a4ad658155e8c983de985f327e1faf0413034a705881b9c55030492 hrs 27 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x91a96e0f7705a206b782a7d80dc92e0f7e53d9270.60021 Ether
0xe5f8810e195575cb8a4ad658155e8c983de985f327e1faf0413034a705881b9c55030492 hrs 27 mins ago0x91a96e0f7705a206b782a7d80dc92e0f7e53d9270x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80.588480160000000001 Ether
0xde2a776c50e08dc683de5b3a588d0cb068289cf06f3457916c40d0b28bfce63755030492 hrs 27 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x4f161c16137fa45e4f999cb7ae12b7f8ecd980a00.05 Ether
0xa3b6c723312b0044a60f98e0f7e4a37eb20529a4db84e6c7f57559de2a51e2e755030192 hrs 35 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x91a96e0f7705a206b782a7d80dc92e0f7e53d9270.58266 Ether
0xa3b6c723312b0044a60f98e0f7e4a37eb20529a4db84e6c7f57559de2a51e2e755030192 hrs 35 mins ago0x91a96e0f7705a206b782a7d80dc92e0f7e53d9270x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80.563811375000000001 Ether
0xa29f8a8993382d160fe5509cb26fc054a2bed741096cb9d04025dac917d0998b55029013 hrs 3 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xec47322d205c0b2e67cee3fd7f5b5271aafd8fb20.00519 Ether
0x5b6a1b1e1b67d6305c9e00232f17b306ef0fa6c26c8889b5dd6d2c965e7ad02755028933 hrs 6 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x4f161c16137fa45e4f999cb7ae12b7f8ecd980a00.025 Ether
0xb327339589822e952fdaf054d26b63bc5796a7e8a2cc989b6edc84b99b9d2af955028813 hrs 10 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xee8294aca1bb65d0039d0e1da415e1b1b82259580.105 Ether
0xf1864d5e75cab5543517837212289af6fb3e5856eadee45004ec98f7379c972d55028643 hrs 13 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x4feee04d15e27bc9aa82324b2b629a00ea962a3c0.0007 Ether
0xf4b808c0c23285153fe2a9f4ba9bb89740699ed44ecc579f19583d4993c7664655027393 hrs 45 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x227d6bd2cdd2c34057f2e186b2ea41b939b1ed7d0.002 Ether
0xdc7d022b773db17d53c3e8221f9df55f5153df1f0702c9db7d618cd6bdcaa9c455026264 hrs 12 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x9c2e8e09efd4cf49f42bb32e57a54e41705d14100.185 Ether
0xe7d7273c398d045bb127d4f807bb0ed5cfadfa413da62ac290a49bf467cad46355025774 hrs 22 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x72106bacec56d3e2bfc375ebf720257ee6f0db900.1 Ether
0x63ea47c0769647be4a790399e1a9eeb2b0bd3a70e6e041e91a7dd91dbedf47d455025514 hrs 28 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x5de03962f35593113a4861c91ea773a6c39d83900.00049 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity), DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
Contract Name: TokenStore
Compiler Version: v0.4.13+commit.fb4cb1a
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.11;

// ERC20 token protocol, see more details at
// https://theethereum.wiki/w/index.php/ERC20_Token_Standard
// And also https://github.com/ethereum/eips/issues/20

contract Token {
  function totalSupply() constant returns (uint256 supply);
  function balanceOf(address _owner) constant returns (uint256 balance);
  function transfer(address _to, uint256 _value) returns (bool success);
  function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
  function approve(address _spender, uint256 _value) returns (bool success);
  function allowance(address _owner, address _spender) constant returns (uint256 remaining);

  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

// Safe mathematics to make the code more readable

contract SafeMath {
  function safeMul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function safeSub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function safeAdd(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c>=a && c>=b);
    return c;
  }
}

// Ownable interface to simplify owner checks

contract Ownable {
  address public owner;

  function Ownable() {
    owner = msg.sender;
  }

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

  function transferOwnership(address _newOwner) onlyOwner {
    require(_newOwner != address(0));
    owner = _newOwner;
  }
}

// Interface for trading discounts and rebates for specific accounts

contract AccountModifiersInterface {
  function accountModifiers(address _user) constant returns(uint takeFeeDiscount, uint rebatePercentage);
  function tradeModifiers(address _maker, address _taker) constant returns(uint takeFeeDiscount, uint rebatePercentage);
}

// Interface for trade tacker

contract TradeTrackerInterface {
  function tradeComplete(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, address _get, address _give, uint _takerFee, uint _makerRebate);
}

// Exchange contract

contract TokenStore is SafeMath, Ownable {

  // The account that will receive fees
  address feeAccount;

  // The account that stores fee discounts/rebates
  address accountModifiers;
  
  // Trade tracker account
  address tradeTracker;

  // We charge only the takers and this is the fee, percentage times 1 ether
  uint public fee;

  // Mapping of token addresses to mapping of account balances (token 0 means Ether)
  mapping (address => mapping (address => uint)) public tokens;

  // Mapping of user accounts to mapping of order hashes to uints (amount of order that has been filled)
  mapping (address => mapping (bytes32 => uint)) public orderFills;
  
  // Address of a next and previous versions of the contract, also status of the contract
  // can be used for user-triggered fund migrations
  address public successor;
  address public predecessor;
  bool public deprecated;
  uint16 public version;

  // Logging events
  // Note: Order creation is handled off-chain, see explanation further below
  event Cancel(address tokenGet, uint amountGet, address tokenGive, uint amountGive, uint expires, uint nonce, address user, uint8 v, bytes32 r, bytes32 s);
  event Trade(address tokenGet, uint amountGet, address tokenGive, uint amountGive, address get, address give, uint nonce);
  event Deposit(address token, address user, uint amount, uint balance);
  event Withdraw(address token, address user, uint amount, uint balance);
  event FundsMigrated(address user);

  function TokenStore(uint _fee, address _predecessor) {
    feeAccount = owner;
    fee = _fee;
    predecessor = _predecessor;
    deprecated = false;
    if (predecessor != address(0)) {
      version = TokenStore(predecessor).version() + 1;
    } else {
      version = 1;
    }
  }

  // Throw on default handler to prevent direct transactions of Ether
  function() {
    revert();
  }
  
  modifier deprecable() {
    require(!deprecated);
    _;
  }

  function deprecate(bool _deprecated, address _successor) onlyOwner {
    deprecated = _deprecated;
    successor = _successor;
  }

  function changeFeeAccount(address _feeAccount) onlyOwner {
    require(_feeAccount != address(0));
    feeAccount = _feeAccount;
  }

  function changeAccountModifiers(address _accountModifiers) onlyOwner {
    accountModifiers = _accountModifiers;
  }
  
  function changeTradeTracker(address _tradeTracker) onlyOwner {
    tradeTracker = _tradeTracker;
  }

  // Fee can only be decreased!
  function changeFee(uint _fee) onlyOwner {
    require(_fee <= fee);
    fee = _fee;
  }
  
  // Allows a user to get her current discount/rebate
  function getAccountModifiers() constant returns(uint takeFeeDiscount, uint rebatePercentage) {
    if (accountModifiers != address(0)) {
      return AccountModifiersInterface(accountModifiers).accountModifiers(msg.sender);
    } else {
      return (0, 0);
    }
  }
  
  ////////////////////////////////////////////////////////////////////////////////
  // Deposits, withdrawals, balances
  ////////////////////////////////////////////////////////////////////////////////

  function deposit() payable deprecable {
    tokens[0][msg.sender] = safeAdd(tokens[0][msg.sender], msg.value);
    Deposit(0, msg.sender, msg.value, tokens[0][msg.sender]);
  }

  function withdraw(uint _amount) {
    require(tokens[0][msg.sender] >= _amount);
    tokens[0][msg.sender] = safeSub(tokens[0][msg.sender], _amount);
    if (!msg.sender.call.value(_amount)()) {
      revert();
    }
    Withdraw(0, msg.sender, _amount, tokens[0][msg.sender]);
  }

  function depositToken(address _token, uint _amount) deprecable {
    // Note that Token(_token).approve(this, _amount) needs to be called
    // first or this contract will not be able to do the transfer.
    require(_token != 0);
    if (!Token(_token).transferFrom(msg.sender, this, _amount)) {
      revert();
    }
    tokens[_token][msg.sender] = safeAdd(tokens[_token][msg.sender], _amount);
    Deposit(_token, msg.sender, _amount, tokens[_token][msg.sender]);
  }

  function withdrawToken(address _token, uint _amount) {
    require(_token != 0);
    require(tokens[_token][msg.sender] >= _amount);
    tokens[_token][msg.sender] = safeSub(tokens[_token][msg.sender], _amount);
    if (!Token(_token).transfer(msg.sender, _amount)) {
      revert();
    }
    Withdraw(_token, msg.sender, _amount, tokens[_token][msg.sender]);
  }

  function balanceOf(address _token, address _user) constant returns (uint) {
    return tokens[_token][_user];
  }
  
  ////////////////////////////////////////////////////////////////////////////////
  // Trading
  ////////////////////////////////////////////////////////////////////////////////

  // Note: Order creation happens off-chain but the orders are signed by creators,
  // we validate the contents and the creator address in the logic below

  function trade(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive,
      uint _expires, uint _nonce, address _user, uint8 _v, bytes32 _r, bytes32 _s, uint _amount) {
    bytes32 hash = sha256(this, _tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce);
    // Check order signatures and expiration, also check if not fulfilled yet
		if (ecrecover(sha3("\x19Ethereum Signed Message:\n32", hash), _v, _r, _s) != _user ||
      block.number > _expires ||
      safeAdd(orderFills[_user][hash], _amount) > _amountGet) {
      revert();
    }
    tradeBalances(_tokenGet, _amountGet, _tokenGive, _amountGive, _user, msg.sender, _amount);
    orderFills[_user][hash] = safeAdd(orderFills[_user][hash], _amount);
    Trade(_tokenGet, _amount, _tokenGive, _amountGive * _amount / _amountGet, _user, msg.sender, _nonce);
  }
  
  function tradeBalances(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive,
      address _user, address _caller, uint _amount) private {

    uint feeTakeValue = safeMul(_amount, fee) / (1 ether);
    uint rebateValue = 0;
    uint tokenGiveValue = safeMul(_amountGive, _amount) / _amountGet; // Proportionate to request ratio

    // Apply modifiers
    if (accountModifiers != address(0)) {
      var (feeTakeDiscount, rebatePercentage) = AccountModifiersInterface(accountModifiers).tradeModifiers(_user, _caller);
      // Check that the discounts/rebates are never higher then 100%
      if (feeTakeDiscount > 100) {
        feeTakeDiscount = 0;
      }
      if (rebatePercentage > 100) {
        rebatePercentage = 0;
      }
      feeTakeValue = safeMul(feeTakeValue, 100 - feeTakeDiscount) / 100;  // discounted fee
      rebateValue = safeMul(rebatePercentage, feeTakeValue) / 100;        // % of actual taker fee
    }
    
    tokens[_tokenGet][_user] = safeAdd(tokens[_tokenGet][_user], safeAdd(_amount, rebateValue));
    tokens[_tokenGet][_caller] = safeSub(tokens[_tokenGet][_caller], safeAdd(_amount, feeTakeValue));
    tokens[_tokenGive][_user] = safeSub(tokens[_tokenGive][_user], tokenGiveValue);
    tokens[_tokenGive][_caller] = safeAdd(tokens[_tokenGive][_caller], tokenGiveValue);
    tokens[_tokenGet][feeAccount] = safeAdd(tokens[_tokenGet][feeAccount], safeSub(feeTakeValue, rebateValue));
    
    if (tradeTracker != address(0)) {
      TradeTrackerInterface(tradeTracker).tradeComplete(_tokenGet, _amount, _tokenGive, tokenGiveValue, _user, _caller, feeTakeValue, rebateValue);
    }
  }

  function testTrade(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, uint _expires,
      uint _nonce, address _user, uint8 _v, bytes32 _r, bytes32 _s, uint _amount, address _sender) constant returns(bool) {
    if (tokens[_tokenGet][_sender] < _amount ||
      availableVolume(_tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce, _user, _v, _r, _s) < _amount) {
      return false;
    }
    return true;
  }

  function availableVolume(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, uint _expires,
      uint _nonce, address _user, uint8 _v, bytes32 _r, bytes32 _s) constant returns(uint) {
    bytes32 hash = sha256(this, _tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce);
    if (ecrecover(sha3("\x19Ethereum Signed Message:\n32", hash), _v, _r, _s) != _user ||
      block.number > _expires) {
      return 0;
    }
    uint available1 = safeSub(_amountGet, orderFills[_user][hash]);
    uint available2 = safeMul(tokens[_tokenGive][_user], _amountGet) / _amountGive;
    if (available1 < available2) return available1;
    return available2;
  }

  function amountFilled(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, uint _expires,
      uint _nonce, address _user) constant returns(uint) {
    bytes32 hash = sha256(this, _tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce);
    return orderFills[_user][hash];
  }

  function cancelOrder(address _tokenGet, uint _amountGet, address _tokenGive, uint _amountGive, uint _expires,
      uint _nonce, uint8 _v, bytes32 _r, bytes32 _s) {
    bytes32 hash = sha256(this, _tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce);
    if (!(ecrecover(sha3("\x19Ethereum Signed Message:\n32", hash), _v, _r, _s) == msg.sender)) {
      revert();
    }
    orderFills[msg.sender][hash] = _amountGet;
    Cancel(_tokenGet, _amountGet, _tokenGive, _amountGive, _expires, _nonce, msg.sender, _v, _r, _s);
  }
  
  ////////////////////////////////////////////////////////////////////////////////
  // Migrations
  ////////////////////////////////////////////////////////////////////////////////

  // User-triggered (!) fund migrations in case contract got updated
  // Similar to withdraw but we use a successor account instead
  // As we don't store user tokens list on chain, it has to be passed from the outside
  function migrateFunds(address[] _tokens) {
  
    // Get the latest successor in the chain
    require(successor != address(0));
    TokenStore newExchange = TokenStore(successor);
    for (uint16 n = 0; n < 20; n++) {  // We will look past 20 contracts in the future
      address nextSuccessor = newExchange.successor();
      if (nextSuccessor == address(this)) {  // Circular succession
        revert();
      }
      if (nextSuccessor == address(0)) { // We reached the newest, stop
        break;
      }
      newExchange = TokenStore(nextSuccessor);
    }

    // Ether
    uint etherAmount = tokens[0][msg.sender];
    if (etherAmount > 0) {
      tokens[0][msg.sender] = 0;
      newExchange.depositForUser.value(etherAmount)(msg.sender);
    }

    // Tokens
    for (n = 0; n < _tokens.length; n++) {
      address token = _tokens[n];
      require(token != address(0)); // 0 = Ether, we handle it above
      uint tokenAmount = tokens[token][msg.sender];
      if (tokenAmount == 0) {
        continue;
      }
      if (!Token(token).approve(newExchange, tokenAmount)) {
        revert();
      }
      tokens[token][msg.sender] = 0;
      newExchange.depositTokenForUser(token, tokenAmount, msg.sender);
    }

    FundsMigrated(msg.sender);
  }

  // This is used for migrations only. To be called by previous exchange only,
  // user-triggered, on behalf of the user called the migrateFunds method.
  // Note that it does exactly the same as depositToken, but as this is called
  // by a previous generation of exchange itself, we credit internally not the
  // previous exchange, but the user it was called for.
  function depositForUser(address _user) payable deprecable {
    require(_user != address(0));
    require(msg.value > 0);
    TokenStore caller = TokenStore(msg.sender);
    require(caller.version() > 0); // Make sure it's an exchange account
    tokens[0][_user] = safeAdd(tokens[0][_user], msg.value);
  }

  function depositTokenForUser(address _token, uint _amount, address _user) deprecable {
    require(_token != address(0));
    require(_user != address(0));
    require(_amount > 0);
    TokenStore caller = TokenStore(msg.sender);
    require(caller.version() > 0); // Make sure it's an exchange account
    if (!Token(_token).transferFrom(msg.sender, this, _amount)) {
      revert();
    }
    tokens[_token][_user] = safeAdd(tokens[_token][_user], _amount);
  }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_tokenGet","type":"address"},{"name":"_amountGet","type":"uint256"},{"name":"_tokenGive","type":"address"},{"name":"_amountGive","type":"uint256"},{"name":"_expires","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_user","type":"address"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"},{"name":"_amount","type":"uint256"}],"name":"trade","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"deprecated","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orderFills","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenGet","type":"address"},{"name":"_amountGet","type":"uint256"},{"name":"_tokenGive","type":"address"},{"name":"_amountGive","type":"uint256"},{"name":"_expires","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"cancelOrder","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenGet","type":"address"},{"name":"_amountGet","type":"uint256"},{"name":"_tokenGive","type":"address"},{"name":"_amountGive","type":"uint256"},{"name":"_expires","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_user","type":"address"}],"name":"amountFilled","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"depositToken","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_accountModifiers","type":"address"}],"name":"changeAccountModifiers","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_user","type":"address"}],"name":"depositTokenForUser","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tradeTracker","type":"address"}],"name":"changeTradeTracker","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"uint16"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getAccountModifiers","outputs":[{"name":"takeFeeDiscount","type":"uint256"},{"name":"rebatePercentage","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_fee","type":"uint256"}],"name":"changeFee","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"depositForUser","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenGet","type":"address"},{"name":"_amountGet","type":"uint256"},{"name":"_tokenGive","type":"address"},{"name":"_amountGive","type":"uint256"},{"name":"_expires","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_user","type":"address"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"},{"name":"_amount","type":"uint256"},{"name":"_sender","type":"address"}],"name":"testTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"successor","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_feeAccount","type":"address"}],"name":"changeFeeAccount","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"predecessor","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokens","type":"address[]"}],"name":"migrateFunds","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"fee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_deprecated","type":"bool"},{"name":"_successor","type":"address"}],"name":"deprecate","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_token","type":"address"},{"name":"_user","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenGet","type":"address"},{"name":"_amountGet","type":"uint256"},{"name":"_tokenGive","type":"address"},{"name":"_amountGive","type":"uint256"},{"name":"_expires","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_user","type":"address"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"availableVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_fee","type":"uint256"},{"name":"_predecessor","type":"address"}],"payable":false,"type":"constructor"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenGet","type":"address"},{"indexed":false,"name":"amountGet","type":"uint256"},{"indexed":false,"name":"tokenGive","type":"address"},{"indexed":false,"name":"amountGive","type":"uint256"},{"indexed":false,"name":"expires","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"v","type":"uint8"},{"indexed":false,"name":"r","type":"bytes32"},{"indexed":false,"name":"s","type":"bytes32"}],"name":"Cancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenGet","type":"address"},{"indexed":false,"name":"amountGet","type":"uint256"},{"indexed":false,"name":"tokenGive","type":"address"},{"indexed":false,"name":"amountGive","type":"uint256"},{"indexed":false,"name":"get","type":"address"},{"indexed":false,"name":"give","type":"address"},{"indexed":false,"name":"nonce","type":"uint256"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"user","type":"address"}],"name":"FundsMigrated","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b60405160408061233883398101604052808051919060200180519150505b5b60008054600160a060020a03191633600160a060020a03161790555b60005460018054600160a060020a03928316600160a060020a0319918216179091556004849055600880549091168383161760a060020a60ff02198116909155161561013057600854600160a060020a03166354fd4d506000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156100f157600080fd5b6102c65a03f1151561010257600080fd5b50505060405180519050600101600860156101000a81548161ffff021916908361ffff16021790555061015a565b6008805460a860020a61ffff02191675010000000000000000000000000000000000000000001790555b5b50505b6121cb8061016d6000396000f3006060604052361561014e5763ffffffff60e060020a6000350416630a19b14a81146101665780630e136b19146101b557806319774d43146101dc578063278b8c0e146102105780632d804ca2146102515780632e1a7d4d1461029e578063338b5dea146102b657806338ec18c3146102da5780633c2e2a75146102fb57806348d64fd514610326578063508493bc1461034757806354fd4d501461037e57806359015ed5146103a85780636a1db1bf146103d35780636a523c5e146103eb5780636c86888b146104015780636ff968c31461046d57806371ffcb161461049c5780638da5cb5b146104bd5780639e281a98146104ec578063b719d03214610510578063be3dd1311461053f578063d0e30db014610590578063ddca3f431461059a578063e6213127146105bf578063f2fde38b146105e5578063f7888aec14610606578063fb6e155f1461063d575b341561015957600080fd5b6101645b600080fd5b565b005b341561017157600080fd5b610164600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e43516610104356101243561014435610698565b005b34156101c057600080fd5b6101c8610921565b604051901515815260200160405180910390f35b34156101e757600080fd5b6101fe600160a060020a0360043516602435610931565b60405190815260200160405180910390f35b341561021b57600080fd5b610164600160a060020a03600435811690602435906044351660643560843560a43560ff60c4351660e4356101043561094e565b005b341561025c57600080fd5b6101fe600160a060020a0360043581169060243590604435811690606435906084359060a4359060c43516610b74565b60405190815260200160405180910390f35b34156102a957600080fd5b610164600435610c39565b005b34156102c157600080fd5b610164600160a060020a0360043516602435610d6f565b005b34156102e557600080fd5b610164600160a060020a0360043516610ee8565b005b341561030657600080fd5b610164600160a060020a036004358116906024359060443516610f30565b005b341561033157600080fd5b610164600160a060020a03600435166110e3565b005b341561035257600080fd5b6101fe600160a060020a036004358116906024351661112b565b60405190815260200160405180910390f35b341561038957600080fd5b610391611148565b60405161ffff909116815260200160405180910390f35b34156103b357600080fd5b6103bb61116b565b60405191825260208201526040908101905180910390f35b34156103de57600080fd5b61016460043561120f565b005b610164600160a060020a0360043516611243565b005b341561040c57600080fd5b6101c8600160a060020a0360043581169060243590604435811690606435906084359060a4359060c43581169060ff60e4351690610104359061012435906101443590610164351661134f565b604051901515815260200160405180910390f35b341561047857600080fd5b6104806113b6565b604051600160a060020a03909116815260200160405180910390f35b34156104a757600080fd5b610164600160a060020a03600435166113c5565b005b34156104c857600080fd5b610480611422565b604051600160a060020a03909116815260200160405180910390f35b34156104f757600080fd5b610164600160a060020a0360043516602435611431565b005b341561051b57600080fd5b6104806115d9565b604051600160a060020a03909116815260200160405180910390f35b341561054a57600080fd5b61016460046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506115e895505050505050565b005b610164611970565b005b34156105a557600080fd5b6101fe611a3e565b60405190815260200160405180910390f35b34156105ca57600080fd5b6101646004351515600160a060020a0360243516611a44565b005b34156105f057600080fd5b610164600160a060020a0360043516611ab5565b005b341561061157600080fd5b6101fe600160a060020a0360043581169060243516611b12565b60405190815260200160405180910390f35b341561064857600080fd5b6101fe600160a060020a0360043581169060243590604435811690606435906084359060a4359060c4351660ff60e435166101043561012435611b3f565b60405190815260200160405180910390f35b60006002308d8d8d8d8d8d6000604051602001526040516c01000000000000000000000000600160a060020a0398891681028252968816870260148201526028810195909552929095169093026048830152605c820192909252607c810192909252609c82015260bc0160206040518083038160008661646e5a03f1151561071f57600080fd5b50506040518051915050600160a060020a0386166001826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0160405180910390208787876040518060005260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156107d157600080fd5b505060206040510351600160a060020a03161415806107ef57508743115b806108275750600160a060020a03861660009081526006602090815260408083208484529091529020548b906108259084611d3d565b115b1561083157600080fd5b6108408c8c8c8c8a3388611d65565b600160a060020a038616600090815260066020908152604080832084845290915290205461086e9083611d3d565b600160a060020a03871660009081526006602090815260408083208584529091529020557f3314c351c2a2a45771640a1442b843167a4da29bd543612311c031bbfb4ffa988c838c8e8d83028115156108c357fe5b048a338d604051600160a060020a03978816815260208101969096529386166040808701919091526060860193909352908516608085015290931660a083015260c082015260e001905180910390a15b505050505050505050505050565b60085460a060020a900460ff1681565b600660209081526000928352604080842090915290825290205481565b60006002308b8b8b8b8b8b6000604051602001526040516c01000000000000000000000000600160a060020a0398891681028252968816870260148201526028810195909552929095169093026048830152605c820192909252607c810192909252609c82015260bc0160206040518083038160008661646e5a03f115156109d557600080fd5b50506040518051915050600160a060020a0333166001826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0160405180910390208686866040518060005260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610a8757600080fd5b505060206040510351600160a060020a031614610aa357600080fd5b33600160a060020a0381166000908152600660209081526040808320858452909152908190208b90557f1e0b760c386003e9cb9bcf4fcf3997886042859d9b6ed6320e804597fcdb28b0918c918c918c918c918c918c91908c908c908c9051600160a060020a039a8b16815260208101999099529689166040808a01919091526060890196909652608088019490945260a087019290925290951660c085015260ff90941660e084015261010083019390935261012082015261014001905180910390a15b50505050505050505050565b6000806002308a8a8a8a8a8a6000604051602001526040516c01000000000000000000000000600160a060020a0398891681028252968816870260148201526028810195909552929095169093026048830152605c820192909252607c810192909252609c82015260bc0160206040518083038160008661646e5a03f11515610bfc57600080fd5b50506040518051600160a060020a038516600090815260066020908152604080832084845290915290205493509150505b50979650505050505050565b33600160a060020a03166000908152600080516020612180833981519152602052604090205481901015610c6c57600080fd5b33600160a060020a031660009081526000805160206121808339815191526020526040902054610c9c9082612139565b33600160a060020a03166000818152600080516020612180833981519152602052604090819020929092559082905160006040518083038185876187965a03f1925050501515610ceb57600080fd5b33600160a060020a03811660009081526000805160206121808339815191526020526040808220547ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb567939185919051600160a060020a0394851681529290931660208301526040808301919091526060820192909252608001905180910390a15b50565b60085460a060020a900460ff1615610d8657600080fd5b600160a060020a0382161515610d9b57600080fd5b81600160a060020a03166323b872dd33308460006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610e0557600080fd5b6102c65a03f11515610e1657600080fd5b505050604051805190501515610e2b57600080fd5b600160a060020a0380831660009081526005602090815260408083203390941683529290522054610e5c9082611d3d565b600160a060020a038381166000908152600560209081526040808320339485168452909152908190208390557fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d79285929185919051600160a060020a0394851681529290931660208301526040808301919091526060820192909252608001905180910390a15b5b5050565b60005433600160a060020a03908116911614610f0357600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60085460009060a060020a900460ff1615610f4a57600080fd5b600160a060020a0384161515610f5f57600080fd5b600160a060020a0382161515610f7457600080fd5b60008311610f8157600080fd5b50336000600160a060020a0382166354fd4d5082604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610fca57600080fd5b6102c65a03f11515610fdb57600080fd5b5050506040518051905061ffff16111515610ff557600080fd5b83600160a060020a03166323b872dd33308660006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561105f57600080fd5b6102c65a03f1151561107057600080fd5b50505060405180519050151561108557600080fd5b600160a060020a038085166000908152600560209081526040808320938616835292905220546110b59084611d3d565b600160a060020a038086166000908152600560209081526040808320938716835292905220555b5b50505050565b60005433600160a060020a039081169116146110fe57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600560209081526000928352604080842090915290825290205481565b6008547501000000000000000000000000000000000000000000900461ffff1681565b6002546000908190600160a060020a03161561120357600254600160a060020a031663ea08ec2c3360006040516040015260405160e060020a63ffffffff8416028152600160a060020a0390911660048201526024016040805180830381600087803b15156111d957600080fd5b6102c65a03f115156111ea57600080fd5b505050604051805190602001805190509150915061120a565b5060009050805b5b9091565b60005433600160a060020a0390811691161461122a57600080fd5b60045481111561123957600080fd5b60048190555b5b50565b60085460009060a060020a900460ff161561125d57600080fd5b600160a060020a038216151561127257600080fd5b6000341161127f57600080fd5b50336000600160a060020a0382166354fd4d5082604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156112c857600080fd5b6102c65a03f115156112d957600080fd5b5050506040518051905061ffff161115156112f357600080fd5b600160a060020a038216600090815260008051602061218083398151915260205260409020546113239034611d3d565b600160a060020a038316600090815260008051602061218083398151915260205260409020555b5b5050565b600160a060020a03808d166000908152600560209081526040808320938516835292905290812054839010806113955750826113938e8e8e8e8e8e8e8e8e8e611b3f565b105b156113a2575060006113a6565b5060015b9c9b505050505050505050505050565b600754600160a060020a031681565b60005433600160a060020a039081169116146113e057600080fd5b600160a060020a03811615156113f557600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600054600160a060020a031681565b600160a060020a038216151561144657600080fd5b600160a060020a03808316600090815260056020908152604080832033909416835292905220548190101561147a57600080fd5b600160a060020a03808316600090815260056020908152604080832033909416835292905220546114ab9082612139565b600160a060020a03808416600081815260056020908152604080832033958616845290915280822094909455909263a9059cbb92918591516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561152a57600080fd5b6102c65a03f1151561153b57600080fd5b50505060405180519050151561155057600080fd5b600160a060020a03808316600090815260056020908152604080832033948516845290915290819020547ff341246adaac6f497bc2a656f546ab9e182111d630394f0c57c710a59a2cb5679285929091859151600160a060020a0394851681529290931660208301526040808301919091526060820192909252608001905180910390a15b5050565b600854600160a060020a031681565b60075460009081908190819081908190600160a060020a0316151561160c57600080fd5b600754600160a060020a03169550600094505b60148561ffff1610156116d25785600160a060020a0316636ff968c36000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561167257600080fd5b6102c65a03f1151561168357600080fd5b50505060405180519050935030600160a060020a031684600160a060020a031614156116ae57600080fd5b600160a060020a03841615156116c3576116d2565b8395505b60019094019361161f565b33600160a060020a031660009081526000805160206121808339815191526020526040812054935083111561178a57600160a060020a0333818116600090815260008051602061218083398151915260205260408082209190915591881691636a523c5e9186915160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b151561177457600080fd5b6125ee5a03f1151561178557600080fd5b505050505b600094505b86518561ffff16101561192957868561ffff16815181106117ac57fe5b906020019060200201519150600160a060020a03821615156117cd57600080fd5b50600160a060020a03808216600090815260056020908152604080832033909416835292905220548015156118015761191e565b81600160a060020a031663095ea7b3878360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561185e57600080fd5b6102c65a03f1151561186f57600080fd5b50505060405180519050151561188457600080fd5b600160a060020a03808316600090815260056020908152604080832033808616855292528083209290925591881691633c2e2a7591859185915160e060020a63ffffffff8616028152600160a060020a03938416600482015260248101929092529091166044820152606401600060405180830381600087803b151561190957600080fd5b6102c65a03f1151561191a57600080fd5b5050505b60019094019361178f565b7f0e3e9a671666295c299b941a07625839915442794bf73a484b24bb3e221270c333604051600160a060020a03909116815260200160405180910390a15b50505050505050565b60085460a060020a900460ff161561198757600080fd5b33600160a060020a0316600090815260008051602061218083398151915260205260409020546119b79034611d3d565b33600160a060020a038116600090815260008051602061218083398151915260205260408082208490557fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d793919291349151600160a060020a0394851681529290931660208301526040808301919091526060820192909252608001905180910390a15b5b565b60045481565b60005433600160a060020a03908116911614611a5f57600080fd5b6008805474ff0000000000000000000000000000000000000000191660a060020a841515021790556007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b5050565b60005433600160a060020a03908116911614611ad057600080fd5b600160a060020a0381161515611ae557600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a038083166000908152600560209081526040808320938516835292905220545b92915050565b6000806000806002308f8f8f8f8f8f6000604051602001526040516c01000000000000000000000000600160a060020a0398891681028252968816870260148201526028810195909552929095169093026048830152605c820192909252607c810192909252609c82015260bc0160206040518083038160008661646e5a03f11515611bca57600080fd5b50506040518051935050600160a060020a0388166001846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0160405180910390208989896040518060005260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515611c7c57600080fd5b505060206040510351600160a060020a0316141580611c9a57508943115b15611ca85760009350611d2c565b600160a060020a0388166000908152600660209081526040808320868452909152902054611cd7908e90612139565b600160a060020a03808e166000908152600560209081526040808320938d16835292905220549092508b90611d0c908f612150565b811515611d1557fe5b04905080821015611d2857819350611d2c565b8093505b5050509a9950505050505050505050565b6000828201838110801590611d525750828110155b1515611d5a57fe5b8091505b5092915050565b6000806000806000670de0b6b3a7640000611d8287600454612150565b811515611d8b57fe5b049450600093508a611d9d8a88612150565b811515611da657fe5b6002549190049350600160a060020a031615611e9057600254600160a060020a031663e97fe114898960006040516040015260405160e060020a63ffffffff8516028152600160a060020a039283166004820152911660248201526044016040805180830381600087803b1515611e1c57600080fd5b6102c65a03f11515611e2d57600080fd5b50505060405180519060200180519050915091506064821115611e4f57600091505b6064811115611e5c575060005b6064611e6b8684606403612150565b811515611e7457fe5b0494506064611e838287612150565b811515611e8c57fe5b0493505b600160a060020a03808d166000908152600560209081526040808320938c1683529290522054611ec990611ec48887611d3d565b611d3d565b600160a060020a038d811660009081526005602090815260408083208d851684529091528082209390935590891681522054611f0e90611f098888611d3d565b612139565b600160a060020a03808e1660009081526005602081815260408084208d861685528252808420959095558e84168352908152838220928c168252919091522054611f589084612139565b600160a060020a038b811660009081526005602090815260408083208d851684529091528082209390935590891681522054611f949084611d3d565b600560008c600160a060020a0316600160a060020a03168152602001908152602001600020600089600160a060020a0316600160a060020a0316815260200190815260200160002081905550612050600560008e600160a060020a0316600160a060020a031681526020019081526020016000206000600160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200190815260200160002054611ec48787612139565b611d3d565b600160a060020a03808e16600090815260056020908152604080832060015485168452909152902091909155600354161561091357600354600160a060020a031663f0fc14388d888d878d8d8c8c60405160e060020a63ffffffff8b16028152600160a060020a039889166004820152602481019790975294871660448701526064860193909352908516608485015290931660a483015260c482019290925260e481019190915261010401600060405180830381600087803b151561211557600080fd5b6102c65a03f1151561212657600080fd5b5050505b5b505050505050505050505050565b60008282111561214557fe5b508082035b92915050565b6000828202831580611d52575082848281151561216957fe5b04145b1515611d5a57fe5b8091505b5092915050560005b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bca165627a7a7230582077f218d396cd040a425e3dc0d8a1d2b99db2d2b265a225a4134ec6bed3adc3810029000000000000000000000000000000000000000000000000000aa87bee5380000000000000000000000000000000000000000000000000000000000000000000

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

-----Decoded View---------------
Found 2 constructor arguments :
Arg [0] : 000000000000000000000000000000000000000000000000000aa87bee538000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000


   Swarm Source:
bzzr://77f218d396cd040a425e3dc0d8a1d2b99db2d2b265a225a4134ec6bed3adc381

 

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.