Contract 0xa5CC679A3528956E8032df4F03756C077C1eE3F4 7

DEX  
 

Contract Overview

EtherMium
Balance:
7.648099649748009895 Ether

EtherValue:
$9,904.44 (@ $1,295.02/ETH)

Token:
 
Txn Hash
Method
Block
From
To
Value
0xd9b160e13aef30dfdeeaa54f1c853527ac9b6eb18258343f4331034dbe423996Admin Withdraw135028412021-10-28 1:41:10339 days 11 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.028448350
0xdeb9b99a2b131ed238a1355ca8bc3a0ba62e5b271c84ac3d63b79d104c26afc8Admin Withdraw134027572021-10-12 9:12:58355 days 3 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0053644866
0x7b42fcdb864acb0fe98713c94c8223b60d076bb71c712ba8b2be035785904df3Admin Withdraw134027222021-10-12 9:04:30355 days 3 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0085648581
0xaffc25462f5181f218cca10937152fb5b2517136ea0fcf794e49ac95a0771173Admin Withdraw132290292021-09-15 7:49:56382 days 4 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.005101265
0x5a84b64bebaf723788fdb00b0f696661cd5ce83174f6b0978276f65577ebf2c3Admin Withdraw132290292021-09-15 7:49:56382 days 4 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0063382168
0x8330925f9d8379a99bea221c49c61e1a4efb687ffb56d4644096798a38c0fdedAdmin Withdraw132290022021-09-15 7:43:23382 days 5 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0049407153
0x1d3f3cb6acc150b398b493136f78f97052cdfc3d7a1d08d81c2ddf31e562a0a3Admin Withdraw132187072021-09-13 17:24:05383 days 19 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0047142458
0x60fdd28bbeda358cb6afaf4463a5482e7f78b0b3070bcb056e093e2127a8a4a8Admin Withdraw131387652021-09-01 8:46:49396 days 4 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0083706103
0xa83a21637ee5bb30fffc62b35fb7993f56f72af00c6c1416e18dacd3b6e63a7dAdmin Withdraw131385812021-09-01 8:00:17396 days 4 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.00893681
0xd60537535603aa5067d0df0dc40256c18824b598779e002f7f67b53a5f77fcf6Deposit131385392021-09-01 7:51:42396 days 4 hrs ago0xc823e8ec720b8214e8f934c7e8a4d9f24460effc IN  EtherMium0.03 Ether0.0037071280
0xa339699597b59a452727c332503285cb02c3e305b3d5f07c2f105418a3bdeb5cAdmin Withdraw131385242021-09-01 7:49:26396 days 4 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0099288990
0xba4f5f24c00e1892042b6fab0bebbfca39d49f400602d3ab8013c16257047c59Deposit131383582021-09-01 7:12:51396 days 5 hrs ago0xc823e8ec720b8214e8f934c7e8a4d9f24460effc IN  EtherMium0.01 Ether0.0050751280
0x4d5d4dbe9425798a8341d4389a7d8c9edeeb8b32acc47017fbee656e71249da0Admin Withdraw131375422021-09-01 4:05:02396 days 8 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0067492886
0x1302c404a8581fa4d5526f5498a934aaeec4c38902dfd86d036e2069e6ffedbdAdmin Withdraw131375422021-09-01 4:05:02396 days 8 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0070605464
0x8adf911d483f9724135e4fe4cd2c7e45248b43b9f2ae6c561665746bde195fbfAdmin Withdraw131372682021-09-01 3:01:11396 days 9 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.007365479
0x7a7176f306c1c5fbc5cf730398a32d974e907130714f4401cbb99f53633a51cdAdmin Withdraw131372542021-09-01 2:58:28396 days 9 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0070642890
0x256cc1ad097f899647f1f150a61b2bcc38d8f1a8a4b91861f7a26c3a234e24fcAdmin Withdraw131372542021-09-01 2:58:28396 days 9 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0083843976
0x34d9335bf812a8f43ca3d07e333eca861dec07250f535f18d22194a26ec30827Admin Withdraw131372372021-09-01 2:54:55396 days 9 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.008204588
0x2958f7bc0a47e2fbd93be3c468128777950ada502441f7f1b29969bd08d6e38fAdmin Withdraw131372222021-09-01 2:51:45396 days 9 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0065923284
0xe76f5110fa7ad7354c69e6e2fee81153b53c2bca749669ea3945546c63af0029Admin Withdraw131372222021-09-01 2:51:45396 days 9 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0071789477
0x2210585e329b1e15279e20d05a0e0a6e2cff95bd288c01557735c1101b3411bfAdmin Withdraw131035772021-08-26 21:56:15401 days 14 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0064211279
0xca68677c5b4bf9fff69cd956dec8f0637590ebf07545d54c410064737c8320fcAdmin Withdraw130378422021-08-16 18:28:01411 days 18 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0037383246
0x01ea36fc607d0319fcf8a6717ba6c599a71f59c860e456b3d4d63a716972299aDeposit130378262021-08-16 18:23:58411 days 18 hrs ago0x45fe9f0aabccccce8bb0e883e94fb39d8cd8d603 IN  EtherMium0.04568821 Ether0.0031479357
0x4cec02f956c528f1faa1704284a4664d58a2be16d9138057b5328cb46bd13338Admin Withdraw130378182021-08-16 18:22:35411 days 18 hrs ago0x5d24a9d06df0cdf876132cfc445a247e4533091a IN  EtherMium0 Ether0.0046315957
0xe70db74bc2f1cca0fea43e1e114079a54fc26d8159508805b9594a63d8ff6e51Deposit130376702021-08-16 17:51:31411 days 18 hrs ago0x45fe9f0aabccccce8bb0e883e94fb39d8cd8d603 IN  EtherMium0.0547654 Ether0.009339354
[ Download CSV Export 

OVERVIEW

Decentralized crypto exchange.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xd9b160e13aef30dfdeeaa54f1c853527ac9b6eb18258343f4331034dbe423996135028412021-10-28 1:41:10339 days 11 hrs ago EtherMium0x6c31be452734bf4372cd8f2b6217d1e80a36b3ad0.00630986 Ether
0xdeb9b99a2b131ed238a1355ca8bc3a0ba62e5b271c84ac3d63b79d104c26afc8134027572021-10-12 9:12:58355 days 3 hrs ago EtherMium0x5116fcab34c7646aaf25bd206a46508fe2e0cce90.1035497 Ether
0xaffc25462f5181f218cca10937152fb5b2517136ea0fcf794e49ac95a0771173132290292021-09-15 7:49:56382 days 4 hrs ago EtherMium0xd024b76cee75d1dc880fa0026605721bcde89b110.49859961 Ether
0x1d3f3cb6acc150b398b493136f78f97052cdfc3d7a1d08d81c2ddf31e562a0a3132187072021-09-13 17:24:05383 days 19 hrs ago EtherMium0x68e805c7709b0b678cbb1a4ad5e22a2f7cb3da550.62093138 Ether
0x60fdd28bbeda358cb6afaf4463a5482e7f78b0b3070bcb056e093e2127a8a4a8131387652021-09-01 8:46:49396 days 4 hrs ago EtherMium0xc823e8ec720b8214e8f934c7e8a4d9f24460effc0.01259945 Ether
0x4d5d4dbe9425798a8341d4389a7d8c9edeeb8b32acc47017fbee656e71249da0131375422021-09-01 4:05:02396 days 8 hrs ago EtherMium0x15eeb959942ec0688331a3d10a6bba63f432d0230.38686594 Ether
0x7a7176f306c1c5fbc5cf730398a32d974e907130714f4401cbb99f53633a51cd131372542021-09-01 2:58:28396 days 9 hrs ago EtherMium0x5e94ddf629ca2f8c220fcce5ff0808fb286eeca00.53621349 Ether
0x2958f7bc0a47e2fbd93be3c468128777950ada502441f7f1b29969bd08d6e38f131372222021-09-01 2:51:45396 days 9 hrs ago EtherMium0x3279d1a86c5c0ea7348a9f6b59c6b352e693e0420.03374913 Ether
0x2210585e329b1e15279e20d05a0e0a6e2cff95bd288c01557735c1101b3411bf131035772021-08-26 21:56:15401 days 14 hrs ago EtherMium0x637ad242a720958cf1a22ea42622a0e439bf21b30.16996691 Ether
0xca68677c5b4bf9fff69cd956dec8f0637590ebf07545d54c410064737c8320fc130378422021-08-16 18:28:01411 days 18 hrs ago EtherMium0x45fe9f0aabccccce8bb0e883e94fb39d8cd8d6030.04108812 Ether
0x4cec02f956c528f1faa1704284a4664d58a2be16d9138057b5328cb46bd13338130378182021-08-16 18:22:35411 days 18 hrs ago EtherMium0x45fe9f0aabccccce8bb0e883e94fb39d8cd8d6030.04956529 Ether
0x2c082555a6e1eed43dfe1ae1fd07c8b74b3e6dbcbb8fba10741c2ac0d2b9f769130316872021-08-15 19:34:42412 days 17 hrs ago EtherMium0x69aeee2f0307a10c227997987bd712825e0e84f60.00141507 Ether
0xf4dddd86a4300244d9a2e4f7f875553d3614f1f3a328b2eab4c7525567795781128445902021-07-17 13:50:21441 days 22 hrs ago EtherMium0x9883e635d544605b073d31c3c85c0c76591d140e0.08229994 Ether
0x599de8753b3c1558cc5db03bbf1d996769729001097cce361ad798e47b88df55127608112021-07-04 11:42:38455 days 1 hr ago EtherMium0x4acaada8eab7fe95d3b7ffc08b0063653bbb6c310.06955145 Ether
0x06f1fd563f5318b62ba2e0db2758d6ef0eacc69e55d2d3955656d705bf455105127482812021-07-02 12:45:33457 days 3 mins ago EtherMium0x4acaada8eab7fe95d3b7ffc08b0063653bbb6c310.14859997 Ether
0xc771cb91febd15683482b0be340f13c81197f997f65bdd994fb26a9caa113210127032172021-06-25 12:16:45464 days 32 mins ago EtherMium0x4acaada8eab7fe95d3b7ffc08b0063653bbb6c310.04682651 Ether
0xb7e91ee67aa5de3dc010d9b3fd04ff90c058c48998f4be7803b19a6c3299ca30126569472021-06-18 6:48:35471 days 6 hrs ago EtherMium0x326650ebcd6e7d69ffdb28d4d312931462cebf7a0.009 Ether
0xd95e0ebb55904770ec6213fad18ecde188a3d08bb61a241a99dda96d14c60f3f126569442021-06-18 6:48:06471 days 6 hrs ago EtherMium0x326650ebcd6e7d69ffdb28d4d312931462cebf7a0.155 Ether
0xf7bdd0e21e64da255c57b67025260467df976d71a19018e9a50f3d7291cb5cf0126448422021-06-16 10:04:07473 days 2 hrs ago EtherMium0x4fbf803aa54692e880b5ce7dc1cc4c3c139ceaf70.31710354 Ether
0xfaf4837bda1d75a042e763301935008399470db646efd237bae771a318fd47a0126448382021-06-16 10:02:49473 days 2 hrs ago EtherMium0x95445852148540acb6fcb9e39856d15f1c4163810.55441683 Ether
0xe82c9f9336d6bc744240c5a5187263e7ac218855430d574981a7485d96a85957126448342021-06-16 10:02:20473 days 2 hrs ago EtherMium0x95445852148540acb6fcb9e39856d15f1c4163810.1 Ether
0x1e040bb3e5c2087ee475fc22f22f88606f8d3b850db347e358821c22aeb76851113189512020-11-24 4:55:08677 days 7 hrs ago EtherMium0x26ef8b2c991eb8a4d7046941f05722b3a04536390.03819976 Ether
0x6707063352a20151b75eb33ee0450a1c622d3edbf48b8517711e0c3957dcaa33113129402020-11-23 6:40:03678 days 6 hrs ago EtherMium0xe60775acdde791f4187d9549e316834e0e78a2810.09431245 Ether
0x079203aa7c6918dbbc5d196041b8d9068914eeb8980d5af533004d8cb6c95b75113017632020-11-21 13:34:02679 days 23 hrs ago EtherMium0xe60775acdde791f4187d9549e316834e0e78a2810.13939978 Ether
0xa75eab26d498cc7f228c6cfde23c51b3a02ede1628edac5f2f54d195f292d59e112833742020-11-18 17:53:52682 days 18 hrs ago EtherMiumAsian Dragon: Token Sale0.01709974 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Exchange

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-06-07
*/

pragma solidity ^0.4.19;

contract Token {
    bytes32 public standard;
    bytes32 public name;
    bytes32 public symbol;
    uint256 public totalSupply;
    uint8 public decimals;
    bool public allowTransactions;
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;
    function transfer(address _to, uint256 _value) returns (bool success);
    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success);
    function approve(address _spender, uint256 _value) returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success);
}

contract EthermiumAffiliates {
    mapping(address => address[]) public referrals; // mapping of affiliate address to referral addresses
    mapping(address => address) public affiliates; // mapping of referrals addresses to affiliate addresses
    mapping(address => bool) public admins; // mapping of admin accounts
    string[] public affiliateList;
    address public owner;

    function setOwner(address newOwner);
    function setAdmin(address admin, bool isAdmin) public;
    function assignReferral (address affiliate, address referral) public;

    function getAffiliateCount() returns (uint);
    function getAffiliate(address refferal) public returns (address);
    function getReferrals(address affiliate) public returns (address[]);
}

contract EthermiumTokenList {
    function isTokenInList(address tokenAddress) public constant returns (bool);
}


contract Exchange {
    function assert(bool assertion) {
        if (!assertion) throw;
    }
    function safeMul(uint a, uint b) returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

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

    function safeAdd(uint a, uint b) returns (uint) {
        uint c = a + b;
        assert(c>=a && c>=b);
        return c;
    }
    address public owner;
    mapping (address => uint256) public invalidOrder;

    event SetOwner(address indexed previousOwner, address indexed newOwner);
    modifier onlyOwner {
        assert(msg.sender == owner);
        _;
    }
    function setOwner(address newOwner) onlyOwner {
        SetOwner(owner, newOwner);
        owner = newOwner;
    }
    function getOwner() returns (address out) {
        return owner;
    }
    function invalidateOrdersBefore(address user, uint256 nonce) onlyAdmin {
        if (nonce < invalidOrder[user]) throw;
        invalidOrder[user] = nonce;
    }

    mapping (address => mapping (address => uint256)) public tokens; //mapping of token addresses to mapping of account balances

    mapping (address => bool) public admins;
    mapping (address => uint256) public lastActiveTransaction;
    mapping (bytes32 => uint256) public orderFills;
    address public feeAccount;
    uint256 public feeAffiliate; // percentage times (1 ether)
    uint256 public inactivityReleasePeriod;
    mapping (bytes32 => bool) public traded;
    mapping (bytes32 => bool) public withdrawn;
    uint256 public makerFee; // fraction * 1 ether
    uint256 public takerFee; // fraction * 1 ether
    uint256 public affiliateFee; // fraction as proportion of 1 ether
    uint256 public makerAffiliateFee; // wei deductible from makerFee
    uint256 public takerAffiliateFee; // wei deductible form takerFee

    mapping (address => address) public referrer;  // mapping of user addresses to their referrer addresses

    address public affiliateContract;
    address public tokenListContract;


    enum Errors {
        INVLID_PRICE,           // Order prices don't match
        INVLID_SIGNATURE,       // Signature is invalid
        TOKENS_DONT_MATCH,      // Maker/taker tokens don't match
        ORDER_ALREADY_FILLED,   // Order was already filled
        GAS_TOO_HIGH            // Too high gas fee
    }

    //event Order(address tokenBuy, uint256 amountBuy, address tokenSell, uint256 amountSell, uint256 expires, uint256 nonce, address user, uint8 v, bytes32 r, bytes32 s);
    //event Cancel(address tokenBuy, uint256 amountBuy, address tokenSell, uint256 amountSell, uint256 expires, uint256 nonce, address user, uint8 v, bytes32 r, bytes32 s);
    event Trade(
        address takerTokenBuy, uint256 takerAmountBuy,
        address takerTokenSell, uint256 takerAmountSell,
        address maker, address indexed taker,
        uint256 makerFee, uint256 takerFee,
        uint256 makerAmountTaken, uint256 takerAmountTaken,
        bytes32 indexed makerOrderHash, bytes32 indexed takerOrderHash
    );
    event Deposit(address indexed token, address indexed user, uint256 amount, uint256 balance, address indexed referrerAddress);
    event Withdraw(address indexed token, address indexed user, uint256 amount, uint256 balance, uint256 withdrawFee);
    event FeeChange(uint256 indexed makerFee, uint256 indexed takerFee, uint256 indexed affiliateFee);
    //event AffiliateFeeChange(uint256 newAffiliateFee);
    event LogError(uint8 indexed errorId, bytes32 indexed makerOrderHash, bytes32 indexed takerOrderHash);
    event CancelOrder(
        bytes32 indexed cancelHash,
        bytes32 indexed orderHash,
        address indexed user,
        address tokenSell,
        uint256 amountSell,
        uint256 cancelFee
    );

    function setInactivityReleasePeriod(uint256 expiry) onlyAdmin returns (bool success) {
        if (expiry > 1000000) throw;
        inactivityReleasePeriod = expiry;
        return true;
    }

    function Exchange(address feeAccount_, uint256 makerFee_, uint256 takerFee_, uint256 affiliateFee_, address affiliateContract_, address tokenListContract_) {
        owner = msg.sender;
        feeAccount = feeAccount_;
        inactivityReleasePeriod = 100000;
        makerFee = makerFee_;
        takerFee = takerFee_;
        affiliateFee = affiliateFee_;



        makerAffiliateFee = safeMul(makerFee, affiliateFee_) / (1 ether);
        takerAffiliateFee = safeMul(takerFee, affiliateFee_) / (1 ether);

        affiliateContract = affiliateContract_;
        tokenListContract = tokenListContract_;
    }

    function setFees(uint256 makerFee_, uint256 takerFee_, uint256 affiliateFee_) onlyOwner {
        require(makerFee_ < 10 finney && takerFee_ < 10 finney);
        require(affiliateFee_ > affiliateFee);
        makerFee = makerFee_;
        takerFee = takerFee_;
        affiliateFee = affiliateFee_;
        makerAffiliateFee = safeMul(makerFee, affiliateFee_) / (1 ether);
        takerAffiliateFee = safeMul(takerFee, affiliateFee_) / (1 ether);

        FeeChange(makerFee, takerFee, affiliateFee_);
    }

    function setAdmin(address admin, bool isAdmin) onlyOwner {
        admins[admin] = isAdmin;
    }

    modifier onlyAdmin {
        if (msg.sender != owner && !admins[msg.sender]) throw;
        _;
    }

    function() external {
        throw;
    }

    function depositToken(address token, uint256 amount, address referrerAddress) {
        //require(EthermiumTokenList(tokenListContract).isTokenInList(token));
        if (referrerAddress == msg.sender) referrerAddress = address(0);
        if (referrer[msg.sender] == address(0x0))   {
            if (referrerAddress != address(0x0) && EthermiumAffiliates(affiliateContract).getAffiliate(msg.sender) == address(0))
            {
                referrer[msg.sender] = referrerAddress;
                EthermiumAffiliates(affiliateContract).assignReferral(referrerAddress, msg.sender);
            }
            else
            {
                referrer[msg.sender] = EthermiumAffiliates(affiliateContract).getAffiliate(msg.sender);
            }
        }
        tokens[token][msg.sender] = safeAdd(tokens[token][msg.sender], amount);
        lastActiveTransaction[msg.sender] = block.number;
        if (!Token(token).transferFrom(msg.sender, this, amount)) throw;
        Deposit(token, msg.sender, amount, tokens[token][msg.sender], referrer[msg.sender]);
    }

    function deposit(address referrerAddress) payable {
        if (referrerAddress == msg.sender) referrerAddress = address(0);
        if (referrer[msg.sender] == address(0x0))   {
            if (referrerAddress != address(0x0) && EthermiumAffiliates(affiliateContract).getAffiliate(msg.sender) == address(0))
            {
                referrer[msg.sender] = referrerAddress;
                EthermiumAffiliates(affiliateContract).assignReferral(referrerAddress, msg.sender);
            }
            else
            {
                referrer[msg.sender] = EthermiumAffiliates(affiliateContract).getAffiliate(msg.sender);
            }
        }
        tokens[address(0)][msg.sender] = safeAdd(tokens[address(0)][msg.sender], msg.value);
        lastActiveTransaction[msg.sender] = block.number;
        Deposit(address(0), msg.sender, msg.value, tokens[address(0)][msg.sender], referrer[msg.sender]);
    }

    function withdraw(address token, uint256 amount) returns (bool success) {
        if (safeSub(block.number, lastActiveTransaction[msg.sender]) < inactivityReleasePeriod) throw;
        if (tokens[token][msg.sender] < amount) throw;
        tokens[token][msg.sender] = safeSub(tokens[token][msg.sender], amount);
        if (token == address(0)) {
            if (!msg.sender.send(amount)) throw;
        } else {
            if (!Token(token).transfer(msg.sender, amount)) throw;
        }
        Withdraw(token, msg.sender, amount, tokens[token][msg.sender], 0);
    }

    function adminWithdraw(address token, uint256 amount, address user, uint256 nonce, uint8 v, bytes32 r, bytes32 s, uint256 feeWithdrawal) onlyAdmin returns (bool success) {
        bytes32 hash = keccak256(this, token, amount, user, nonce);
        if (withdrawn[hash]) throw;
        withdrawn[hash] = true;
        if (ecrecover(keccak256("\x19Ethereum Signed Message:\n32", hash), v, r, s) != user) throw;
        if (feeWithdrawal > 50 finney) feeWithdrawal = 50 finney;
        if (tokens[token][user] < amount) throw;
        tokens[token][user] = safeSub(tokens[token][user], amount);
        tokens[address(0)][user] = safeSub(tokens[address(0x0)][user], feeWithdrawal);
        //tokens[token][feeAccount] = safeAdd(tokens[token][feeAccount], safeMul(feeWithdrawal, amount) / 1 ether);
        tokens[address(0)][feeAccount] = safeAdd(tokens[address(0)][feeAccount], feeWithdrawal);

        //amount = safeMul((1 ether - feeWithdrawal), amount) / 1 ether;
        if (token == address(0)) {
            if (!user.send(amount)) throw;
        } else {
            if (!Token(token).transfer(user, amount)) throw;
        }
        lastActiveTransaction[user] = block.number;
        Withdraw(token, user, amount, tokens[token][user], feeWithdrawal);
    }

    function balanceOf(address token, address user) constant returns (uint256) {
        return tokens[token][user];
    }

    struct OrderPair {
        uint256 makerAmountBuy;
        uint256 makerAmountSell;
        uint256 makerNonce;
        uint256 takerAmountBuy;
        uint256 takerAmountSell;
        uint256 takerNonce;
        uint256 takerGasFee;

        address makerTokenBuy;
        address makerTokenSell;
        address maker;
        address takerTokenBuy;
        address takerTokenSell;
        address taker;

        bytes32 makerOrderHash;
        bytes32 takerOrderHash;
    }

    struct TradeValues {
        uint256 qty;
        uint256 invQty;
        uint256 makerAmountTaken;
        uint256 takerAmountTaken;
        address makerReferrer;
        address takerReferrer;
    }




    function trade(
        uint8[2] v,
        bytes32[4] rs,
        uint256[7] tradeValues,
        address[6] tradeAddresses
    ) onlyAdmin returns (uint filledTakerTokenAmount)
    {

        /* tradeValues
          [0] makerAmountBuy
          [1] makerAmountSell
          [2] makerNonce
          [3] takerAmountBuy
          [4] takerAmountSell
          [5] takerNonce
          [6] takerGasFee

          tradeAddresses
          [0] makerTokenBuy
          [1] makerTokenSell
          [2] maker
          [3] takerTokenBuy
          [4] takerTokenSell
          [5] taker
        */

        OrderPair memory t  = OrderPair({
            makerAmountBuy  : tradeValues[0],
            makerAmountSell : tradeValues[1],
            makerNonce      : tradeValues[2],
            takerAmountBuy  : tradeValues[3],
            takerAmountSell : tradeValues[4],
            takerNonce      : tradeValues[5],
            takerGasFee     : tradeValues[6],

            makerTokenBuy   : tradeAddresses[0],
            makerTokenSell  : tradeAddresses[1],
            maker           : tradeAddresses[2],
            takerTokenBuy   : tradeAddresses[3],
            takerTokenSell  : tradeAddresses[4],
            taker           : tradeAddresses[5],

            makerOrderHash  : keccak256(this, tradeAddresses[0], tradeValues[0], tradeAddresses[1], tradeValues[1], tradeValues[2], tradeAddresses[2]),
            takerOrderHash  : keccak256(this, tradeAddresses[3], tradeValues[3], tradeAddresses[4], tradeValues[4], tradeValues[5], tradeAddresses[5])
        });

        //bytes32 makerOrderHash = keccak256(this, tradeAddresses[0], tradeValues[0], tradeAddresses[1], tradeValues[1], tradeValues[2], tradeAddresses[2]);
        //bytes32 makerOrderHash = §
        if (ecrecover(keccak256("\x19Ethereum Signed Message:\n32", t.makerOrderHash), v[0], rs[0], rs[1]) != t.maker)
        {
            LogError(uint8(Errors.INVLID_SIGNATURE), t.makerOrderHash, t.takerOrderHash);
            return 0;
        }
        //bytes32 takerOrderHash = keccak256(this, tradeAddresses[3], tradeValues[3], tradeAddresses[4], tradeValues[4], tradeValues[5], tradeAddresses[5]);
        //bytes32 takerOrderHash = keccak256(this, t.takerTokenBuy, t.takerAmountBuy, t.takerTokenSell, t.takerAmountSell, t.takerNonce, t.taker);
        if (ecrecover(keccak256("\x19Ethereum Signed Message:\n32", t.takerOrderHash), v[1], rs[2], rs[3]) != t.taker)
        {
            LogError(uint8(Errors.INVLID_SIGNATURE), t.makerOrderHash, t.takerOrderHash);
            return 0;
        }

        if (t.makerTokenBuy != t.takerTokenSell || t.makerTokenSell != t.takerTokenBuy)
        {
            LogError(uint8(Errors.TOKENS_DONT_MATCH), t.makerOrderHash, t.takerOrderHash);
            return 0;
        } // tokens don't match

        if (t.takerGasFee > 100 finney)
        {
            LogError(uint8(Errors.GAS_TOO_HIGH), t.makerOrderHash, t.takerOrderHash);
            return 0;
        } // takerGasFee too high



        if (!(
        (t.makerTokenBuy != address(0x0) && safeMul(t.makerAmountSell, 1 ether) / t.makerAmountBuy >= safeMul(t.takerAmountBuy, 1 ether) / t.takerAmountSell)
        ||
        (t.makerTokenBuy == address(0x0) && safeMul(t.makerAmountBuy, 1 ether) / t.makerAmountSell <= safeMul(t.takerAmountSell, 1 ether) / t.takerAmountBuy)
        ))
        {
            LogError(uint8(Errors.INVLID_PRICE), t.makerOrderHash, t.takerOrderHash);
            return 0; // prices don't match
        }

        TradeValues memory tv = TradeValues({
            qty                 : 0,
            invQty              : 0,
            makerAmountTaken    : 0,
            takerAmountTaken    : 0,
            makerReferrer       : referrer[t.maker],
            takerReferrer       : referrer[t.taker]
        });

        if (tv.makerReferrer == address(0x0)) tv.makerReferrer = feeAccount;
        if (tv.takerReferrer == address(0x0)) tv.takerReferrer = feeAccount;



        // maker buy, taker sell
        if (t.makerTokenBuy != address(0x0))
        {


            tv.qty = min(safeSub(t.makerAmountBuy, orderFills[t.makerOrderHash]), safeSub(t.takerAmountSell, safeMul(orderFills[t.takerOrderHash], t.takerAmountSell) / t.takerAmountBuy));
            if (tv.qty == 0)
            {
                LogError(uint8(Errors.ORDER_ALREADY_FILLED), t.makerOrderHash, t.takerOrderHash);
                return 0;
            }

            tv.invQty = safeMul(tv.qty, t.makerAmountSell) / t.makerAmountBuy;

            tokens[t.makerTokenSell][t.maker]           = safeSub(tokens[t.makerTokenSell][t.maker],           tv.invQty);
            tv.makerAmountTaken                         = safeSub(tv.qty, safeMul(tv.qty, makerFee) / (1 ether));
            tokens[t.makerTokenBuy][t.maker]            = safeAdd(tokens[t.makerTokenBuy][t.maker],            tv.makerAmountTaken);
            tokens[t.makerTokenBuy][tv.makerReferrer]   = safeAdd(tokens[t.makerTokenBuy][tv.makerReferrer],   safeMul(tv.qty,    makerAffiliateFee) / (1 ether));

            tokens[t.takerTokenSell][t.taker]           = safeSub(tokens[t.takerTokenSell][t.taker],           tv.qty);
            tv.takerAmountTaken                         = safeSub(safeSub(tv.invQty, safeMul(tv.invQty, takerFee) / (1 ether)), safeMul(tv.invQty, t.takerGasFee) / (1 ether));
            tokens[t.takerTokenBuy][t.taker]            = safeAdd(tokens[t.takerTokenBuy][t.taker],            tv.takerAmountTaken);
            tokens[t.takerTokenBuy][tv.takerReferrer]   = safeAdd(tokens[t.takerTokenBuy][tv.takerReferrer],   safeMul(tv.invQty, takerAffiliateFee) / (1 ether));

            tokens[t.makerTokenBuy][feeAccount]     = safeAdd(tokens[t.makerTokenBuy][feeAccount],      safeMul(tv.qty,    safeSub(makerFee, makerAffiliateFee)) / (1 ether));
            tokens[t.takerTokenBuy][feeAccount]     = safeAdd(tokens[t.takerTokenBuy][feeAccount],      safeAdd(safeMul(tv.invQty, safeSub(takerFee, takerAffiliateFee)) / (1 ether), safeMul(tv.invQty, t.takerGasFee) / (1 ether)));


            orderFills[t.makerOrderHash]            = safeAdd(orderFills[t.makerOrderHash], tv.qty);
            orderFills[t.takerOrderHash]            = safeAdd(orderFills[t.takerOrderHash], safeMul(tv.qty, t.takerAmountBuy) / t.takerAmountSell);
            lastActiveTransaction[t.maker]          = block.number;
            lastActiveTransaction[t.taker]          = block.number;

            Trade(
                t.takerTokenBuy, tv.qty,
                t.takerTokenSell, tv.invQty,
                t.maker, t.taker,
                makerFee, takerFee,
                tv.makerAmountTaken , tv.takerAmountTaken,
                t.makerOrderHash, t.takerOrderHash
            );
            return tv.qty;
        }
        // maker sell, taker buy
        else
        {

            tv.qty = min(safeSub(t.makerAmountSell,  safeMul(orderFills[t.makerOrderHash], t.makerAmountSell) / t.makerAmountBuy), safeSub(t.takerAmountBuy, orderFills[t.takerOrderHash]));
            if (tv.qty == 0)
            {
                LogError(uint8(Errors.ORDER_ALREADY_FILLED), t.makerOrderHash, t.takerOrderHash);
                return 0;
            }

            tv.invQty = safeMul(tv.qty, t.makerAmountBuy) / t.makerAmountSell;

            tokens[t.makerTokenSell][t.maker]           = safeSub(tokens[t.makerTokenSell][t.maker],           tv.qty);
            tv.makerAmountTaken                         = safeSub(tv.invQty, safeMul(tv.invQty, makerFee) / (1 ether));
            tokens[t.makerTokenBuy][t.maker]            = safeAdd(tokens[t.makerTokenBuy][t.maker],            tv.makerAmountTaken);
            tokens[t.makerTokenBuy][tv.makerReferrer]   = safeAdd(tokens[t.makerTokenBuy][tv.makerReferrer],   safeMul(tv.invQty, makerAffiliateFee) / (1 ether));

            tokens[t.takerTokenSell][t.taker]           = safeSub(tokens[t.takerTokenSell][t.taker],           tv.invQty);
            tv.takerAmountTaken                         = safeSub(safeSub(tv.qty,    safeMul(tv.qty, takerFee) / (1 ether)), safeMul(tv.qty, t.takerGasFee) / (1 ether));
            tokens[t.takerTokenBuy][t.taker]            = safeAdd(tokens[t.takerTokenBuy][t.taker],            tv.takerAmountTaken);
            tokens[t.takerTokenBuy][tv.takerReferrer]   = safeAdd(tokens[t.takerTokenBuy][tv.takerReferrer],   safeMul(tv.qty,    takerAffiliateFee) / (1 ether));

            tokens[t.makerTokenBuy][feeAccount]     = safeAdd(tokens[t.makerTokenBuy][feeAccount],      safeMul(tv.invQty, safeSub(makerFee, makerAffiliateFee)) / (1 ether));
            tokens[t.takerTokenBuy][feeAccount]     = safeAdd(tokens[t.takerTokenBuy][feeAccount],      safeAdd(safeMul(tv.qty,    safeSub(takerFee, takerAffiliateFee)) / (1 ether), safeMul(tv.qty, t.takerGasFee) / (1 ether)));

            orderFills[t.makerOrderHash]            = safeAdd(orderFills[t.makerOrderHash], tv.invQty);
            orderFills[t.takerOrderHash]            = safeAdd(orderFills[t.takerOrderHash], tv.qty); //safeMul(qty, tradeValues[takerAmountBuy]) / tradeValues[takerAmountSell]);

            lastActiveTransaction[t.maker]          = block.number;
            lastActiveTransaction[t.taker]          = block.number;

            Trade(
                t.takerTokenBuy, tv.qty,
                t.takerTokenSell, tv.invQty,
                t.maker, t.taker,
                makerFee, takerFee,
                tv.makerAmountTaken , tv.takerAmountTaken,
                t.makerOrderHash, t.takerOrderHash
            );
            return tv.qty;
        }
    }

    function batchOrderTrade(
        uint8[2][] v,
        bytes32[4][] rs,
        uint256[7][] tradeValues,
        address[6][] tradeAddresses
    )
    {
        for (uint i = 0; i < tradeAddresses.length; i++) {
            trade(
                v[i],
                rs[i],
                tradeValues[i],
                tradeAddresses[i]
            );
        }
    }

    function cancelOrder(
		/*
		[0] orderV
		[1] cancelV
		*/
	    uint8[2] v,

		/*
		[0] orderR
		[1] orderS
		[2] cancelR
		[3] cancelS
		*/
	    bytes32[4] rs,

		/*
		[0] orderAmountBuy
		[1] orderAmountSell
		[2] orderNonce
		[3] cancelNonce
		[4] cancelFee
		*/
		uint256[5] cancelValues,

		/*
		[0] orderTokenBuy
		[1] orderTokenSell
		[2] orderUser
		[3] cancelUser
		*/
		address[4] cancelAddresses
    ) public onlyAdmin {
        // Order values should be valid and signed by order owner
        bytes32 orderHash = keccak256(
	        this, cancelAddresses[0], cancelValues[0], cancelAddresses[1],
	        cancelValues[1], cancelValues[2], cancelAddresses[2]
        );
        require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32", orderHash), v[0], rs[0], rs[1]) == cancelAddresses[2]);

        // Cancel action should be signed by cancel's initiator
        bytes32 cancelHash = keccak256(this, orderHash, cancelAddresses[3], cancelValues[3]);
        require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32", cancelHash), v[1], rs[2], rs[3]) == cancelAddresses[3]);

        // Order owner should be same as cancel's initiator
        require(cancelAddresses[2] == cancelAddresses[3]);

        // Do not allow to cancel already canceled or filled orders
        require(orderFills[orderHash] != cancelValues[0]);

        // Limit cancel fee
        if (cancelValues[4] > 50 finney) {
            cancelValues[4] = 50 finney;
        }

        // Take cancel fee
        // This operation throw an error if fee amount is more than user balance
        tokens[address(0)][cancelAddresses[3]] = safeSub(tokens[address(0)][cancelAddresses[3]], cancelValues[4]);

        // Cancel order by filling it with amount buy value
        orderFills[orderHash] = cancelValues[0];

        // Emit cancel order
        CancelOrder(cancelHash, orderHash, cancelAddresses[3], cancelAddresses[1], cancelValues[1], cancelValues[4]);
    }

    function min(uint a, uint b) private pure returns (uint) {
        return a < b ? a : b;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"affiliateContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"assertion","type":"bool"}],"name":"assert","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"user","type":"address"},{"name":"nonce","type":"uint256"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"},{"name":"feeWithdrawal","type":"uint256"}],"name":"adminWithdraw","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"lastActiveTransaction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"referrer","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"withdrawn","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"admins","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"takerFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"admin","type":"address"},{"name":"isAdmin","type":"bool"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeAccount","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"v","type":"uint8[2]"},{"name":"rs","type":"bytes32[4]"},{"name":"cancelValues","type":"uint256[5]"},{"name":"cancelAddresses","type":"address[4]"}],"name":"cancelOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"v","type":"uint8[2]"},{"name":"rs","type":"bytes32[4]"},{"name":"tradeValues","type":"uint256[7]"},{"name":"tradeAddresses","type":"address[6]"}],"name":"trade","outputs":[{"name":"filledTakerTokenAmount","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"invalidOrder","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"v","type":"uint8[2][]"},{"name":"rs","type":"bytes32[4][]"},{"name":"tradeValues","type":"uint256[7][]"},{"name":"tradeAddresses","type":"address[6][]"}],"name":"batchOrderTrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getOwner","outputs":[{"name":"out","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"referrerAddress","type":"address"}],"name":"depositToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeSub","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"nonce","type":"uint256"}],"name":"invalidateOrdersBefore","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"affiliateFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"takerAffiliateFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"makerFee_","type":"uint256"},{"name":"takerFee_","type":"uint256"},{"name":"affiliateFee_","type":"uint256"}],"name":"setFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeMul","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"traded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"expiry","type":"uint256"}],"name":"setInactivityReleasePeriod","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"makerAffiliateFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"safeAdd","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"inactivityReleasePeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"referrerAddress","type":"address"}],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"orderFills","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"user","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenListContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"makerFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeAffiliate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"feeAccount_","type":"address"},{"name":"makerFee_","type":"uint256"},{"name":"takerFee_","type":"uint256"},{"name":"affiliateFee_","type":"uint256"},{"name":"affiliateContract_","type":"address"},{"name":"tokenListContract_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"SetOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"takerTokenBuy","type":"address"},{"indexed":false,"name":"takerAmountBuy","type":"uint256"},{"indexed":false,"name":"takerTokenSell","type":"address"},{"indexed":false,"name":"takerAmountSell","type":"uint256"},{"indexed":false,"name":"maker","type":"address"},{"indexed":true,"name":"taker","type":"address"},{"indexed":false,"name":"makerFee","type":"uint256"},{"indexed":false,"name":"takerFee","type":"uint256"},{"indexed":false,"name":"makerAmountTaken","type":"uint256"},{"indexed":false,"name":"takerAmountTaken","type":"uint256"},{"indexed":true,"name":"makerOrderHash","type":"bytes32"},{"indexed":true,"name":"takerOrderHash","type":"bytes32"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"},{"indexed":true,"name":"referrerAddress","type":"address"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"},{"indexed":false,"name":"withdrawFee","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"makerFee","type":"uint256"},{"indexed":true,"name":"takerFee","type":"uint256"},{"indexed":true,"name":"affiliateFee","type":"uint256"}],"name":"FeeChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"errorId","type":"uint8"},{"indexed":true,"name":"makerOrderHash","type":"bytes32"},{"indexed":true,"name":"takerOrderHash","type":"bytes32"}],"name":"LogError","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"cancelHash","type":"bytes32"},{"indexed":true,"name":"orderHash","type":"bytes32"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"tokenSell","type":"address"},{"indexed":false,"name":"amountSell","type":"uint256"},{"indexed":false,"name":"cancelFee","type":"uint256"}],"name":"CancelOrder","type":"event"}]

606060405234156200001057600080fd5b60405160c080620035f883398101604052808051919060200180519190602001805191906020018051919060200180519190602001805160008054600160a060020a03338116600160a060020a03199283161790925560068054928b1692909116919091179055620186a0600855600b879055600c869055600d8590559150670de0b6b3a76400009050620000b4868564010000000062002d536200012e82021704565b811515620000be57fe5b04600e55600c54670de0b6b3a764000090620000e9908564010000000062002d536200012e82021704565b811515620000f357fe5b04600f5560118054600160a060020a03938416600160a060020a03199182161790915560128054929093169116179055506200017b92505050565b6000828202620001648415806200015057508385838115156200014d57fe5b04145b640100000000620008d66200016b82021704565b9392505050565b8015156200017857600080fd5b50565b61346d806200018b6000396000f3006060604052600436106101b35763ffffffff60e060020a6000350416630117200581146101c35780630674763c146101f257806313af40351461020c5780632295115b1461022b578063254dcfe21461027a5780632cf003c2146102ab5780633823d66c146102ca578063429b62e5146102e057806343f0179b146102ff5780634b0bddd214610312578063508493bc1461033657806365e17c9d1461035b5780637b68be811461036e5780637cc1303a1461042257806383dbb27b146104d6578063869c63c1146104f5578063893d20e8146106cd5780638da5cb5b146106e05780639d575582146106f3578063a293d1e81461071c578063b12de55914610735578063ba818f8d14610757578063bae5f9dd1461076a578063cec10c111461077d578063d05c78da14610799578063d5813323146107b2578063dd93c74a146107c8578063e1b53078146107de578063e6cb9013146107f1578063f31174ee1461080a578063f340fa011461081d578063f3fef3a314610831578063f7213db614610853578063f7888aec14610869578063fbc47e561461088e578063fc741c7c146108a1578063febc8c39146108b4575b34156101be57600080fd5b600080fd5b34156101ce57600080fd5b6101d66108c7565b604051600160a060020a03909116815260200160405180910390f35b34156101fd57600080fd5b61020a60043515156108d6565b005b341561021757600080fd5b61020a600160a060020a03600435166108e5565b341561023657600080fd5b610266600160a060020a03600435811690602435906044351660643560ff6084351660a43560c43560e43561096b565b604051901515815260200160405180910390f35b341561028557600080fd5b610299600160a060020a0360043516610d5c565b60405190815260200160405180910390f35b34156102b657600080fd5b6101d6600160a060020a0360043516610d6e565b34156102d557600080fd5b610266600435610d89565b34156102eb57600080fd5b610266600160a060020a0360043516610d9e565b341561030a57600080fd5b610299610db3565b341561031d57600080fd5b61020a600160a060020a03600435166024351515610db9565b341561034157600080fd5b610299600160a060020a0360043581169060243516610dff565b341561036657600080fd5b6101d6610e1c565b341561037957600080fd5b61020a6004604481600260408051908101604052809291908260026020028082843782019150505050509190806080019060048060200260405190810160405291908282608080828437820191505050505091908060a001906005806020026040519081016040529190828260a0808284378201915050505050919080608001906004806020026040519081016040529190828260808082843750939550610e2b945050505050565b341561042d57600080fd5b6102996004604481600260408051908101604052809291908260026020028082843782019150505050509190806080019060048060200260405190810160405291908282608080828437820191505050505091908060e001906007806020026040519081016040529190828260e080828437820191505050505091908060c001906006806020026040519081016040529190828260c08082843750939550611216945050505050565b34156104e157600080fd5b610299600160a060020a03600435166127ba565b341561050057600080fd5b61020a60046024813581810190830135806020818102016040519081016040528181529291906000602085015b8282101561056c57604080830286019060029080519081016040528092919082600260200280828437505050918352505060019091019060200161052d565b505050505091908035906020019082018035906020019080806020026020016040519081016040528181529291906000602085015b828210156105dd5760808083028601906004906040519081016040529190828260808082843750505091835250506001909101906020016105a1565b505050505091908035906020019082018035906020019080806020026020016040519081016040528181529291906000602085015b8282101561064e5760e08083028601906007906040519081016040529190828260e0808284375050509183525050600190910190602001610612565b505050505091908035906020019082018035906020019080806020026020016040519081016040528181529291906000602085015b828210156106bf5760c08083028601906006906040519081016040529190828260c0808284375050509183525050600190910190602001610683565b5050505050919050506127cc565b34156106d857600080fd5b6101d6612848565b34156106eb57600080fd5b6101d6612857565b34156106fe57600080fd5b61020a600160a060020a036004358116906024359060443516612866565b341561072757600080fd5b610299600435602435612bd3565b341561074057600080fd5b61020a600160a060020a0360043516602435612be7565b341561076257600080fd5b610299612c6a565b341561077557600080fd5b610299612c70565b341561078857600080fd5b61020a600435602435604435612c76565b34156107a457600080fd5b610299600435602435612d53565b34156107bd57600080fd5b610266600435612d7e565b34156107d357600080fd5b610266600435612d93565b34156107e957600080fd5b610299612def565b34156107fc57600080fd5b610299600435602435612df5565b341561081557600080fd5b610299612e11565b61020a600160a060020a0360043516612e17565b341561083c57600080fd5b610266600160a060020a03600435166024356130df565b341561085e57600080fd5b6102996004356132ce565b341561087457600080fd5b610299600160a060020a03600435811690602435166132e0565b341561089957600080fd5b6101d661330b565b34156108ac57600080fd5b61029961331a565b34156108bf57600080fd5b610299613320565b601154600160a060020a031681565b8015156108e257600080fd5b50565b6000546109009033600160a060020a039081169116146108d6565b600054600160a060020a0380831691167fcbf985117192c8f614a58aaf97226bb80a754772f5f6edf06f87c675f2e6c66360405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054819033600160a060020a039081169116148015906109a65750600160a060020a03331660009081526003602052604090205460ff16155b156109b057600080fd5b308a8a8a8a6040516c01000000000000000000000000600160a060020a039687168102825294861685026014820152602881019390935293169091026048820152605c810191909152607c016040519081900390206000818152600a602052604090205490915060ff1615610a2457600080fd5b6000818152600a602052604090819020805460ff19166001908117909155600160a060020a038a16918390516000805160206134028339815191528152601c810191909152603c0160405180910390208888886040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af11515610ac957600080fd5b505060206040510351600160a060020a031614610ae557600080fd5b66b1a2bc2ec50000831115610aff5766b1a2bc2ec5000092505b600160a060020a03808b166000908152600260209081526040808320938c168352929052205489901015610b3257600080fd5b600160a060020a03808b166000908152600260209081526040808320938c1683529290522054610b62908a612bd3565b600160a060020a038b81166000908152600260209081526040808320938d16835292815282822093909355600080516020613422833981519152909252902054610bac9084612bd3565b600160a060020a03898116600090815260008051602061342283398151915260205260408082209390935560065490911681522054610beb9084612df5565b600654600160a060020a03908116600090815260008051602061342283398151915260205260409020919091558a161515610c5657600160a060020a03881689156108fc028a604051600060405180830381858888f193505050501515610c5157600080fd5b610ccc565b89600160a060020a031663a9059cbb898b60405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610caa57600080fd5b5af11515610cb757600080fd5b505050604051805190501515610ccc57600080fd5b600160a060020a038089166000818152600460209081526040808320439055938e16808352600282528483208484529091529083902054919290917febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f918d919088905180848152602001838152602001828152602001935050505060405180910390a35098975050505050505050565b60046020526000908152604090205481565b601060205260009081526040902054600160a060020a031681565b600a6020526000908152604090205460ff1681565b60036020526000908152604090205460ff1681565b600c5481565b600054610dd49033600160a060020a039081169116146108d6565b600160a060020a03919091166000908152600360205260409020805460ff1916911515919091179055565b600260209081526000928352604080842090915290825290205481565b600654600160a060020a031681565b60008054819033600160a060020a03908116911614801590610e665750600160a060020a03331660009081526003602052604090205460ff16155b15610e7057600080fd5b308351855160208601516020880151604089015160408901516040516c01000000000000000000000000600160a060020a039889168102825296881687026014820152602881019590955292861685026048850152605c840191909152607c83015290921602609c82015260b00160405190819003902091506040830151600160a060020a03166001836040516000805160206134028339815191528152601c810191909152603c016040519081900390208851885160208a01516040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af11515610f7d57600080fd5b505060206040510351600160a060020a031614610f9957600080fd5b3082606085015160608701516040516c01000000000000000000000000600160a060020a03958616810282526014820194909452919093169091026034820152604881019190915260680160405190819003902090506060830151600160a060020a03166001826040516000805160206134028339815191528152601c810191909152603c016040519081900390206020890151604089015160608a01516040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af1151561108957600080fd5b505060206040510351600160a060020a0316146110a557600080fd5b6060830151600160a060020a03166040840151600160a060020a0316146110cb57600080fd5b835160008381526005602052604090205414156110e757600080fd5b66b1a2bc2ec50000608085015111156111085766b1a2bc2ec5000060808501525b6000808052600260205261114f90600080516020613422833981519152906060860151600160a060020a031681526020810191909152604001600020546080860151612bd3565b60008080526002602052600080516020613422833981519152906060860151600160a060020a0316815260208101919091526040016000205583516000838152600560205260409020556060830151600160a060020a031682827fd23bed568a5bf25c3577535afb4d173c4a6942e92812c0d105d94115d2beab726020870151602089015160808a01516040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a4505050505050565b600061122061333c565b6112286133b8565b60005433600160a060020a039081169116148015906112605750600160a060020a03331660009081526003602052604090205460ff16155b1561126a57600080fd5b6101e060405190810160405280865181526020018660016020020151815260200160408701518152602001606087015181526020016080870151815260200160a0870151815260200160c087015181526020018551600160a060020a031681526020018560016020020151600160a060020a031681526020016040860151600160a060020a031681526020016060860151600160a060020a031681526020016080860151600160a060020a0316815260200160a0860151600160a060020a031681526020013086518851602089015160208b015160408c015160408c01516040516c01000000000000000000000000600160a060020a039889168102825296881687026014820152602881019590955292861685026048850152605c840191909152607c83015290921602609c82015260b00160405190819003902081526020013060608701516060890151608089015160808b015160a08c015160a08c01516040516c01000000000000000000000000600160a060020a039889168102825296881687026014820152602881019590955292861685026048850152605c840191909152607c83015290921602609c82015260b00160405190819003902090529150610120820151600160a060020a03166001836101a001516040516000805160206134028339815191528152601c810191909152603c016040519081900390208951895160208b01516040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156114c657600080fd5b505060206040510351600160a060020a03161461152457816101c001516101a083015160015b60ff167f14301341d034ec3c62a1eabc804a79abf3b8c16e6245e82ec572346aa452fabb60405160405180910390a4600092506127b0565b816101800151600160a060020a03166001836101c001516040516000805160206134028339815191528152601c810191909152603c0160405190819003902060208a015160408a015160608b01516040516000815260200160405260405193845260ff9092166020808501919091526040808501929092526060840192909252608090920191516020810390808403906000865af115156115c457600080fd5b505060206040510351600160a060020a0316146115ee57816101c001516101a083015160016114ec565b816101600151600160a060020a03168260e00151600160a060020a03161415806116345750816101400151600160a060020a0316826101000151600160a060020a031614155b1561164c57816101c001516101a083015160026114ec565b67016345785d8a00008260c00151111561167357816101c001516101a083015160046114ec565b600060e0830151600160a060020a0316141580156116d6575081608001516116a78360600151670de0b6b3a7640000612d53565b8115156116b057fe5b0482516116c98460200151670de0b6b3a7640000612d53565b8115156116d257fe5b0410155b8061173e5750600060e0830151600160a060020a031614801561173e5750816060015161170f8360800151670de0b6b3a7640000612d53565b81151561171857fe5b0482602001516117318451670de0b6b3a7640000612d53565b81151561173a57fe5b0411155b151561175757816101c001516101a083015160006114ec565b60c0604051908101604052806000815260200160008152602001600081526020016000815260200160106000856101200151600160a060020a0316600160a060020a0316815260200190815260200160002060009054906101000a9004600160a060020a0316600160a060020a0316815260200160106000856101800151600160a060020a03908116825260208201929092526040016000908120549091169091529091506080820151600160a060020a0316141561182257600654600160a060020a031660808201525b600060a0820151600160a060020a0316141561184a57600654600160a060020a031660a08201525b600060e0830151600160a060020a0316146120c5576118d0611887835160056000866101a001518152602081019190915260400160002054612bd3565b6118cb846080015185606001516118bc60056000896101c0015181526020810191909152604001600020546080890151612d53565b8115156118c557fe5b04612bd3565b613326565b8152805115156118ed57816101c001516101a083015160036114ec565b81516118fe82518460200151612d53565b81151561190757fe5b04602082015261196d60026000610100850151600160a060020a0316600160a060020a031681526020019081526020016000206000846101200151600160a060020a0316600160a060020a03168152602001908152602001600020548260200151612bd3565b60026000846101000151600160a060020a0316600160a060020a031681526020019081526020016000206000846101200151600160a060020a031681526020810191909152604001600020556119d48151670de0b6b3a76400006118bc8451600b54612d53565b6040820152611a386002600060e0850151600160a060020a0316600160a060020a031681526020019081526020016000206000846101200151600160a060020a0316600160a060020a03168152602001908152602001600020548260400151612df5565b600260008460e00151600160a060020a0316600160a060020a031681526020019081526020016000206000846101200151600160a060020a0316600160a060020a0316815260200190815260200160002081905550611aff600260008460e00151600160a060020a0316600160a060020a0316815260200190815260200160002060008360800151600160a060020a03168152602081019190915260400160002054670de0b6b3a7640000611af08451600e54612d53565b811515611af957fe5b04612df5565b600260008460e00151600160a060020a0316600160a060020a0316815260200190815260200160002060008360800151600160a060020a0316600160a060020a0316815260200190815260200160002081905550611ba960026000846101600151600160a060020a0316600160a060020a031681526020019081526020016000206000846101800151600160a060020a031681526020810191909152604001600020548251612bd3565b60026000846101600151600160a060020a0316600160a060020a031681526020019081526020016000206000846101800151600160a060020a0316600160a060020a0316815260200190815260200160002081905550611c3e611c238260200151670de0b6b3a76400006118bc8560200151600c54612d53565b670de0b6b3a76400006118bc84602001518660c00151612d53565b6060820152611ca360026000610140850151600160a060020a0316600160a060020a031681526020019081526020016000206000846101800151600160a060020a0316600160a060020a03168152602001908152602001600020548260600151612df5565b60026000846101400151600160a060020a0316600160a060020a031681526020019081526020016000206000846101800151600160a060020a0316600160a060020a0316815260200190815260200160002081905550611d6760026000846101400151600160a060020a0316600160a060020a0316815260200190815260200160002060008360a00151600160a060020a0316600160a060020a0316815260200190815260200160002054670de0b6b3a7640000611af08460200151600f54612d53565b60026000846101400151600160a060020a0316600160a060020a0316815260200190815260200160002060008360a00151600160a060020a0316600160a060020a0316815260200190815260200160002081905550611e16600260008460e00151600160a060020a0390811682526020808301939093526040918201600090812060065490921681529252902054670de0b6b3a7640000611af08451611e11600b54600e54612bd3565b612d53565b600260008460e00151600160a060020a0390811682526020808301939093526040918201600090812060065490921681529252812091909155611ed790600290610140850151600160a060020a039081168252602080830193909352604091820160009081206006549092168152908352205490611ed290670de0b6b3a764000090611ead90860151611e11600c54600f54612bd3565b811515611eb657fe5b04670de0b6b3a7640000611af086602001518860c00151612d53565b612df5565b60026000846101400151600160a060020a0390811682526020808301939093526040918201600090812060065490921681529252812091909155611f36906005906101a085015181526020810191909152604001600020548251612df5565b60056000846101a0015181526020810191909152604001600090812091909155611f88906005906101c085015181526020810191909152604001600020546080840151611af084518660600151612d53565b60056000846101c00151815260208101919091526040016000908120919091554390600490610120850151600160a060020a0316600160a060020a03168152602001908152602001600020819055504360046000846101800151600160a060020a031681526020810191909152604001600020556101c08201516101a0830151610180840151600160a060020a03167f710a89c2739b2b7124e035c0dfff8b26a1de0ef61edf2851d794b32df317655985610140015185518761016001518760200151896101200151600b54600c548b604001518c60600151604051600160a060020a03998a1681526020810198909852958816604080890191909152606088019590955292909616608086015260a085015260c084019490945260e083019390935261010082015261012001905180910390a4805192506127b0565b6121226120fa836020015184516118bc60056000886101a0015181526020808201929092526040016000205490880151612d53565b6118cb846060015160056000876101c001518152602081019190915260400160002054612bd3565b81528051151561213f57816101c001516101a083015160036114ec565b816020015161215082518451612d53565b81151561215957fe5b0460208201526121b560026000610100850151600160a060020a0316600160a060020a031681526020019081526020016000206000846101200151600160a060020a031681526020810191909152604001600020548251612bd3565b60026000846101000151600160a060020a0316600160a060020a031681526020019081526020016000206000846101200151600160a060020a0316600160a060020a031681526020019081526020016000208190555061222c8160200151670de0b6b3a76400006118bc8460200151600b54612d53565b60408201526122906002600060e0850151600160a060020a0316600160a060020a031681526020019081526020016000206000846101200151600160a060020a0316600160a060020a03168152602001908152602001600020548260400151612df5565b600260008460e00151600160a060020a0316600160a060020a031681526020019081526020016000206000846101200151600160a060020a0316600160a060020a0316815260200190815260200160002081905550612352600260008460e00151600160a060020a0316600160a060020a0316815260200190815260200160002060008360800151600160a060020a0316600160a060020a0316815260200190815260200160002054670de0b6b3a7640000611af08460200151600e54612d53565b600260008460e00151600160a060020a0316600160a060020a0316815260200190815260200160002060008360800151600160a060020a0316600160a060020a031681526020019081526020016000208190555061240660026000846101600151600160a060020a0316600160a060020a031681526020019081526020016000206000846101800151600160a060020a0316600160a060020a03168152602001908152602001600020548260200151612bd3565b60026000846101600151600160a060020a0316600160a060020a031681526020019081526020016000206000846101800151600160a060020a031681526020810191909152604001600020556124886124708251670de0b6b3a76400006118bc8551600c54612d53565b670de0b6b3a76400006118bc84518660c00151612d53565b60608201526124ed60026000610140850151600160a060020a0316600160a060020a031681526020019081526020016000206000846101800151600160a060020a0316600160a060020a03168152602001908152602001600020548260600151612df5565b60026000846101400151600160a060020a0316600160a060020a031681526020019081526020016000206000846101800151600160a060020a0316600160a060020a03168152602001908152602001600020819055506125a760026000846101400151600160a060020a0316600160a060020a0316815260200190815260200160002060008360a00151600160a060020a03168152602081019190915260400160002054670de0b6b3a7640000611af08451600f54612d53565b60026000846101400151600160a060020a0316600160a060020a0316815260200190815260200160002060008360a00151600160a060020a0316600160a060020a0316815260200190815260200160002081905550612655600260008460e00151600160a060020a039081168252602080830193909352604091820160009081206006549092168152908352205490670de0b6b3a764000090611af090850151611e11600b54600e54612bd3565b600260008460e00151600160a060020a039081168252602080830193909352604091820160009081206006549092168152925281209190915561270990600290610140850151600160a060020a0390811682526020808301939093526040918201600090812060065490921681529252902054611ed2670de0b6b3a76400006126e78551611e11600c54600f54612bd3565b8115156126f057fe5b04670de0b6b3a7640000611af086518860c00151612d53565b60026000846101400151600160a060020a039081168252602080830193909352604091820160009081206006549092168152925281209190915561276b906005906101a085015181526020808201929092526040016000205490830151612df5565b60056000846101a0015181526020810191909152604001600090812091909155611f88906005906101c085015181526020810191909152604001600020548251612df5565b5050949350505050565b60016020526000908152604090205481565b60005b8151811015612841576128388582815181106127e757fe5b906020019060200201518583815181106127fd57fe5b9060200190602002015185848151811061281357fe5b9060200190602002015185858151811061282957fe5b90602001906020020151611216565b506001016127cf565b5050505050565b600054600160a060020a031690565b600054600160a060020a031681565b33600160a060020a031681600160a060020a03161415612884575060005b600160a060020a03338116600090815260106020526040902054161515612a7757600160a060020a0381161580159061292d5750601154600090600160a060020a031663bc019eed3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561290b57600080fd5b5af1151561291857600080fd5b50505060405180519050600160a060020a0316145b156129d55733600160a060020a0381811660009081526010602052604090819020805473ffffffffffffffffffffffffffffffffffffffff191685841617905560115490911691631294d4db918491905160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401600060405180830381600087803b15156129c057600080fd5b5af115156129cd57600080fd5b505050612a77565b601154600160a060020a031663bc019eed3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515612a2557600080fd5b5af11515612a3257600080fd5b5050506040518051600160a060020a03338116600090815260106020526040902080549190921673ffffffffffffffffffffffffffffffffffffffff19909116179055505b600160a060020a0380841660009081526002602090815260408083203390941683529290522054612aa89083612df5565b600160a060020a03808516600081815260026020908152604080832033958616845282528083209590955560049052839020439055916323b872dd9190309086905160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515612b3657600080fd5b5af11515612b4357600080fd5b505050604051805190501515612b5857600080fd5b600160a060020a03338116600081815260106020908152604080832054888616808552600284528285208686529093529281902054929094169390917ff5dd9317b9e63ac316ce44acc85f670b54b339cfa3e9076e1dd55065b922314b918791905191825260208201526040908101905180910390a4505050565b6000612be1838311156108d6565b50900390565b60005433600160a060020a03908116911614801590612c1f5750600160a060020a03331660009081526003602052604090205460ff16155b15612c2957600080fd5b600160a060020a038216600090815260016020526040902054811015612c4e57600080fd5b600160a060020a03909116600090815260016020526040902055565b600d5481565b600f5481565b600054612c919033600160a060020a039081169116146108d6565b662386f26fc1000083108015612cad5750662386f26fc1000082105b1515612cb857600080fd5b600d548111612cc657600080fd5b600b839055600c829055600d819055670de0b6b3a7640000612ce88483612d53565b811515612cf157fe5b04600e55600c54670de0b6b3a764000090612d0c9083612d53565b811515612d1557fe5b04600f55600c54600b548291907f472cfc031d19bcc54db01976ce486cc12dc3d489e6adced1eb5a782cd55cfdf260405160405180910390a4505050565b6000828202612d77841580612d725750838583811515612d6f57fe5b04145b6108d6565b9392505050565b60096020526000908152604090205460ff1681565b6000805433600160a060020a03908116911614801590612dcc5750600160a060020a03331660009081526003602052604090205460ff16155b15612dd657600080fd5b620f4240821115612de657600080fd5b50600855600190565b600e5481565b6000828201612d77848210801590612d725750838210156108d6565b60085481565b33600160a060020a031681600160a060020a03161415612e35575060005b600160a060020a0333811660009081526010602052604090205416151561302857600160a060020a03811615801590612ede5750601154600090600160a060020a031663bc019eed3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515612ebc57600080fd5b5af11515612ec957600080fd5b50505060405180519050600160a060020a0316145b15612f865733600160a060020a0381811660009081526010602052604090819020805473ffffffffffffffffffffffffffffffffffffffff191685841617905560115490911691631294d4db918491905160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401600060405180830381600087803b1515612f7157600080fd5b5af11515612f7e57600080fd5b505050613028565b601154600160a060020a031663bc019eed3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515612fd657600080fd5b5af11515612fe357600080fd5b5050506040518051600160a060020a03338116600090815260106020526040902080549190921673ffffffffffffffffffffffffffffffffffffffff19909116179055505b33600160a060020a0316600090815260008051602061342283398151915260205260409020546130589034612df5565b600160a060020a03338116600081815260008051602061342283398151915260208181526040808420968755600482528084204390556010825280842054929091529454931693919290917ff5dd9317b9e63ac316ce44acc85f670b54b339cfa3e9076e1dd55065b922314b9134915191825260208201526040908101905180910390a450565b600854600160a060020a033316600090815260046020526040812054909190613109904390612bd3565b101561311457600080fd5b600160a060020a03808416600090815260026020908152604080832033909416835292905220548290101561314857600080fd5b600160a060020a03808416600090815260026020908152604080832033909416835292905220546131799083612bd3565b600160a060020a038085166000818152600260209081526040808320339095168352939052919091209190915515156131e257600160a060020a03331682156108fc0283604051600060405180830381858888f1935050505015156131dd57600080fd5b613258565b82600160a060020a031663a9059cbb338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561323657600080fd5b5af1151561324357600080fd5b50505060405180519050151561325857600080fd5b600160a060020a0383811660008181526002602090815260408083203390951680845294909152808220547febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9287925180848152602001838152602001828152602001935050505060405180910390a392915050565b60056020526000908152604090205481565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b601254600160a060020a031681565b600b5481565b60075481565b60008183106133355781612d77565b5090919050565b6101e06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082015290565b60c060405190810160405280600081526020016000815260200160008152602001600081526020016000600160a060020a031681526020016000600160a060020a031681525090560019457468657265756d205369676e6564204d6573736167653a0a333200000000ac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077ba165627a7a723058203391cf27c6a4de38d0e709f77db0ea20834469e26a9d77428d845b32d7265ab7002900000000000000000000000095445852148540acb6fcb9e39856d15f1c4163810000000000000000000000000000000000000000000000000005543df729c0000000000000000000000000000000000000000000000000000008e1bc9bf04000000000000000000000000000000000000000000000000000000aa87bee5380000000000000000000000000007f373b93464d093671469be3e4f06a06c3c3a7ca0000000000000000000000003c277e6750a63470352a50f2daf7ef778c109047

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

00000000000000000000000095445852148540acb6fcb9e39856d15f1c4163810000000000000000000000000000000000000000000000000005543df729c0000000000000000000000000000000000000000000000000000008e1bc9bf04000000000000000000000000000000000000000000000000000000aa87bee5380000000000000000000000000007f373b93464d093671469be3e4f06a06c3c3a7ca0000000000000000000000003c277e6750a63470352a50f2daf7ef778c109047

-----Decoded View---------------
Arg [0] : feeAccount_ (address): 0x95445852148540acB6FcB9e39856D15F1C416381
Arg [1] : makerFee_ (uint256): 1500000000000000
Arg [2] : takerFee_ (uint256): 2500000000000000
Arg [3] : affiliateFee_ (uint256): 3000000000000000
Arg [4] : affiliateContract_ (address): 0x7f373B93464D093671469Be3E4f06a06c3c3A7cA
Arg [5] : tokenListContract_ (address): 0x3C277e6750A63470352A50F2dAF7EF778c109047

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 00000000000000000000000095445852148540acb6fcb9e39856d15f1c416381
Arg [1] : 0000000000000000000000000000000000000000000000000005543df729c000
Arg [2] : 0000000000000000000000000000000000000000000000000008e1bc9bf04000
Arg [3] : 000000000000000000000000000000000000000000000000000aa87bee538000
Arg [4] : 0000000000000000000000007f373b93464d093671469be3e4f06a06c3c3a7ca
Arg [5] : 0000000000000000000000003c277e6750a63470352a50f2daf7ef778c109047


Swarm Source

bzzr://3391cf27c6a4de38d0e709f77db0ea20834469e26a9d77428d845b32d7265ab7
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.