Sponsored Link:   WELL – WORKING HEALTHCARE U.S. PLATFORM - RAISED $3M IN PRE-ICO – JOIN NOW WITH 40% BONUS
Contract Overview
ETH Balance: 429.346039533710952699 Ether
ETH USD Value: $345,550.57 (@ $804.83/ETH)
No Of Transactions: 50330 txns
Misc  
   
Address Watch Add To Watch List
Contract Creator 0x44a93f553bd529c19386b2ddfa30f458b0bc3b20at txn 0x386439acefbf00018b318f283a9ebc6185c483ff6738117243dba40fc1b42bb6
Token Tracker
  Latest 25 txns from a total Of 50330 transactions (+4 PendingTxns) View All

TxHash Age From To Value [TxFee]
0xe4a8a8d3a5b67ced8b39e4636ddb992737e3d4f982f1c03c85567a7bf4015a2b(pending)6 mins ago0xd506020c2514aff3859bd7450f5a670d5affdf14  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xc581f63a927b7cccbdb79af1c32f44750dc6920be05648cdb982273e27f5c0ec(pending)12 mins ago0xd506020c2514aff3859bd7450f5a670d5affdf14  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x0c84b36d602c732bff09840926771f48bf0dceae9b224e829f697c1c9fc60575(pending)19 mins ago0x62dd63a17fdcf074331e01513d894eab5c092be2  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0x8d9c7da79fc680474d488a6a277e4452ccf382e76522b15377e448e02ec8f5bd(pending)20 mins ago0x659c9edabd77d63ca6f37fa7b5dba3cba1b12716  IN  0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether(pending)
0xb4a5482697defaaff3b191459d074a1f98a01b6c4c35cf5ef697d95c0686dacc 18 secs ago0x767e1d39817daead1244ac590a15f4aef12f510b  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.000114975
0x13a18b8074a620e59415e94a91da3cb51b67ec73eea1e73e187bcc5f14f909ab1 min ago0xe1187a11583e1e4e2986a9bb2783d43bea226b99  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.0003864
0xa34cd881760777876e9f710cccd2bbadf36d091451031d0d1eea6de97023e0123 mins ago0x767e1d39817daead1244ac590a15f4aef12f510b  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.0004846
0xdb4f37d76d3c8104cbdd9c974dcd32da2f0b634d8d26a7c0fb53b3226f8483113 mins ago0x92f7422c4b9079fb6e0d75ff9728367510318dc5  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.00029468
0xbf316f2b9efe5a493889f5e7454cce8b5ff841fafada3bea4fff8e4a7e74c1c34 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.0003181
0xa44a7a636d3e21bd71e1b6240d266df04511b7ef54818e3e7fad3c385399b7334 mins ago0x767e1d39817daead1244ac590a15f4aef12f510b  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.00019356
0x0b226cdd09a40cb84f9e0728f72990380d89bc5e9ac1a9da66ec1f7976829de35 mins ago0x3b19f71b8ca2eac636e0eafe264a865bd5467df6  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.000387592
0xf8b3be9ecab20b8b238cd5f4b248f0344ae55c2d3376d7baea7403ef2a07ba607 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.0004846
0x909d3f61cbf04c9c692f9cd9008eb4b73d06c3096d925b9c52e79e16389ff37a9 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.00048428
0x3564e7582aacf65018cda6bff975bc4b74e73c32e03a126880a035912a93eb5e9 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.0004096
0xb8b3daa82840f0fb1b2875600810983894a3a06a126b66f9e682ad40d9f2787c9 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.00040928
0xbd1945df1b2a8f73b29030b627a75bce3225ee930b80f4675424702a407486f29 mins ago0xca5842e40613f56e4f921041780084f1b34604f8  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80.403 Ether0.000149555
0xbac50c89149c93f8dc70576d70e7e563c03a96f98d92befe9764b2512f5b4ffc12 mins ago0x3591d261da9ca19d83de5028d4caa02f22aaf9ee  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80.032 Ether0.000149555
0x0bee4d21069e89f5b018a9f51e83e3f6a25ebcb14d605555155bb2dff0f617c913 mins ago0xdc51143f2561a64ec986bb5bd9207e6d5b691038  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.000176
0xd9af1508ac21e81d97bb0ac22fc7863e75730d1accfc608152fb5ccf7b06617b14 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.00048364
0x8c601ade42993e4e3c96e4865a547e8651be080b164d4575d2e32e833aedd9c114 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.0004846
0x2cfb6f972a8bb5679bdf1b3cf34e18d48b81e6ae48291174037c44b95b7287d316 mins ago0xe54fc18425843afcf8f30a12799030e2e1a5820b  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.001259128
0xe188c7127d11b2f9f25ecc16d882f77717811b6f03da965c69daf68a9b928e5616 mins ago0xe54fc18425843afcf8f30a12799030e2e1a5820b  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.001259128
0x3d2ca5a58c14d55ab89216f7520019e86439d786047209dc21c614dd83d5e25916 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.0004096
0x8555b9346f92e81efa5294f5b50fa1904e23370192b57ed71745bf6245b914ca17 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.0004846
0x6c771d114b0d87f3380089aebe5aa2a5cb0ee0e2d8326f9bd45ad850df58dcb617 mins ago0x22eef21f0f998aaef92294c1ab74c4dab1c44ef0  IN   0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80 Ether0.00040896
[ 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
0xb4a5482697defaaff3b191459d074a1f98a01b6c4c35cf5ef697d95c0686dacc5136729 18 secs ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x767e1d39817daead1244ac590a15f4aef12f510b0.988 Ether
0xb6f8185a3ff77736082eacf93d0b24c84faecec4a55aa4ae59f141a119cc5089513663023 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x62dd63a17fdcf074331e01513d894eab5c092be20.236 Ether
0xaa2da5166484bc31ee0b51342077ac98810a863416eaf2fad579b3fd438de9ed513662325 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x62dd63a17fdcf074331e01513d894eab5c092be20.695 Ether
0x54ad36d1d71498baaf090602540c9681e6dd9356f6452c12493bccf15e80197d513661128 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x7901ddc692e7802342a8b41e980b5370ef4690950.15 Ether
0x0c02c9e49ca61b37c7ba03e5516e583458ef8d259b148bbdad2c54eae785561c513649258 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xf8c853ae9f716192ca587481535d3783656952130.064 Ether
0xda370c910386e1bacaab6a31a75d43c7189ad364b86ee9886c4874fc2ecf100b51363851 hr 24 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xc7ca4bf491da85c2dc61e22fc818f92e2dbec8d21.382 Ether
0x8acc164585c1cb1a91d92eb05fde9bb09df4340325e8b7840dd5cae31ae33d3351363771 hr 26 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xe7a5933516c81c003a52f42405644d3e3088ebda0.6 Ether
0xcb5ab85135cb5b9f6e3b476c39f0dbb35b3b75de7f6ae643e13f77e3347dba6651363331 hr 40 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xca5842e40613f56e4f921041780084f1b34604f80.322 Ether
0x5397ff447056c48ab26dbe3cd466d89744fd7ebcec9f542302c96d6ce4e195b451362731 hr 55 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x04cec99ddd08a077cacea1550921578df4b3a9f00.523 Ether
0xdac0e0a60f19b6f6988cbce450f0d8c17759ee58b36293fd89d0406bce39feac51359113 hrs 21 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xed92948def32fbde9f6fcd4584309be7a6dc2b200.815 Ether
0x25ef6eb6b4db59727c9129eb26eaa92fb662857517e6fb64f5b5716d0c55b1d351359093 hrs 21 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x9a6d3e5bf8cea3b7336c632cd3d752a54a8736c60.0002857893 Ether
0x563fb2720f9f7162e9d0f168ece5600ba7388727b741e449f2a701143819eb8251358533 hrs 35 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x2cca839470561f643565a7b4cb2ab5b29c7123380.01 Ether
0x58f61a589df72e1f8e0e8f767236f36ee720bf5b37a89bda7906d0357cc7f0e451357893 hrs 49 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x9824b0029d3e13fba957d26f97fb7b1904c874aa3 Ether
0xc0f6ecd169fe95f6f8d8116c797d95c673ca9713555844cbac5d891bb41f6e5951356824 hrs 16 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xe0f996bee29326af7d4364da2a7db4a4ec478daa0.0008 Ether
0x1b898a603061a38b9a5cf04e36e143858f868cd746b42c185b286863e07ec1b851356534 hrs 24 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x432f49b81ca06c3b4e248e555311de1283daaf232.7 Ether
0x9e223f91962a5cbad5d68278fad0936d200300fe887ddf5b709d431eebed4bde51356184 hrs 31 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x97079c598f01269a9128cad8e2d1eb0a00b07cd30.03 Ether
0x0126b97cd1c05f12e011d6c25d7216d7e809485d858b2c5793e30afff99b61fa51356114 hrs 33 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x62dd63a17fdcf074331e01513d894eab5c092be21.81 Ether
0x54f02ee57a44eef9f844618413d9d57029a224e842d4af39caab53c5434ba54351356004 hrs 37 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xe0e92e6dd6e3f9872ddb0d7500d81cb393ea05980.14 Ether
0x010978f807fb7ceb0d83bd4c9970795119326ece6fdc4fb663e7a2ee0c5fc3f551355874 hrs 40 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xd68cacdce78530955185b5bcf74232cb0f518bed0.031 Ether
0x158e1284fd7eb445da6229222aeab0e1e7454e0d02fdf897c874e4a227d8a21551355764 hrs 42 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80xd68cacdce78530955185b5bcf74232cb0f518bed0.021 Ether
0x75c40cb3482b44845023b4cd12f1df9762855050ec6db45d7d9dd132c2854dae51355624 hrs 45 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x62dd63a17fdcf074331e01513d894eab5c092be20.967 Ether
0xd272414a2f60f26820a201e599312fb24fd7316f8083bdab7f60684290b7ff7b51354735 hrs 6 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x7f9cd61dba399ac1df44b6171793df0c4b9786800.013 Ether
0x669484106d027f5f2e2e141d19425e4fb8e285ef8b38f8797f754046f9a24bcb51354635 hrs 9 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x17e2f90da74d0260cbd20639cf9465ef8071df803.267 Ether
0x4285b895a7e6080b4409f816a4660af4d2125af7e0fe38fdf260f7af717fc8de51354325 hrs 19 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x2f3d8126a3f66e1461806c2ebfd9516c30a4653e0.002 Ether
0xcdfc0ec0b1bde6cabaa5e69b7f63fe9a0d682303b3cf1e188079a08dfc2a808c51353885 hrs 31 mins ago0x1ce7ae555139c5ef5a57cc8d814a867ee6ee33d80x92c3d006172a1d7217e75dec8c5de6e71e69278b0.798 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
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.