Latest 25 transactions from a total of 321 transactions

TxHash Age From To Value [TxFee]
0xf098accb7147d559527537065638c435d65a68e0c890585c1978a20bafaeacc610 hrs 58 mins ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000483035
0x788fa4f6531c0854eadd1476337c17130d6345f20b538b88412cf8a1a12ecca311 hrs 2 mins ago0x828fad5895080f60568f2cb1cca9661563b0b4df  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.001256723
0xf50a079d46d6fbbda4b92e3db453df5c8dc1b79f0ad9b4154d29a59176ece08611 hrs 47 mins ago0xff28c44ecd0bb71415914c00e3c2e40d0ea894d4  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000476016
0x0bc0139c48be52cc2304dce8be6864863bbc133fef8adf2ebb222cd72aabe2174 days 6 hrs ago0xf629a2005c22ce0f871338e5f3830c476ed46118  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.00228846
0x7c644d5fb758b4a11a2c717178e480b3c1d45c4dc2856ebf874ddbd46c28258a4 days 13 hrs ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000482715
0xdbcbb6ec5b992947183586350c70120f8ea4ba45293d0ceacd10ce1cb34612974 days 13 hrs ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000483035
0xb66abb8b9e64da8424cd10afe562709a9d30f47d82dbb81b2a6dd414d7a29c494 days 13 hrs ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410.199483232 Ether0.000517258
0x5c2d4ede2296bb001f04e668ea460a8bc85c76b8967ec80fa98c5e1131db93ce6 days 13 hrs ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.0018150084
0x62a144f444ceae9956bd3931f3bc82a1248aa9a000b385b18f8f3a465053af047 days 8 hrs ago0xbb2769c15b2ee872bebf114daa25bf5f401a6ac4  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.0001643345
0xb3ab3de213fbef8350a885df3a413b1405a8985a84f7bd41ff861e70da9ecc8611 days 14 hrs ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.00122088
0x6ccd73565fcb09257ffe0cfbbc9c7f4439550e954ea8d611d318a75744a7728b12 days 5 hrs ago0x95163d3d19fc871e6efa01a14c0dd20708e72431  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.0004646508
0xade2062f71a42e8bde92ad1529cdde3366860d4f69ba68b6e35744851bfe9bdb14 days 12 hrs ago0xad271a0aa5380f37653c8fb9385ea1671509409d  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000341628
0xa3566d5858bb0d7529deece7fbc58a953e0dd272b96d5bff4adbc9f87ac0483314 days 12 hrs ago0xad271a0aa5380f37653c8fb9385ea1671509409d  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.0003757908
0xab4a6672369148dbfb687c04918310c2e3a1c958b8430bd8397add3d271620d014 days 12 hrs ago0xad271a0aa5380f37653c8fb9385ea1671509409d  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000398118
0x7f8283d6547a7e1788d0d525f80d56caaf1bc06ac9acceba02e5cc67671e864714 days 12 hrs ago0xad271a0aa5380f37653c8fb9385ea1671509409d  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000370097
0x40bcd3cb14ad2cbb3b3ecacb0cd625e6c73e2f97775fd85a37534870fc1615e414 days 13 hrs ago0xad271a0aa5380f37653c8fb9385ea1671509409d  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000370097
0x1195e9a179f5fa3632d95d197465d61b94a240e855db1e171f83f0bb5bceda2a17 days 10 hrs ago0x788153229d8580a59ce476a22d6132f1f44ed54b  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000119516
0x14cec20b48a3460f716c8e5798c4be2fcf799c41a32b471825cbbb0310f1211519 days 9 hrs ago0xbb2769c15b2ee872bebf114daa25bf5f401a6ac4  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.0016252529
0x5475922ba3046f43bef3b2cc5b25bac78db7ebd7219b69cfa20c03bfe381627119 days 9 hrs ago0xbb2769c15b2ee872bebf114daa25bf5f401a6ac4  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.0022222529
0x83431b196c159d581f3d95a43f852ec25a7358edc26af9744ed89ce491343cd319 days 12 hrs ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.0016252529
0xaecbce05878ff96c43747fbbc873847005c13ca3a407e02d06722c7dacfd83d219 days 13 hrs ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000599865
0x09e077214654a5a88d707c741f6b6f55008d82024265a47c84f7893dc408136020 days 7 hrs ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000483355
0x00fce1da09526746cf5aa9e9ea0e37d5dbbbfa1bdcabf8259482f08fef6ed29d20 days 8 hrs ago0x2e4179b9d5dd3f51870f2cbca62cc6cc61c9808a  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410.2493208192 Ether0.000184735
0x9bd3d3fb90909bccce3c9aaedab6e6bbafddeaf1af7cbe67cd126f2a5a7216e822 days 21 hrs ago0x77aa622a7bae112ff3de98afcdf164b2d3b41fa0  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000451528
0x9fe79114ca2065be520117cac0bc37c5758ca4fd9d8b68861389a679a90d1f0124 days 5 hrs ago0xa12fbfc4e85f658cf4f2674c81b497e9213a9217  IN   0x2fca5f257895b8bcede0c0d06141b718ec9a30410 Ether0.000245136
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 14 Internal Transactions

ParentTxHash Block Age From To Value
0xf50a079d46d6fbbda4b92e3db453df5c8dc1b79f0ad9b4154d29a59176ece086690836511 hrs 47 mins ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410xff28c44ecd0bb71415914c00e3c2e40d0ea894d40.100852352 Ether
0x62a144f444ceae9956bd3931f3bc82a1248aa9a000b385b18f8f3a465053af0468669747 days 8 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410xbb2769c15b2ee872bebf114daa25bf5f401a6ac40.27033859154422512 Ether
0x1195e9a179f5fa3632d95d197465d61b94a240e855db1e171f83f0bb5bceda2a680610117 days 10 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410x788153229d8580a59ce476a22d6132f1f44ed54b0.0764938072400705 Ether
0x573e064a00e6116f15ad3da238d94974caf3fd9c8451aa50ad1277d842cff9bb661138349 days 9 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410xad271a0aa5380f37653c8fb9385ea1671509409d0.35 Ether
0x0fb788a03eaf31a1a42082b4d26fc8c54b60f63fe4de720d809000aba781473f655707958 days 6 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410xbb2769c15b2ee872bebf114daa25bf5f401a6ac40.0022 Ether
0x0c06187d1ce43a0bafc584529605b1aeeb60bc749346fbd618c7b454c4d264a0653098562 days 12 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410xbb9a718d42e68ac1019fc557f35eb0bacd6793fc0.0758375872 Ether
0x3240c2b792c765340184fdba8d584c8f01199bd72b4e23f4d3506efdffe784dc652541663 days 10 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410xff28c44ecd0bb71415914c00e3c2e40d0ea894d40.31113088 Ether
0x199dc75da633ade88a4e17cc054d207a08ca23622907111ada36f223e24f4e12652469963 days 13 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410x8af7bd104eff917109fd9bbf5f44139d97724e860.18 Ether
0x95db9a9febc9d525b5e6e73735d3bfaa27ae3d3f09086616bcbed10577a91dee652455563 days 13 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410x614261773ae87cf97ca450eb76d977c85b1ab3a00.027852352 Ether
0x638b9f926e908968605c4e024dce31758e7d32e15cfe593dc7f4a7a11ad31f9a650100667 days 9 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410x0ce384fbd41d04206891bcc9d2d7defaefed242f0.0093 Ether
0xde5441e0056c2b51a7cf69768421b66a2a75168c21db20ba41676a5016720932650034567 days 12 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410x614261773ae87cf97ca450eb76d977c85b1ab3a00.05 Ether
0x65b155ba91d72bd8a3c0cf3039e3478fb24ab87592a6a71e4d007e824d2e6070650032167 days 12 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410x614261773ae87cf97ca450eb76d977c85b1ab3a00.05 Ether
0x2eb9223b440fbc467aa43989be0c69a647e4e2dde4e478e636ffa0ab329dcf27649534368 days 7 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410xbb9a718d42e68ac1019fc557f35eb0bacd6793fc0.1 Ether
0xe2b257e6b0d2748d853dbdc2c7614f978fd438defda62468ede6e174c0f11f46649494868 days 9 hrs ago0x2fca5f257895b8bcede0c0d06141b718ec9a30410xad271a0aa5380f37653c8fb9385ea1671509409d0.2498375872 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: TrexDexMain
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.21;

library SafeMath {
    function add(uint256 _a, uint256 _b) pure internal returns (uint256) {
        uint256 c = _a + _b;
        assert(c >= _a && c >= _b);
        
        return c;
    }

    function sub(uint256 _a, uint256 _b) pure internal returns (uint256) {
        assert(_b <= _a);

        return _a - _b;
    }

    function mul(uint256 _a, uint256 _b) pure internal returns (uint256) {
        uint256 c = _a * _b;
        assert(_a == 0 || c / _a == _b);

        return c;
    }

    function div(uint256 _a, uint256 _b) pure internal returns (uint256) {
        assert(_b > 0);

        return _a / _b;
    }
}

contract Token {
    string public name;
    string public symbol;
    uint256 public decimals;
    uint256 public totalSupply;
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

    function transfer(address _to, uint256 _value) public returns (bool _success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool _success);
    function approve(address _spender, uint256 _value) public returns (bool _success);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract StrictToken is Token {
    bool public strict = true;
    mapping (address => uint256) public rate;

    function getRate(address _address) public view returns (uint256);
    function getStrict() public pure returns (bool);
}

contract TrexDexMain {
    using SafeMath for uint256;

    address public owner;
    address public feeAddress;
    mapping (address => mapping (address => uint256)) public makeFees;
    mapping (address => mapping (address => uint256)) public takeFees;
    mapping (address => uint256) public depositFees;
    mapping (address => uint256) public withdrawFees;
    mapping (address => bool) public strictTokens;
    mapping (address => bool) public tokenDeposits;
    mapping (address => bool) public tokenWithdraws;
    mapping (address => mapping (address => bool)) public tokenTrades;
    mapping (address => mapping (address => uint256)) public deposits;
    mapping (address => mapping (bytes32 => bool)) public orders;
    mapping (address => mapping (bytes32 => uint256)) public orderFills;

    event Order(address buyTokenAddress, uint256 buyAmount, address sellTokenAddress, uint256 sellAmount, address takeAddress, address baseTokenAddress, uint256 expireBlock, uint256 nonce, address makeAddress);
    event Cancel(bytes32 orderHash);
    event Trade(bytes32 orderHash, uint256 buyAmount, uint256 sellAmount, uint256 takeFee, uint256 makeFee, address takeAddress);
    event Deposit(address tokenAddress, address userAddress, uint256 amount, uint256 fee, uint256 balance);
    event Withdraw(address tokenAddress, address userAddress, uint256 amount, uint256 fee, uint256 balance);
    event TransferIn(address tokenAddress, address userAddress, uint256 amount, uint256 balance);
    event TransferOut(address tokenAddress, address userAddress, uint256 amount, uint256 balance);

    modifier isOwner {
        assert(msg.sender == owner);
        _;
    }

    modifier hasPayloadSize(uint256 size) {
        assert(msg.data.length >= size + 4);
        _;
    }    

    constructor(address _feeAddress) public {
        owner = msg.sender;
        feeAddress = _feeAddress;
    }

    function() public {
        revert();
    }

    function transfer(address _tokenAddress, address _userAddress, uint256 _amount) public isOwner {
        require (deposits[_tokenAddress][msg.sender] >= _amount);
        deposits[_tokenAddress][_userAddress] = deposits[_tokenAddress][_userAddress].add(_amount);
        deposits[_tokenAddress][msg.sender] = deposits[_tokenAddress][msg.sender].sub(_amount);

        emit TransferIn(_tokenAddress, _userAddress, _amount, deposits[_tokenAddress][_userAddress]);
        emit TransferOut(_tokenAddress, msg.sender, _amount, deposits[_tokenAddress][msg.sender]);
    }

    function setOwner(address _owner) public isOwner {
        owner = _owner;
    }

    function setFeeAddress(address _feeAddress) public isOwner {
        feeAddress = _feeAddress;
    }

    function setStrictToken(address _tokenAddress, bool _isStrict) public isOwner {
        strictTokens[_tokenAddress] = _isStrict;
    }

    function setTokenTransfers(address[] _tokenAddress, bool[] _depositEnabled, bool[] _withdrawEnabled, uint256[] _depositFee, uint256[] _withdrawFee) public isOwner {
        for (uint256 i = 0; i < _tokenAddress.length; i++) {
            setTokenTransfer(_tokenAddress[i], _depositEnabled[i], _withdrawEnabled[i], _depositFee[i], _withdrawFee[i]);
        }
    }

    function setTokenTransfer(address _tokenAddress, bool _depositEnabled, bool _withdrawEnabled, uint256 _depositFee, uint256 _withdrawFee) public isOwner {
        tokenDeposits[_tokenAddress] = _depositEnabled;
        tokenWithdraws[_tokenAddress] = _withdrawEnabled;
        depositFees[_tokenAddress] = _depositFee;
        withdrawFees[_tokenAddress] = _withdrawFee;
    }

    function setTokenTrades(address[] _tokenAddress, address[] _baseTokenAddress, bool[] _tradeEnabled, uint256[] _makeFee, uint256[] _takeFee) public isOwner {
        for (uint256 i = 0; i < _tokenAddress.length; i++) {
            setTokenTrade(_tokenAddress[i], _baseTokenAddress[i], _tradeEnabled[i], _makeFee[i], _takeFee[i]);
        }
    }

    function setTokenTrade(address _tokenAddress, address _baseTokenAddress, bool _tradeEnabled, uint256 _makeFee, uint256 _takeFee) public isOwner {
        tokenTrades[_baseTokenAddress][_tokenAddress] = _tradeEnabled;
        makeFees[_baseTokenAddress][_tokenAddress] = _makeFee;
        takeFees[_baseTokenAddress][_tokenAddress] = _takeFee;
    }

    function deposit() payable public {
        uint256 fee = _depositToken(0x0, msg.sender, msg.value);

        emit Deposit(0x0, msg.sender, msg.value, fee, deposits[0x0][msg.sender]);
    }

    function depositToken(address _tokenAddress, uint256 _amount) public hasPayloadSize(2 * 32) {
        require (_tokenAddress != 0x0 && tokenDeposits[_tokenAddress]);
        require (Token(_tokenAddress).transferFrom(msg.sender, this, _amount));
        uint256 fee = _depositToken(_tokenAddress, msg.sender, _amount);

        emit Deposit(_tokenAddress, msg.sender, _amount, fee, deposits[_tokenAddress][msg.sender]);
    }

    function _depositToken(address _tokenAddress, address _userAddress, uint256 _amount) private returns (uint256 fee) {
        fee = _amount.mul(depositFees[_tokenAddress]).div(1 ether);
        deposits[_tokenAddress][_userAddress] = deposits[_tokenAddress][_userAddress].add(_amount.sub(fee));
        deposits[_tokenAddress][feeAddress] = deposits[_tokenAddress][feeAddress].add(fee);
    }

    function withdraw(uint256 _amount) public hasPayloadSize(32) {
        require (deposits[0x0][msg.sender] >= _amount);
        uint256 fee = _withdrawToken(0x0, msg.sender, _amount);
        msg.sender.transfer(_amount - fee);

        emit Withdraw(0x0, msg.sender, _amount, fee, deposits[0x0][msg.sender]);
    }

    function withdrawToken(address _tokenAddress, uint256 _amount) public hasPayloadSize(2 * 32) {
        require (_tokenAddress != 0x0 && tokenWithdraws[_tokenAddress]);
        require (deposits[_tokenAddress][msg.sender] >= _amount);
        uint256 fee = _withdrawToken(_tokenAddress, msg.sender, _amount);
        if (!Token(_tokenAddress).transfer(msg.sender, _amount - fee)) {
            revert();
        }

        emit Withdraw(_tokenAddress, msg.sender, _amount, fee, deposits[_tokenAddress][msg.sender]);
    }

    function _withdrawToken(address _tokenAddress, address _userAddress, uint256 _amount) private returns (uint256 fee) {
        fee = _amount.mul(withdrawFees[_tokenAddress]).div(1 ether);
        deposits[_tokenAddress][_userAddress] = deposits[_tokenAddress][_userAddress].sub(_amount);
        deposits[_tokenAddress][feeAddress] = deposits[_tokenAddress][feeAddress].add(fee);
    }

    function balanceOf(address _tokenAddress, address _userAddress) view public returns (uint256) {
        return deposits[_tokenAddress][_userAddress];
    }

    function order(address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _takeAddress, address _baseTokenAddress, uint256 _expireBlock, uint256 _nonce) public hasPayloadSize(8 * 32) {
        require (_checkTrade(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _baseTokenAddress));
        bytes32 hash = _buildHash(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _takeAddress, _baseTokenAddress, _expireBlock, _nonce);
        require (!orders[msg.sender][hash]);
        orders[msg.sender][hash] = true;

        emit Order(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _takeAddress, _baseTokenAddress, _expireBlock, _nonce, msg.sender);
    }

    function tradeMulti(address[] _buyTokenAddress, uint256[] _buyAmount, address[] _sellTokenAddress, uint256[] _sellAmount, address[] _takeAddress, address[] _baseTokenAddress, uint256[] _expireBlock, uint256[] _nonce, address[] _makeAddress, uint256[] _amount, uint8[] _v, bytes32[] _r, bytes32[] _s) public {
        for (uint256 i = 0; i < _buyTokenAddress.length; i++) {
            trade(_buyTokenAddress[i], _buyAmount[i], _sellTokenAddress[i], _sellAmount[i], _takeAddress[i], _baseTokenAddress[i], _expireBlock[i], _nonce[i], _makeAddress[i], _amount[i], _v[i], _r[i], _s[i]);
        }
    }

    function trade(address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _takeAddress, address _baseTokenAddress, uint256 _expireBlock, uint256 _nonce, address _makeAddress, uint256 _amount, uint8 _v, bytes32 _r, bytes32 _s) public {
        assert(msg.data.length >= 13 * 32 + 4);
        require (_checkTrade(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _baseTokenAddress));
        require (_takeAddress == 0x0 || msg.sender == _takeAddress);
        bytes32 hash = _buildHash(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _takeAddress, _baseTokenAddress, _expireBlock, _nonce);
        require (_checkHash(hash, _makeAddress, _v, _r, _s));
        require (block.number <= _expireBlock);
        require (orderFills[_makeAddress][hash] + _amount <= _buyAmount);
        _trade(hash, _buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _baseTokenAddress, _makeAddress, _amount);
    }

    function _trade(bytes32 hash, address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _baseTokenAddress, address _makeAddress, uint256 _amount) private {
        address tokenAddress = (_baseTokenAddress == _buyTokenAddress ? _sellTokenAddress : _buyTokenAddress);
        uint256 makeFee = _amount.mul(makeFees[_baseTokenAddress][tokenAddress]).div(1 ether);
        uint256 takeFee = _amount.mul(takeFees[_baseTokenAddress][tokenAddress]).div(1 ether);
        if (_buyAmount == 0) {
            _buyAmount = _calcStrictAmount(_sellTokenAddress, _sellAmount, _buyTokenAddress);
        }
        else if (_sellAmount == 0) {
            _sellAmount = _calcStrictAmount(_buyTokenAddress, _buyAmount, _sellTokenAddress);
        }
        uint256 tradeAmount = _sellAmount.mul(_amount).div(_buyAmount);
        deposits[_buyTokenAddress][msg.sender] = deposits[_buyTokenAddress][msg.sender].sub(_amount.add(takeFee));
        deposits[_buyTokenAddress][_makeAddress] = deposits[_buyTokenAddress][_makeAddress].add(_amount.sub(makeFee));
        deposits[_buyTokenAddress][feeAddress] = deposits[_buyTokenAddress][feeAddress].add(makeFee.add(takeFee));
        deposits[_sellTokenAddress][_makeAddress] = deposits[_sellTokenAddress][_makeAddress].sub(tradeAmount);
        deposits[_sellTokenAddress][msg.sender] = deposits[_sellTokenAddress][msg.sender].add(tradeAmount);
        orderFills[_makeAddress][hash] = orderFills[_makeAddress][hash].add(_amount);

        emit Trade(hash, _amount, tradeAmount, takeFee, makeFee, msg.sender);
    }

    function _calcStrictAmount(address _tokenAddress, uint256 _amount, address _strictTokenAddress) private view returns (uint256) {
        uint256 rate = StrictToken(_strictTokenAddress).getRate(_tokenAddress);
        require(rate > 0);

        return rate.mul(_amount).div(1 ether);
    }

    function _checkTrade(address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _baseTokenAddress) private view returns (bool) {
        if (!_checkTradeAddress(_buyTokenAddress, _sellTokenAddress, _baseTokenAddress)) {
            return false;
        }
        else if (_buyAmount != 0 && strictTokens[_buyTokenAddress]) {
            return false;
        }
        else if (_sellAmount != 0 && strictTokens[_sellTokenAddress]) {
            return false;
        }

        return true;
    }

    function _checkTradeAddress(address _buyTokenAddress, address _sellTokenAddress, address _baseTokenAddress) private view returns (bool) {
        return _baseTokenAddress == _buyTokenAddress ? tokenTrades[_buyTokenAddress][_sellTokenAddress] : tokenTrades[_sellTokenAddress][_buyTokenAddress];
    }

    function testTrade(address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _takeAddress, address _baseTokenAddress, uint256 _expireBlock, uint256 _nonce, address _makeAddress, uint256 _amount, uint8 _v, bytes32 _r, bytes32 _s) constant public returns (bool) {
        if (!_checkTrade(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _baseTokenAddress)) {
            return false;
        }
        else if (!(_takeAddress == 0x0 || msg.sender == _takeAddress)) {
            return false;
        }
        else if (!_hasDeposit(_buyTokenAddress, _takeAddress, _amount)) {
            return false;
        }
        else if (availableVolume(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _takeAddress, _baseTokenAddress, _expireBlock, _nonce, _makeAddress, _v, _r, _s) > _amount) {
            return false;
        }
        
        return true;
    }

    function _hasDeposit(address _buyTokenAddress, address _userAddress, uint256 _amount) private view returns (bool) {
        return deposits[_buyTokenAddress][_userAddress] >= _amount;
    }

    function availableVolume(address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _takeAddress, address _baseTokenAddress, uint256 _expireBlock, uint256 _nonce, address _makeAddress, uint8 _v, bytes32 _r, bytes32 _s) constant public returns (uint256) {
        bytes32 hash = _buildHash(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _takeAddress, _baseTokenAddress, _expireBlock, _nonce);
        if (!_checkHash(hash, _makeAddress, _v, _r, _s)) {
            return 0;
        }

        return _availableVolume(hash, _buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _makeAddress);
    }

    function _availableVolume(bytes32 hash, address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _makeAddress) private view returns (uint256) {
        if (_buyAmount == 0) {
            _buyAmount = _calcStrictAmount(_sellTokenAddress, _sellAmount, _buyTokenAddress);
        }
        else if (_sellAmount == 0) {
            _sellAmount = _calcStrictAmount(_buyTokenAddress, _buyAmount, _sellTokenAddress);
        }
        uint256 available1 = _buyAmount.sub(orderFills[_makeAddress][hash]);
        uint256 available2 = deposits[_sellTokenAddress][_makeAddress].mul(_buyAmount).div(_sellAmount);

        return available1 < available2 ? available1 : available2;
    }

    function amountFilled(address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _takeAddress, address _baseTokenAddress, uint256 _expireBlock, uint256 _nonce, address _makeAddress) constant public returns (uint256) {
        bytes32 hash = _buildHash(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _takeAddress, _baseTokenAddress, _expireBlock, _nonce);

        return orderFills[_makeAddress][hash];
    }

    function cancelOrder(address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _takeAddress, address _baseTokenAddress, uint256 _expireBlock, uint256 _nonce, uint8 _v, bytes32 _r, bytes32 _s) public hasPayloadSize(11 * 32) {
        bytes32 hash = _buildHash(_buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _takeAddress, _baseTokenAddress, _expireBlock, _nonce);
        require (_checkHash(hash, msg.sender, _v, _r, _s));
        orderFills[msg.sender][hash] = _buyAmount;

        emit Cancel(hash);
    }

    function _buildHash(address _buyTokenAddress, uint256 _buyAmount, address _sellTokenAddress, uint256 _sellAmount, address _takeAddress, address _baseTokenAddress, uint256 _expireBlock, uint256 _nonce) private view returns (bytes32) {
        return sha256(abi.encodePacked(this, _buyTokenAddress, _buyAmount, _sellTokenAddress, _sellAmount, _takeAddress, _baseTokenAddress, _expireBlock, _nonce));
    }

    function _checkHash(bytes32 _hash, address _makeAddress, uint8 _v, bytes32 _r, bytes32 _s) private view returns (bool) {
        return (orders[_makeAddress][_hash] || ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", _hash)), _v, _r, _s) == _makeAddress);
    }

}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"strictTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"makeFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orderFills","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_buyTokenAddress","type":"address"},{"name":"_buyAmount","type":"uint256"},{"name":"_sellTokenAddress","type":"address"},{"name":"_sellAmount","type":"uint256"},{"name":"_takeAddress","type":"address"},{"name":"_baseTokenAddress","type":"address"},{"name":"_expireBlock","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_makeAddress","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"testTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"depositToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_buyTokenAddress","type":"address"},{"name":"_buyAmount","type":"uint256"},{"name":"_sellTokenAddress","type":"address"},{"name":"_sellAmount","type":"uint256"},{"name":"_takeAddress","type":"address"},{"name":"_baseTokenAddress","type":"address"},{"name":"_expireBlock","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_makeAddress","type":"address"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"availableVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_buyTokenAddress","type":"address[]"},{"name":"_buyAmount","type":"uint256[]"},{"name":"_sellTokenAddress","type":"address[]"},{"name":"_sellAmount","type":"uint256[]"},{"name":"_takeAddress","type":"address[]"},{"name":"_baseTokenAddress","type":"address[]"},{"name":"_expireBlock","type":"uint256[]"},{"name":"_nonce","type":"uint256[]"},{"name":"_makeAddress","type":"address[]"},{"name":"_amount","type":"uint256[]"},{"name":"_v","type":"uint8[]"},{"name":"_r","type":"bytes32[]"},{"name":"_s","type":"bytes32[]"}],"name":"tradeMulti","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address[]"},{"name":"_baseTokenAddress","type":"address[]"},{"name":"_tradeEnabled","type":"bool[]"},{"name":"_makeFee","type":"uint256[]"},{"name":"_takeFee","type":"uint256[]"}],"name":"setTokenTrades","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_baseTokenAddress","type":"address"},{"name":"_tradeEnabled","type":"bool"},{"name":"_makeFee","type":"uint256"},{"name":"_takeFee","type":"uint256"}],"name":"setTokenTrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"depositFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"tokenTrades","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_buyTokenAddress","type":"address"},{"name":"_buyAmount","type":"uint256"},{"name":"_sellTokenAddress","type":"address"},{"name":"_sellAmount","type":"uint256"},{"name":"_takeAddress","type":"address"},{"name":"_baseTokenAddress","type":"address"},{"name":"_expireBlock","type":"uint256"},{"name":"_nonce","type":"uint256"}],"name":"order","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_feeAddress","type":"address"}],"name":"setFeeAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address[]"},{"name":"_depositEnabled","type":"bool[]"},{"name":"_withdrawEnabled","type":"bool[]"},{"name":"_depositFee","type":"uint256[]"},{"name":"_withdrawFee","type":"uint256[]"}],"name":"setTokenTransfers","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"deposits","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_isStrict","type":"bool"}],"name":"setStrictToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orders","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_userAddress","type":"address"},{"name":"_amount","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_depositEnabled","type":"bool"},{"name":"_withdrawEnabled","type":"bool"},{"name":"_depositFee","type":"uint256"},{"name":"_withdrawFee","type":"uint256"}],"name":"setTokenTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"takeFees","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_buyTokenAddress","type":"address"},{"name":"_buyAmount","type":"uint256"},{"name":"_sellTokenAddress","type":"address"},{"name":"_sellAmount","type":"uint256"},{"name":"_takeAddress","type":"address"},{"name":"_baseTokenAddress","type":"address"},{"name":"_expireBlock","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"cancelOrder","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenDeposits","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenWithdraws","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_buyTokenAddress","type":"address"},{"name":"_buyAmount","type":"uint256"},{"name":"_sellTokenAddress","type":"address"},{"name":"_sellAmount","type":"uint256"},{"name":"_takeAddress","type":"address"},{"name":"_baseTokenAddress","type":"address"},{"name":"_expireBlock","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_makeAddress","type":"address"}],"name":"amountFilled","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenAddress","type":"address"},{"name":"_userAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_buyTokenAddress","type":"address"},{"name":"_buyAmount","type":"uint256"},{"name":"_sellTokenAddress","type":"address"},{"name":"_sellAmount","type":"uint256"},{"name":"_takeAddress","type":"address"},{"name":"_baseTokenAddress","type":"address"},{"name":"_expireBlock","type":"uint256"},{"name":"_nonce","type":"uint256"},{"name":"_makeAddress","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"name":"trade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_feeAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"buyTokenAddress","type":"address"},{"indexed":false,"name":"buyAmount","type":"uint256"},{"indexed":false,"name":"sellTokenAddress","type":"address"},{"indexed":false,"name":"sellAmount","type":"uint256"},{"indexed":false,"name":"takeAddress","type":"address"},{"indexed":false,"name":"baseTokenAddress","type":"address"},{"indexed":false,"name":"expireBlock","type":"uint256"},{"indexed":false,"name":"nonce","type":"uint256"},{"indexed":false,"name":"makeAddress","type":"address"}],"name":"Order","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"orderHash","type":"bytes32"}],"name":"Cancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"orderHash","type":"bytes32"},{"indexed":false,"name":"buyAmount","type":"uint256"},{"indexed":false,"name":"sellAmount","type":"uint256"},{"indexed":false,"name":"takeFee","type":"uint256"},{"indexed":false,"name":"makeFee","type":"uint256"},{"indexed":false,"name":"takeAddress","type":"address"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"fee","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"fee","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"TransferIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenAddress","type":"address"},{"indexed":false,"name":"userAddress","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"TransferOut","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405234801561001057600080fd5b5060405160208061279d833981016040525160008054600160a060020a0319908116331790915560018054600160a060020a039093169290911691909117905561273e8061005f6000396000f3006080604052600436106101a05763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630369fc8e81146101b2578063055bfae4146101e757806313af403514610220578063164e68de1461024357806319774d431461026457806328d9a78e146102885780632e1a7d4d146102e5578063338b5dea146102fd578063412753581461032157806342dca7251461035257806358ffcae0146103ab57806363681c48146106ac578063672d17fc146107e55780637f067a251461081757806383d4a01b146108385780638636c1b91461085f5780638705fcd4146108a057806387a42e1a146108c15780638da5cb5b146109fa5780638f601f6614610a0f5780639a04346814610a365780639e281a9814610a5c578063bb5f462914610a80578063beabacc814610aa4578063c9d7cf0f14610ace578063cfccbdef14610aff578063d0e30db014610b26578063d81e78fa14610b2e578063e6074da714610b7e578063e905767814610b9f578063f57020e814610bc0578063f7888aec14610c0a578063feecfc8914610c31575b3480156101ac57600080fd5b50600080fd5b3480156101be57600080fd5b506101d3600160a060020a0360043516610c8e565b604080519115158252519081900360200190f35b3480156101f357600080fd5b5061020e600160a060020a0360043581169060243516610ca3565b60408051918252519081900360200190f35b34801561022c57600080fd5b50610241600160a060020a0360043516610cc0565b005b34801561024f57600080fd5b5061020e600160a060020a0360043516610d03565b34801561027057600080fd5b5061020e600160a060020a0360043516602435610d15565b34801561029457600080fd5b506101d3600160a060020a03600435811690602435906044358116906064359060843581169060a43581169060c4359060e4359061010435166101243560ff61014435166101643561018435610d32565b3480156102f157600080fd5b50610241600435610dcc565b34801561030957600080fd5b50610241600160a060020a0360043516602435610ed5565b34801561032d57600080fd5b50610336611049565b60408051600160a060020a039092168252519081900360200190f35b34801561035e57600080fd5b5061020e600160a060020a03600435811690602435906044358116906064359060843581169060a43581169060c4359060e43590610104351660ff61012435166101443561016435611058565b3480156103b757600080fd5b506040805160206004803580820135838102808601850190965280855261024195369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506110ab9650505050505050565b3480156106b857600080fd5b506040805160206004803580820135838102808601850190965280855261024195369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061120f9650505050505050565b3480156107f157600080fd5b50610241600160a060020a036004358116906024351660443515156064356084356112c1565b34801561082357600080fd5b5061020e600160a060020a0360043516611338565b34801561084457600080fd5b506101d3600160a060020a036004358116906024351661134a565b34801561086b57600080fd5b50610241600160a060020a03600435811690602435906044358116906064359060843581169060a4351660c43560e43561136a565b3480156108ac57600080fd5b50610241600160a060020a0360043516611476565b3480156108cd57600080fd5b506040805160206004803580820135838102808601850190965280855261024195369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506114b99650505050505050565b348015610a0657600080fd5b50610336611563565b348015610a1b57600080fd5b5061020e600160a060020a0360043581169060243516611572565b348015610a4257600080fd5b50610241600160a060020a0360043516602435151561158f565b348015610a6857600080fd5b50610241600160a060020a03600435166024356115ce565b348015610a8c57600080fd5b506101d3600160a060020a036004351660243561176d565b348015610ab057600080fd5b50610241600160a060020a036004358116906024351660443561178d565b348015610ada57600080fd5b50610241600160a060020a036004351660243515156044351515606435608435611926565b348015610b0b57600080fd5b5061020e600160a060020a0360043581169060243516611990565b6102416119ad565b348015610b3a57600080fd5b50610241600160a060020a03600435811690602435906044358116906064359060843581169060a4351660c43560e43560ff61010435166101243561014435611a3d565b348015610b8a57600080fd5b506101d3600160a060020a0360043516611ad6565b348015610bab57600080fd5b506101d3600160a060020a0360043516611aeb565b348015610bcc57600080fd5b5061020e600160a060020a03600435811690602435906044358116906064359060843581169060a43581169060c4359060e435906101043516611b00565b348015610c1657600080fd5b5061020e600160a060020a0360043581169060243516611b49565b348015610c3d57600080fd5b50610241600160a060020a03600435811690602435906044358116906064359060843581169060a43581169060c4359060e4359061010435166101243560ff61014435166101643561018435611b74565b60066020526000908152604090205460ff1681565b600260209081526000928352604080842090915290825290205481565b600054600160a060020a03163314610cd457fe5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60056020526000908152604090205481565b600c60209081526000928352604080842090915290825290205481565b6000610d418e8e8e8e8d611c3c565b1515610d4f57506000610dbb565b600160a060020a038a161580610d6d575033600160a060020a038b16145b1515610d7b57506000610dbb565b610d868e8b87611ccc565b1515610d9457506000610dbb565b84610da98f8f8f8f8f8f8f8f8f8e8e8e611058565b1115610db757506000610dbb565b5060015b9d9c50505050505050505050505050565b600060206024361015610ddb57fe5b3360009081527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e36020526040902054831115610e1657600080fd5b610e2260003385611cfc565b604051909250339083850380156108fc02916000818181858888f19350505050158015610e53573d6000803e3d6000fd5b503360008181527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3602090815260408083205481519384529183019390935281830186905260608201859052608082015290517febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9181900360a00190a1505050565b600060406044361015610ee457fe5b600160a060020a03841615801590610f145750600160a060020a03841660009081526007602052604090205460ff165b1515610f1f57600080fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018590529051600160a060020a038616916323b872dd9160648083019260209291908290030181600087803b158015610f8d57600080fd5b505af1158015610fa1573d6000803e3d6000fd5b505050506040513d6020811015610fb757600080fd5b50511515610fc457600080fd5b610fcf843385611dee565b600160a060020a0385166000818152600a60209081526040808320338085529083529281902054815194855291840192909252828201879052606083018490526080830152519193507f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f6919081900360a00190a150505050565b600154600160a060020a031681565b60008061106b8e8e8e8e8e8e8e8e611e6d565b905061107a8187878787611f84565b1515611089576000915061109a565b611097818f8f8f8f8b6120d7565b91505b509c9b505050505050505050505050565b60005b8d518110156111ff576111f78e828151811015156110c857fe5b906020019060200201518e838151811015156110e057fe5b906020019060200201518e848151811015156110f857fe5b906020019060200201518e8581518110151561111057fe5b906020019060200201518e8681518110151561112857fe5b906020019060200201518e8781518110151561114057fe5b906020019060200201518e8881518110151561115857fe5b906020019060200201518e8981518110151561117057fe5b906020019060200201518e8a81518110151561118857fe5b906020019060200201518e8b8151811015156111a057fe5b906020019060200201518e8c8151811015156111b857fe5b906020019060200201518e8d8151811015156111d057fe5b906020019060200201518e8e8151811015156111e857fe5b90602001906020020151611b74565b6001016110ae565b5050505050505050505050505050565b60008054600160a060020a0316331461122457fe5b5060005b85518110156112b9576112b1868281518110151561124257fe5b90602001906020020151868381518110151561125a57fe5b90602001906020020151868481518110151561127257fe5b90602001906020020151868581518110151561128a57fe5b9060200190602002015186868151811015156112a257fe5b906020019060200201516112c1565b600101611228565b505050505050565b600054600160a060020a031633146112d557fe5b600160a060020a03938416600081815260096020908152604080832098909716808352978152868220805460ff19169615159690961790955581815260028552858120878252855285812093909355825260038352838220948252939091522055565b60046020526000908152604090205481565b600960209081526000928352604080842090915290825290205460ff1681565b600061010061010436101561137b57fe5b6113888a8a8a8a89611c3c565b151561139357600080fd5b6113a38a8a8a8a8a8a8a8a611e6d565b336000908152600b6020908152604080832084845290915290205490925060ff16156113ce57600080fd5b336000818152600b60209081526040808320868452825291829020805460ff191660011790558151600160a060020a038e811682529181018d90528b821681840152606081018b9052898216608082015290881660a082015260c0810187905260e08101869052610100810192909252517f8cdc90739f125dfca8bf8121c15d4c1552cbc612ea09d41dd5ecf3da7e10cf7e918190036101200190a150505050505050505050565b600054600160a060020a0316331461148a57fe5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054600160a060020a031633146114ce57fe5b5060005b85518110156112b95761155b86828151811015156114ec57fe5b90602001906020020151868381518110151561150457fe5b90602001906020020151868481518110151561151c57fe5b90602001906020020151868581518110151561153457fe5b90602001906020020151868681518110151561154c57fe5b90602001906020020151611926565b6001016114d2565b600054600160a060020a031681565b600a60209081526000928352604080842090915290825290205481565b600054600160a060020a031633146115a357fe5b600160a060020a03919091166000908152600660205260409020805460ff1916911515919091179055565b6000604060443610156115dd57fe5b600160a060020a0384161580159061160d5750600160a060020a03841660009081526008602052604090205460ff165b151561161857600080fd5b600160a060020a0384166000908152600a6020908152604080832033845290915290205483111561164857600080fd5b611653843385611cfc565b604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015282860360248201529051919350600160a060020a0386169163a9059cbb916044808201926020929091908290030181600087803b1580156116c057600080fd5b505af11580156116d4573d6000803e3d6000fd5b505050506040513d60208110156116ea57600080fd5b505115156116f757600080fd5b600160a060020a0384166000818152600a60209081526040808320338085529083529281902054815194855291840192909252828201869052606083018590526080830152517febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9181900360a00190a150505050565b600b60209081526000928352604080842090915290825290205460ff1681565b600054600160a060020a031633146117a157fe5b600160a060020a0383166000908152600a602090815260408083203384529091529020548111156117d157600080fd5b600160a060020a038084166000908152600a6020908152604080832093861683529290522054611807908263ffffffff61219b16565b600160a060020a038481166000908152600a6020908152604080832093871683529290528181209290925533825290205461184290826121bf565b600160a060020a038481166000818152600a602090815260408083203384528252808320959095559286168082529084902054845192835292820152808301849052606081019190915290517fc6b2705fef56491dc74644c481bb3ca3357d1b3a113f993b02bcad198564fde59181900360800190a1600160a060020a0383166000818152600a602090815260408083203380855290835292819020548151948552918401929092528282018490526060830152517f08d474da06d67ac0e0658410133ac9d6a35c74cfb6c9da5f68bbd68e662305349181900360800190a1505050565b600054600160a060020a0316331461193a57fe5b600160a060020a039094166000908152600760209081526040808320805496151560ff19978816179055600882528083208054951515959096169490941790945560048452828120919091556005909252902055565b600360209081526000928352604080842090915290825290205481565b60006119bb60003334611dee565b3360008181527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e36020908152604080832054815193845291830193909352348284015260608201849052608082015290519192507f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f6919081900360a00190a150565b6000610160610164361015611a4e57fe5b611a5e8d8d8d8d8d8d8d8d611e6d565b9150611a6d8233878787611f84565b1515611a7857600080fd5b336000908152600c602090815260408083208584528252918290208e9055815184815291517fe8d9861dbc9c663ed3accd261bbe2fe01e0d3d9e5f51fa38523b265c7757a93a9281900390910190a150505050505050505050505050565b60076020526000908152604090205460ff1681565b60086020526000908152604090205460ff1681565b600080611b138b8b8b8b8b8b8b8b611e6d565b600160a060020a0384166000908152600c6020908152604080832084845290915290205492509050509998505050505050505050565b600160a060020a039182166000908152600a6020908152604080832093909416825291909152205490565b60006101a4361015611b8257fe5b611b8f8e8e8e8e8d611c3c565b1515611b9a57600080fd5b600160a060020a038a161580611bb8575033600160a060020a038b16145b1515611bc357600080fd5b611bd38e8e8e8e8e8e8e8e611e6d565b9050611be28187868686611f84565b1515611bed57600080fd5b43881015611bfa57600080fd5b600160a060020a0386166000908152600c6020908152604080832084845290915290205485018d1015611c2c57600080fd5b6111ff818f8f8f8f8e8c8c6121d1565b6000611c4986858461258a565b1515611c5757506000611cc3565b8415801590611c7e5750600160a060020a03861660009081526006602052604090205460ff165b15611c8b57506000611cc3565b8215801590611cb25750600160a060020a03841660009081526006602052604090205460ff165b15611cbf57506000611cc3565b5060015b95945050505050565b600160a060020a038084166000908152600a60209081526040808320938616835292905220548111159392505050565b600160a060020a038316600090815260056020526040812054611d4090670de0b6b3a764000090611d3490859063ffffffff61260516565b9063ffffffff61262616565b600160a060020a038086166000908152600a6020908152604080832093881683529290522054909150611d79908363ffffffff6121bf16565b600160a060020a038581166000908152600a6020908152604080832088851684529091528082209390935560015490911681522054611db8908261219b565b600160a060020a039485166000908152600a60209081526040808320600154909816835296905294909420939093555090919050565b600160a060020a038316600090815260046020526040812054611e2690670de0b6b3a764000090611d3490859063ffffffff61260516565b9050611d79611e3b838363ffffffff6121bf16565b600160a060020a038087166000908152600a60209081526040808320938916835292905220549063ffffffff61219b16565b604080516c01000000000000000000000000308102602080840191909152600160a060020a03808d1683026034850152604884018c9052808b1683026068850152607c84018a90528089168302609c850152871690910260b083015260c4820185905260e48083018590528351808403909101815261010490920192839052815160009360029392909182918401908083835b60208310611f1f5780518252601f199092019160209182019101611f00565b51815160209384036101000a600019018019909216911617905260405191909301945091925050808303816000865af1158015611f60573d6000803e3d6000fd5b5050506040513d6020811015611f7557600080fd5b50519998505050505050505050565b600160a060020a0384166000908152600b6020908152604080832088845290915281205460ff16806120cd575084600160a060020a031660018760405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c0182600019166000191681526020019150506040516020818303038152906040526040518082805190602001908083835b6020831061203c5780518252601f19909201916020918201910161201d565b51815160209384036101000a60001901801990921691161790526040805192909401829003822060008084528383018087529190915260ff8d1683860152606083018c9052608083018b9052935160a08084019750919550601f1981019492819003909101925090865af11580156120b8573d6000803e3d6000fd5b50505060206040510351600160a060020a0316145b9695505050505050565b600080808615156120f4576120ed86868a612644565b9650612109565b84151561210957612106888888612644565b94505b600160a060020a0384166000908152600c602090815260408083208c845290915290205461213e90889063ffffffff6121bf16565b600160a060020a038088166000908152600a602090815260408083209389168352929052205490925061217d908690611d34908a63ffffffff61260516565b905080821061218c578061218e565b815b9998505050505050505050565b60008282018381108015906121b05750828110155b15156121b857fe5b9392505050565b6000828211156121cb57fe5b50900390565b6000806000808a600160a060020a031687600160a060020a0316146121f6578a6121f8565b885b600160a060020a0380891660009081526002602090815260408083209385168352929052205490945061224090670de0b6b3a764000090611d3490889063ffffffff61260516565b600160a060020a0380891660009081526003602090815260408083209389168352929052205490935061228890670de0b6b3a764000090611d3490889063ffffffff61260516565b91508915156122a35761229c89898d612644565b99506122b8565b8715156122b8576122b58b8b8b612644565b97505b6122cc8a611d348a8863ffffffff61260516565b90506123116122e1868463ffffffff61219b16565b600160a060020a038d166000908152600a602090815260408083203384529091529020549063ffffffff6121bf16565b600160a060020a038c166000908152600a6020908152604080832033845290915290205561237a612348868563ffffffff6121bf16565b600160a060020a03808e166000908152600a60209081526040808320938c16835292905220549063ffffffff61219b16565b600160a060020a03808d166000908152600a60209081526040808320938b16835292905220556123e86123b3848463ffffffff61219b16565b600160a060020a03808e166000908152600a60209081526040808320600154909416835292905220549063ffffffff61219b16565b600160a060020a03808d166000908152600a60208181526040808420600154861685528252808420959095558d84168352908152838220928a16825291909152205461243a908263ffffffff6121bf16565b600160a060020a038a81166000908152600a60209081526040808320938b16835292905281812092909255338252902054612475908261219b565b600160a060020a03808b166000908152600a602090815260408083203384528252808320949094559189168152600c82528281208f825290915220546124c1908663ffffffff61219b16565b600c600088600160a060020a0316600160a060020a0316815260200190815260200160002060008e60001916600019168152602001908152602001600020819055507fefd04b53651b0e426697607534a0a6786c4b6dee29ffb2d032ec291f372ca0578c868385873360405180876000191660001916815260200186815260200185815260200184815260200183815260200182600160a060020a0316600160a060020a03168152602001965050505050505060405180910390a1505050505050505050505050565b600083600160a060020a031682600160a060020a0316146125d357600160a060020a0380841660009081526009602090815260408083209388168352929052205460ff166125fd565b600160a060020a0380851660009081526009602090815260408083209387168352929052205460ff165b949350505050565b60008282028315806121b0575082848281151561261e57fe5b04146121b857fe5b600080821161263157fe5b818381151561263c57fe5b049392505050565b60008082600160a060020a03166337cef791866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b1580156126bb57600080fd5b505af11580156126cf573d6000803e3d6000fd5b505050506040513d60208110156126e557600080fd5b50519050600081116126f657600080fd5b611cc3670de0b6b3a7640000611d34838763ffffffff612605165600a165627a7a7230582067923ad6243986a3072344afa2767e8b43b6799c98aec79cec55ece40a2e612e002900000000000000000000000004af3b747614879ec1db4e80c941dc8dc40839c4

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000004af3b747614879ec1db4e80c941dc8dc40839c4


   Swarm Source:
bzzr://67923ad6243986a3072344afa2767e8b43b6799c98aec79cec55ece40a2e612e

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.