Contract Overview
Balance: 364.26109888789575754 Ether
Ether Value: $42,797.04 (@ $117.49/ETH)
Transactions: 8200 txns
 Latest 25 transactions from a total of 8200 transactions
(+1 PendingTxn)

TxHash Age From To Value [TxFee]
0x14a0bde2148a3bd4952b75935474a8c2df06fdf3bed7eb011f1f25740046f9ec(pending)0x457804851eaf090dad4871f9609010c6868d99d4  IN  0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether(Pending)
0x3c2cd11b8027c0734bc301aecf7153eb271475bbe702360a2f9e833eb53f000150 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.00077832
0x1558a69656bc95a8e469020b095a4db27d2a3beea3e3947f3a330d17f0a12eae51 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.00077832
0xd8b43605a0d503a6ede3e8e9d85b78539a842c1d87312bfeb700adb725d5199352 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.00077832
0xee1d90aa726c6bd2d5a4da68bb0a20217bd25244c29fbccced527b9c286ac2ed55 mins ago0xd4a715e3b2ae90a697a6c1f3a1e0f16b64746407  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783021.30320339 Ether0.00182524
0xeb3421531d11a54cdb8e59a7a24455c317dbad6e4046a6342a7d8f84ba40179e56 mins ago0x3a7829ab038ab4fc962f76c0a8ebc5add3e3ef13  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020.46437181 Ether0.00182524
0x7cb45f249fc9e83e77d4107f92a7433a27d26d28a99ad817c28ed27f3e088c1056 mins ago0xbd8e7dead39f56709090af9fa214373adb49f2eb  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783021.30152699 Ether0.00182524
0x3ace596a306b4bc52ce49c717357f8bf84dc8c8b8b3c92f195c15806e5170cc456 mins ago0x015f3661dbc48b63d3d65b018a57f8280b5515d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783021.29785635 Ether0.00182524
0x0cbf8b567ee0341c1f31b377fdf961b5d5c87ae921947c9ec1ba1ff3158ee6581 hr 2 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.000622144
0xebb46cffe1e4abbdc8e8442c360328b133445702672ce329c9a7ec4ce8839af81 hr 2 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.000703376
0x129b4fb43cf02c73b80d5246456729e32a086be5bdd00bd98e722ecd05d5ae021 hr 3 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.000622144
0x89d6b0d718c2c353358d5167ec58353b25027b1f0e5c4e83c70beeb84a0d2d391 hr 3 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.000622144
0xcf71e470ece4ba90e0c46ced6f22eca28805120a68eefb2dbf80b514c49cc1081 hr 4 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.000703888
0x290bd92da389cbdc80f61018a2fea6753b3c04df3fc27c6c0b0e433fcf46a8a61 hr 4 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.000622144
0x9bc38176b3eec819bcb32693120d2161fb60752c53fdfe7a49faf7f353cc0d491 hr 5 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.000703376
0x4bfaddd013cf52f897f10d2e3a72f4cd35331c107f7a0742b265ecc21a01909c1 hr 6 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.000703376
0x133539aecbe9935c0d8d2148452c5c760bdda8307153e957160db831ab3df6e21 hr 8 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.001453024
0xfba74fcdb0e5760ac9c5ce01d32123d7ce8d10a3bc3019dadf34b71823ba819a1 hr 9 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.001452696
0xaa6cbcaaf85c15ca7508e7d79b77bde44047a2f836f2fab375a79df33128d3681 hr 9 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.001453536
0xb777cf9e00c6d342773260398e8987213ed6568e4d7b3aa1f4ac44b28d8aaed11 hr 9 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.001452512
0x51425fa06a4aa5b63864d64680934637a17cfa807197c156964848f80b582fa31 hr 10 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.001453536
0x7d1f1db6c4da04b7c50a9f6e54e2b21f06d61ce624c76d0736308f6660c6ae2b1 hr 11 mins ago0x457804851eaf090dad4871f9609010c6868d99d4  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020 Ether0.001453024
0xc8f50c8436740aa84facc8800d53c9f521b5ee41daf4d082f725a883ee0fe28e1 hr 14 mins ago0xcc21fe51643756ce3659a1e74fc02d28b0bcf56d  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020.47415332 Ether0.00182524
0x34e80a9b8c4a77caf74cf5897a1a7a6e1b93f0f8098c6a650d6adc51102471651 hr 14 mins ago0x9bc318528648d490b5e44f95ae165cede985b451  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020.47415331 Ether0.00182524
0x1732c0a9ca57073e7d06bf0032604aecf3659192cde9f5a3215e0ec14b5bca6a1 hr 14 mins ago0x1090f8270ba51d930acd906e2f0b4dfb6a127cad  IN   0xc7c9b856d33651cc2bcd9e0099efa85f59f783020.47415079 Ether0.00182524
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0x3c2cd11b8027c0734bc301aecf7153eb271475bbe702360a2f9e833eb53f0001711878150 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020xd4a715e3b2ae90a697a6c1f3a1e0f16b647464071.30170339 Ether
0x1558a69656bc95a8e469020b095a4db27d2a3beea3e3947f3a330d17f0a12eae711877751 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x3a7829ab038ab4fc962f76c0a8ebc5add3e3ef130.46287181 Ether
0xd8b43605a0d503a6ede3e8e9d85b78539a842c1d87312bfeb700adb725d51993711877452 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x015f3661dbc48b63d3d65b018a57f8280b5515d41.29635635 Ether
0x0cbf8b567ee0341c1f31b377fdf961b5d5c87ae921947c9ec1ba1ff3158ee65871187371 hr 2 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x9bc318528648d490b5e44f95ae165cede985b4510.47247331 Ether
0x129b4fb43cf02c73b80d5246456729e32a086be5bdd00bd98e722ecd05d5ae0271187351 hr 3 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x6218520c68a8db6dbd1222706897ec57b0a5e9290.47234702 Ether
0x89d6b0d718c2c353358d5167ec58353b25027b1f0e5c4e83c70beeb84a0d2d3971187351 hr 3 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020xbb90d7b46fe80cf9458e6d1dbe4f976b257daae20.47234702 Ether
0x290bd92da389cbdc80f61018a2fea6753b3c04df3fc27c6c0b0e433fcf46a8a671187321 hr 4 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x7b46e1f09d3d3ac553df2e5138b9876c8ad927bf1.307065735 Ether
0xd003ab069331bea8f583d58d35dd23e186b6803d3f8d2cdea7c70e1af988ffc371185871 hr 46 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x59b6e4082513986bced8cd88bd374eda17514aaa0.08398317 Ether
0x1db024908fd71596d25ee92989e450ebe7909a77632876ed2d97fae5fbcf262871183453 hrs 1 min ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020xd4a715e3b2ae90a697a6c1f3a1e0f16b647464070.82870527609375 Ether
0x7b4279b60d469feff38aed1550ff597c41bedade8c69dabff8cd44a892c91eba71183133 hrs 10 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x973992c533f1305485ec600e8e29e018ed6bd1700.83731005 Ether
0x1b8902f8d30ba470d72fde9b6fd401fa0064e38e596c08e1940eeb98c985efa271183093 hrs 10 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x3a7829ab038ab4fc962f76c0a8ebc5add3e3ef130.83700653 Ether
0xd127250feb74dc3440ccc0368f4f81aeaacf47a1939053bb1867b9a1a3fef5d171183073 hrs 11 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020xbd8e7dead39f56709090af9fa214373adb49f2eb0.82715517 Ether
0xac9b7ca070e9540c931fe4090c11b58cd0af293ca633ac4c319bc37592ca930f71183053 hrs 11 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x16b0be487d14454357a121023424097baa45adb50.83706235 Ether
0xe58696d00445d8a4e0340dfdb0f7ce7355d0688f2a3177298b097fde9137391c71183033 hrs 12 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x26a4e95cf95187fcadaa59bed60f55d97644c51d0.83630943 Ether
0xcf2bcaa8330d2913bb7e9ecb5efc9b1306d82723a2b493002a2a3bd622cac00571182993 hrs 14 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x1af9e4741ed5cfbe4dbf26dfef588fe8da9d93e60.83633434 Ether
0x2dbfc75976e6a0d5bc6a318d5f2b28cf32af2df0c4fe39d41bf3780175a740a471182893 hrs 16 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x9bc318528648d490b5e44f95ae165cede985b4510.843207185 Ether
0x9594596903b4af65c5d9e7950bc120ab0ba28bacebba015a2513e6f31840110a71182793 hrs 19 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x2901e2fb35d6df41e090e4a523a4e534518db94b0.843161575 Ether
0x6ba6117bb27bc55bf15419b54f7c598c3a32356663515a72581c7bd8156b548f71182763 hrs 20 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x6218520c68a8db6dbd1222706897ec57b0a5e9290.842887775 Ether
0x9b4db091f7fddb920cf2a298ff978427814011c7c10dfe9995f9f8da9bafd96971182763 hrs 20 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020xbb90d7b46fe80cf9458e6d1dbe4f976b257daae20.842090335 Ether
0xa23c8d299dc555f942f4f457d1ec1fc6b85cf1af4ed9b5c93023c8c6a24a511471182703 hrs 24 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x14315d949dc38e562f986dead51197ddc7aab6d50.842887775 Ether
0x6cac2dfce703e1e82aab54dd625c7736bb7e5c8c53b04cfa4f9a1a4e8b77fc1e71182683 hrs 24 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x1090f8270ba51d930acd906e2f0b4dfb6a127cad0.842087775 Ether
0xce5e2dc3b2e83a21e1fd9c49fd3b37b86e255e44a12ed23a602f1e4d713a939b71182663 hrs 25 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020xcc21fe51643756ce3659a1e74fc02d28b0bcf56d0.842087775 Ether
0x44b55a69296ad311e2682b7a3a808e59f8ea51098a7c5ccf1e98a013389ca22371182643 hrs 25 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x72daa72d48755102f7af5699e2cb199dab1a0ecf0.842407185 Ether
0xe20e958ddb6e5a8cc5cfad744241295a8137ab4ed060e8bab927d68c3914ca8171182393 hrs 32 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020xe22c53fe76384b9d9f2dc5c683eb2597c99d0f250.843487775 Ether
0x971679e4790aa4178c26401665917b777c4bfe19fa6202d5ccc1349288c9a7ce71178345 hrs 13 mins ago0xc7c9b856d33651cc2bcd9e0099efa85f59f783020x59c59d63a986d6c12b82156cd67c68f0765b1a447.58338 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Similar Match)
Note: Displaying Similar Match Verified Source Code At Contract 0x63cef38c75d9805a36d92fa291bae781b41861e1(Excluding Constructor Arguments if any)
Contract Name: R1Exchange
Compiler Text: v0.4.20+commit.3155dd80
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

///auto-generated single file for verifying contract on etherscan
pragma solidity ^0.4.20;

contract SafeMath {

    function safeAdd(uint256 _x, uint256 _y) internal pure returns (uint256) {
        uint256 z = _x + _y;
        assert(z >= _x);
        return z;
    }

    function safeSub(uint256 _x, uint256 _y) internal pure returns (uint256) {
        assert(_x >= _y);
        return _x - _y;
    }

    function safeMul(uint256 _x, uint256 _y) internal pure returns (uint256) {
        uint256 z = _x * _y;
        assert(_x == 0 || z / _x == _y);
        return z;
    }
}

contract Ownable {
    address public owner;


    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    function Ownable() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

contract Token {
    uint256 public totalSupply;

    function balanceOf(address _owner) public constant returns (uint256 balance);

    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);

    function allowance(address _owner, address _spender) public constant returns (uint256 remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
contract R1Exchange is SafeMath, Ownable {
    mapping(address => bool) public admins;
    mapping(address => bool) public feeAccounts;
    // mapping(token address => mapping(owner address => mapping(channelId uint => uint256))) public tokenList;
    mapping(address => mapping(address => mapping(uint256 => uint256))) public tokenList;
    // mapping(owner address =>  mapping(orderHash bytes32 => uint256)) public tokenList;
    mapping(address => mapping(bytes32 => uint256)) public orderFilled;//tokens filled
    mapping(bytes32 => bool) public withdrawn;
    mapping(address => mapping(address => mapping(uint256 => uint256))) public withdrawAllowance;
    mapping(address => mapping(address => mapping(uint256 => uint256))) public applyList;//withdraw apply list
    mapping(address => mapping(address => mapping(uint256 => uint))) public latestApply;//save the latest apply timestamp
    // mapping(owner address => mapping(channelId uint => nonce uint256))) public canceled;
    mapping(address => mapping(uint256 => uint)) public canceled;
    string public constant version = '2.0.0';
    uint public applyWait = 1 days;
    uint public feeRate = 10;
    bool public withdrawEnabled = false;
    bool public stop = false;
    uint256 private DEFAULT_CHANNEL_ID = 0;
    bool public depositToEnabled = true;
    bool public transferEnabled = false;
    bool public changeChannelEnabled = false;
    event Deposit(address indexed token, address indexed user, uint256 amount, uint256 balance, uint256 channelId);
    event DepositTo(address indexed token, address indexed from, address indexed user, uint256 amount, uint256 balance, uint256 channelId);
    event Withdraw(address indexed token, address indexed user, uint256 amount, uint256 balance, uint256 channelId);
    event ApplyWithdraw(address indexed token, address indexed user, uint256 amount, uint256 time, uint256 channelId);
    event ApproveWithdraw(address indexed token, address indexed user, uint256 channelId);
    event Trade(address indexed maker, address indexed taker, uint256 amount, uint256 makerFee, uint256 takerFee, uint256 makerNonce, uint256 takerNonce);
    event InnerTransfer(address indexed token, address indexed from, address indexed to, uint256 amount, uint256 balance, uint256 channelId);
    event ChangeChannel(address indexed token, address indexed user, uint256 amount, uint256 fromChannelId, uint256 toChannelId);
    event BatchCancel(uint256 count, uint256 channelId);
    modifier onlyAdmin {
        require(admins[msg.sender]);
        _;
    }
    modifier isWithdrawEnabled {
        require(withdrawEnabled);
        _;
    }
    modifier isFeeAccount(address fa) {
        require(feeAccounts[fa]);
        _;
    }
    modifier notStop() {
        require(!stop);
        _;
    }
    modifier isDepositToEnabled() {
        require(depositToEnabled);
        _;
    }
    modifier isTransferEnabled() {
        require(transferEnabled);
        _;
    }
    modifier isChangeChannelEnabled() {
        require(changeChannelEnabled);
        _;
    }
    function() public {
        revert();
    }
    function setAdmin(address admin, bool isAdmin) public onlyOwner {
        require(admin != 0);
        admins[admin] = isAdmin;
    }
    function setFeeAccount(address acc, bool asFee) public onlyOwner {
        require(acc != 0);
        feeAccounts[acc] = asFee;
    }
    function enableWithdraw(bool enabled) public onlyOwner {
        withdrawEnabled = enabled;
    }
    function enableDepositTo(bool enabled) public onlyOwner {
        depositToEnabled = enabled;
    }
    function enableTransfer(bool enabled) public onlyOwner {
        transferEnabled = enabled;
    }
    function enableChangeChannel(bool enabled) public onlyOwner {
        changeChannelEnabled = enabled;
    }
    function changeLockTime(uint lock) public onlyOwner {
        require(lock <= 7 days);
        applyWait = lock;
    }
    function changeFeeRate(uint fr) public onlyOwner {
        //max fee rate MUST <=10%
        require(fr >= 10);
        feeRate = fr;
    }
    function stopTrade() public onlyOwner {
        stop = true;
    }
    /**
    * cancel the order that before nonce.
    **/
    function batchCancel(address[] users, uint256[] nonces, uint256 channelId) public onlyAdmin {
        require(users.length == nonces.length);
        uint256 count = 0;
        for (uint i = 0; i < users.length; i++) {
            require(nonces[i] >= canceled[users[i]][channelId]);
            canceled[users[i]][channelId] = nonces[i];
            count++;
        }
        BatchCancel(count, channelId);
    }
    function deposit(uint256 channelId) public payable {
        tokenList[0][msg.sender][channelId] = safeAdd(tokenList[0][msg.sender][channelId], msg.value);
        Deposit(0, msg.sender, msg.value, tokenList[0][msg.sender][channelId], channelId);
    }
    function depositToken(address token, uint256 amount, uint256 channelId) public {
        require(token != 0);
        tokenList[token][msg.sender][channelId] = safeAdd(tokenList[token][msg.sender][channelId], amount);
        require(Token(token).transferFrom(msg.sender, this, amount));
        Deposit(token, msg.sender, amount, tokenList[token][msg.sender][channelId], channelId);
    }
    function depositTo(address to, uint256 channelId) public payable isDepositToEnabled {
        require(to != 0 && msg.value > 0);
        tokenList[0][to][channelId] = safeAdd(tokenList[0][to][channelId], msg.value);
        DepositTo(0, msg.sender, to, msg.value, tokenList[0][to][channelId], channelId);
    }
    function depositTokenTo(address token, address to, uint256 amount, uint256 channelId) public isDepositToEnabled {
        require(token != 0 && to != 0 && amount > 0);
        tokenList[token][to][channelId] = safeAdd(tokenList[token][to][channelId], amount);
        require(Token(token).transferFrom(msg.sender, this, amount));
        DepositTo(token, msg.sender, to, amount, tokenList[token][to][channelId], channelId);
    }
    function batchDepositTokenTo(address[] token, address[] to, uint256[] amount, uint256 channelId) public isDepositToEnabled {
        require(to.length == amount.length && to.length <= 200);
        for (uint i = 0; i < to.length; i++) {
            depositTokenTo(token[i], to[i], amount[i], channelId);
        }
    }
    function innerTransfer(address token, address to, uint256 amount, uint256 channelId) public isTransferEnabled {
        require(to != 0);
        require(amount <= tokenList[token][msg.sender][channelId]);
        tokenList[token][msg.sender][channelId] = safeSub(tokenList[token][msg.sender][channelId], amount);
        tokenList[token][to][channelId] = safeAdd(tokenList[token][to][channelId], amount);
        InnerTransfer(token, msg.sender, to, amount, tokenList[token][msg.sender][channelId], channelId);
    }
    function batchInnerTransfer(address[] token, address[] to, uint256[] amount, uint256 channelId) public isTransferEnabled {
        require(to.length == amount.length && to.length <= 200);
        for (uint i = 0; i < to.length; i++) {
            innerTransfer(token[i], to[i], amount[i], channelId);
        }
    }
    function changeChannel(address token, uint256 amount, uint256 fromChannelId, uint256 toChannelId) public isChangeChannelEnabled {
        require(amount <= tokenList[token][msg.sender][fromChannelId]);
        tokenList[token][msg.sender][fromChannelId] = safeSub(tokenList[token][msg.sender][fromChannelId], amount);
        tokenList[token][msg.sender][toChannelId] = safeAdd(tokenList[token][msg.sender][toChannelId], amount);
        ChangeChannel(token, msg.sender, amount, fromChannelId, toChannelId);
    }
    function batchChangeChannel(address[] token, uint256[] amount, uint256 fromChannelId, uint256 toChannelId) public isChangeChannelEnabled {
        require(token.length == amount.length && amount.length <= 200);
        for (uint i = 0; i < amount.length; i++) {
            changeChannel(token[i], amount[i], fromChannelId, toChannelId);
        }
    }
    function applyWithdraw(address token, uint256 amount, uint256 channelId) public {
        uint256 apply = safeAdd(applyList[token][msg.sender][channelId], amount);
        require(safeAdd(apply, withdrawAllowance[token][msg.sender][channelId]) <= tokenList[token][msg.sender][channelId]);
        applyList[token][msg.sender][channelId] = apply;
        latestApply[token][msg.sender][channelId] = block.timestamp;
        ApplyWithdraw(token, msg.sender, amount, block.timestamp, channelId);
    }
    /**
    * approve user's withdraw application
    **/
    function approveWithdraw(address token, address user, uint256 channelId) public onlyAdmin {
        withdrawAllowance[token][user][channelId] = safeAdd(withdrawAllowance[token][user][channelId], applyList[token][user][channelId]);
        applyList[token][user][channelId] = 0;
        latestApply[token][user][channelId] = 0;
        ApproveWithdraw(token, user, channelId);
    }
    /**
    * user's withdraw will success in two cases:
    *    1. when the admin calls the approveWithdraw function;
    * or 2. when the lock time has passed since the application;
    **/
    function withdraw(address token, uint256 amount, uint256 channelId) public {
        require(amount <= tokenList[token][msg.sender][channelId]);
        if (amount > withdrawAllowance[token][msg.sender][channelId]) {
            //withdraw wait over time
            require(latestApply[token][msg.sender][channelId] != 0 && safeSub(block.timestamp, latestApply[token][msg.sender][channelId]) > applyWait);
            withdrawAllowance[token][msg.sender][channelId] = safeAdd(withdrawAllowance[token][msg.sender][channelId], applyList[token][msg.sender][channelId]);
            applyList[token][msg.sender][channelId] = 0;
        }
        require(amount <= withdrawAllowance[token][msg.sender][channelId]);
        withdrawAllowance[token][msg.sender][channelId] = safeSub(withdrawAllowance[token][msg.sender][channelId], amount);
        tokenList[token][msg.sender][channelId] = safeSub(tokenList[token][msg.sender][channelId], amount);
        latestApply[token][msg.sender][channelId] = 0;
        if (token == 0) {//withdraw ether
            require(msg.sender.send(amount));
        } else {//withdraw token
            require(Token(token).transfer(msg.sender, amount));
        }
        Withdraw(token, msg.sender, amount, tokenList[token][msg.sender][channelId], channelId);
    }
    /**
    * withdraw directly when withdrawEnabled=true
    **/
    function withdrawNoLimit(address token, uint256 amount, uint256 channelId) public isWithdrawEnabled {
        require(amount <= tokenList[token][msg.sender][channelId]);
        tokenList[token][msg.sender][channelId] = safeSub(tokenList[token][msg.sender][channelId], amount);
        if (token == 0) {//withdraw ether
            require(msg.sender.send(amount));
        } else {//withdraw token
            require(Token(token).transfer(msg.sender, amount));
        }
        Withdraw(token, msg.sender, amount, tokenList[token][msg.sender][channelId], channelId);
    }
    struct AdminWithdrawParam {
        address user;
        address token;
        address feeAccount;
        address channelFeeAccount;
        uint256 amount;
        uint256 nonce;
        uint256 fee;
        uint256 channelFee;
        uint256 channelId;
    }
    /**
    * admin withdraw according to user's signed withdraw info
    * PARAMS:
    * addresses:
    * [0] user
    * [1] token
    * [2] feeAccount
    * [3] channelFeeAccount
    * values:
    * [0] amount
    * [1] nonce
    * [2] fee
    * [3] channelFee
    * [4] channelId
    **/
    function adminWithdraw(address[4] addresses, uint256[5] values, uint8 v, bytes32 r, bytes32 s)
    public
    onlyAdmin
    isFeeAccount(addresses[2])
    {
        AdminWithdrawParam memory param = AdminWithdrawParam({
            user : addresses[0],
            token : addresses[1],
            feeAccount : addresses[2],
            channelFeeAccount : addresses[3],
            amount : values[0],
            nonce : values[1],
            fee : values[2],
            channelFee : values[3],
            channelId : values[4]
            });
        require(param.amount <= tokenList[param.token][param.user][param.channelId]);
        param.fee = checkFee(param.amount, param.fee);
        param.channelFee = checkFee(param.amount, param.channelFee);
        bytes32 hash = keccak256(this, param.user, param.token, param.amount, param.nonce, param.channelFeeAccount, param.channelId);
        require(!withdrawn[hash]);
        withdrawn[hash] = true;
        require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32", hash), v, r, s) == param.user);
        tokenList[param.token][param.user][param.channelId] = safeSub(tokenList[param.token][param.user][param.channelId], param.amount);
        tokenList[param.token][param.feeAccount][DEFAULT_CHANNEL_ID] = safeAdd(tokenList[param.token][param.feeAccount][DEFAULT_CHANNEL_ID], param.fee);
        tokenList[param.token][param.channelFeeAccount][param.channelId] = safeAdd(tokenList[param.token][param.channelFeeAccount][param.channelId], param.channelFee);
        param.amount = safeSub(param.amount, param.fee);
        param.amount = safeSub(param.amount, param.channelFee);
        if (param.token == 0) {//withdraw ether
            require(param.user.send(param.amount));
        } else {//withdraw token
            require(Token(param.token).transfer(param.user, param.amount));
        }
        Withdraw(param.token, param.user, param.amount, tokenList[param.token][param.user][param.channelId], param.channelId);
    }
    function checkFee(uint256 amount, uint256 fee) private returns (uint256){
        uint256 maxFee = fee;
        if (safeMul(fee, feeRate) > amount) {
            maxFee = amount / feeRate;
        }
        return maxFee;
    }
    function getOrderHash(address tokenBuy, uint256 amountBuy, address tokenSell, uint256 amountSell, address base, uint256 expires, uint256 nonce, address feeToken, address channelFeeAccount, uint256 channelId) public view returns (bytes32) {
        return keccak256(this, tokenBuy, amountBuy, tokenSell, amountSell, base, expires, nonce, feeToken, channelFeeAccount, channelId);
    }
    function balanceOf(address token, address user, uint256 channelId) public constant returns (uint256) {
        return tokenList[token][user][channelId];
    }
    struct Order {
        address tokenBuy;
        address tokenSell;
        uint256 amountBuy;
        uint256 amountSell;
        address user;
        uint256 fee;
        uint256 expires;
        uint256 nonce;
        bytes32 orderHash;
        address baseToken;
        address feeToken;//0:default;others:payed with erc-20 token
        address channelFeeAccount;
        uint256 channelFee;
        uint256 channelId;
    }
    /**
    * swap maker and taker's tokens according to their signed order info.
    *
    * PARAMS:
    * addresses:
    * [0]:maker tokenBuy
    * [1]:taker tokenBuy
    * [2]:maker tokenSell
    * [3]:taker tokenSell
    * [4]:maker user
    * [5]:taker user
    * [6]:maker baseTokenAddr .default:0 ,then baseToken is ETH
    * [7]:taker baseTokenAddr .default:0 ,then baseToken is ETH
    * [8]:maker feeToken .
    * [9]:taker feeToken .
    * [10]:feeAccount
    * [11]:makerChannelAccount
    * [12]:takerChannelAccount
    * values:
    * [0]:maker amountBuy
    * [1]:taker amountBuy
    * [2]:maker amountSell
    * [3]:taker amountSell
    * [4]:maker fee
    * [5]:taker fee
    * [6]:maker expires
    * [7]:taker expires
    * [8]:maker nonce
    * [9]:taker nonce
    * [10]:tradeAmount of token
    * [11]:makerChannelFee
    * [12]:takerChannelFee
    * [13]:makerChannelId
    * [14]:takerChannelId
    * v,r,s:maker and taker's signature
    **/
    function trade(
        address[13] addresses,
        uint256[15] values,
        uint8[2] v,
        bytes32[2] r,
        bytes32[2] s
    ) public
    onlyAdmin
    isFeeAccount(addresses[10])
    notStop
    {
        Order memory makerOrder = Order({
            tokenBuy : addresses[0],
            tokenSell : addresses[2],
            user : addresses[4],
            amountBuy : values[0],
            amountSell : values[2],
            fee : values[4],
            expires : values[6],
            nonce : values[8],
            orderHash : 0,
            baseToken : addresses[6],
            feeToken : addresses[8],
            channelFeeAccount : addresses[11],
            channelFee : values[11],
            channelId : values[13]
            });
        Order memory takerOrder = Order({
            tokenBuy : addresses[1],
            tokenSell : addresses[3],
            user : addresses[5],
            amountBuy : values[1],
            amountSell : values[3],
            fee : values[5],
            expires : values[7],
            nonce : values[9],
            orderHash : 0,
            baseToken : addresses[7],
            feeToken : addresses[9],
            channelFeeAccount : addresses[12],
            channelFee : values[12],
            channelId : values[14]
            });
        uint256 tradeAmount = values[10];
        //check expires
        require(makerOrder.expires >= block.number && takerOrder.expires >= block.number);
        //check order nonce canceled
        require(makerOrder.nonce >= canceled[makerOrder.user][makerOrder.channelId] && takerOrder.nonce >= canceled[takerOrder.user][takerOrder.channelId]);
        //make sure both is the same trade pair
        require(makerOrder.baseToken == takerOrder.baseToken && makerOrder.tokenBuy == takerOrder.tokenSell && makerOrder.tokenSell == takerOrder.tokenBuy);
        require(takerOrder.baseToken == takerOrder.tokenBuy || takerOrder.baseToken == takerOrder.tokenSell);
        makerOrder.orderHash = getOrderHash(makerOrder.tokenBuy, makerOrder.amountBuy, makerOrder.tokenSell, makerOrder.amountSell, makerOrder.baseToken, makerOrder.expires, makerOrder.nonce, makerOrder.feeToken, makerOrder.channelFeeAccount, makerOrder.channelId);
        takerOrder.orderHash = getOrderHash(takerOrder.tokenBuy, takerOrder.amountBuy, takerOrder.tokenSell, takerOrder.amountSell, takerOrder.baseToken, takerOrder.expires, takerOrder.nonce, takerOrder.feeToken, takerOrder.channelFeeAccount, takerOrder.channelId);
        require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32", makerOrder.orderHash), v[0], r[0], s[0]) == makerOrder.user);
        require(ecrecover(keccak256("\x19Ethereum Signed Message:\n32", takerOrder.orderHash), v[1], r[1], s[1]) == takerOrder.user);
        balance(makerOrder, takerOrder, addresses[10], tradeAmount);
        //event
        Trade(makerOrder.user, takerOrder.user, tradeAmount, makerOrder.fee, takerOrder.fee, makerOrder.nonce, takerOrder.nonce);
    }
    function balance(Order makerOrder, Order takerOrder, address feeAccount, uint256 tradeAmount) internal {
        ///check the price meets the condition.
        ///match condition: (makerOrder.amountSell*takerOrder.amountSell)/(makerOrder.amountBuy*takerOrder.amountBuy) >=1
        require(safeMul(makerOrder.amountSell, takerOrder.amountSell) >= safeMul(makerOrder.amountBuy, takerOrder.amountBuy));
        ///If the price is ok,always use maker's price first!
        uint256 takerBuy = 0;
        uint256 takerSell = 0;
        if (takerOrder.baseToken == takerOrder.tokenBuy) {
            //taker sell tokens
            uint256 makerAmount = safeSub(makerOrder.amountBuy, orderFilled[makerOrder.user][makerOrder.orderHash]);
            uint256 takerAmount = safeSub(takerOrder.amountSell, orderFilled[takerOrder.user][takerOrder.orderHash]);
            require(tradeAmount > 0 && tradeAmount <= makerAmount && tradeAmount <= takerAmount);
            takerSell = tradeAmount;
            takerBuy = safeMul(makerOrder.amountSell, takerSell) / makerOrder.amountBuy;
            orderFilled[takerOrder.user][takerOrder.orderHash] = safeAdd(orderFilled[takerOrder.user][takerOrder.orderHash], takerSell);
            orderFilled[makerOrder.user][makerOrder.orderHash] = safeAdd(orderFilled[makerOrder.user][makerOrder.orderHash], takerSell);
        } else {
            // taker buy tokens
            takerAmount = safeSub(takerOrder.amountBuy, orderFilled[takerOrder.user][takerOrder.orderHash]);
            makerAmount = safeSub(makerOrder.amountSell, orderFilled[makerOrder.user][makerOrder.orderHash]);
            require(tradeAmount > 0 && tradeAmount <= makerAmount && tradeAmount <= takerAmount);
            takerBuy = tradeAmount;
            takerSell = safeMul(makerOrder.amountBuy, takerBuy) / makerOrder.amountSell;
            orderFilled[takerOrder.user][takerOrder.orderHash] = safeAdd(orderFilled[takerOrder.user][takerOrder.orderHash], takerBuy);
            orderFilled[makerOrder.user][makerOrder.orderHash] = safeAdd(orderFilled[makerOrder.user][makerOrder.orderHash], takerBuy);
        }
        //taker give tokens
        tokenList[takerOrder.tokenSell][takerOrder.user][takerOrder.channelId] = safeSub(tokenList[takerOrder.tokenSell][takerOrder.user][takerOrder.channelId], takerSell);
        //taker get tokens
        tokenList[takerOrder.tokenBuy][takerOrder.user][takerOrder.channelId] = safeAdd(tokenList[takerOrder.tokenBuy][takerOrder.user][takerOrder.channelId], takerBuy);
        //maker give tokens
        tokenList[makerOrder.tokenSell][makerOrder.user][makerOrder.channelId] = safeSub(tokenList[makerOrder.tokenSell][makerOrder.user][makerOrder.channelId], takerBuy);
        //maker get tokens
        tokenList[makerOrder.tokenBuy][makerOrder.user][makerOrder.channelId] = safeAdd(tokenList[makerOrder.tokenBuy][makerOrder.user][makerOrder.channelId], takerSell);
        chargeFee(makerOrder, feeAccount, takerSell);
        chargeFee(takerOrder, feeAccount, takerBuy);
    }
    ///charge fees.fee can be payed as other erc20 token or the tokens that user get
    ///returns:fees to reduce from the user's tokenBuy
    function chargeFee(Order order, address feeAccount, uint256 amountBuy) internal returns (uint256){
        uint256 totalFee = 0;
        if (order.feeToken != 0) {
            ///use erc-20 token as fee .
            //make sure the user has enough tokens
            totalFee = safeAdd(order.fee, order.channelFee);
            require(totalFee <= tokenList[order.feeToken][order.user][order.channelId]);
            tokenList[order.feeToken][feeAccount][DEFAULT_CHANNEL_ID] = safeAdd(tokenList[order.feeToken][feeAccount][DEFAULT_CHANNEL_ID], order.fee);
            tokenList[order.feeToken][order.channelFeeAccount][order.channelId] = safeAdd(tokenList[order.feeToken][order.channelFeeAccount][order.channelId], order.channelFee);
            tokenList[order.feeToken][order.user][order.channelId] = safeSub(tokenList[order.feeToken][order.user][order.channelId], totalFee);
        } else {
            order.fee = checkFee(amountBuy, order.fee);
            order.channelFee = checkFee(amountBuy, order.channelFee);
            totalFee = safeAdd(order.fee, order.channelFee);
            tokenList[order.tokenBuy][feeAccount][DEFAULT_CHANNEL_ID] = safeAdd(tokenList[order.tokenBuy][feeAccount][DEFAULT_CHANNEL_ID], order.fee);
            tokenList[order.tokenBuy][order.channelFeeAccount][order.channelId] = safeAdd(tokenList[order.tokenBuy][order.channelFeeAccount][order.channelId], order.channelFee);
            tokenList[order.tokenBuy][order.user][order.channelId] = safeSub(tokenList[order.tokenBuy][order.user][order.channelId], totalFee);
        }
    }
    function batchTrade(
        address[13][] addresses,
        uint256[15][] values,
        uint8[2][] v,
        bytes32[2][] r,
        bytes32[2][] s
    ) public onlyAdmin {
        for (uint i = 0; i < addresses.length; i++) {
            trade(addresses[i], values[i], v[i], r[i], s[i]);
        }
    }
    ///help to refund token to users.this method is called when contract needs updating
    function refund(address user, address[] tokens, uint256[] channelIds) public onlyAdmin {
        for (uint i = 0; i < tokens.length; i++) {
            address token = tokens[i];
            for (uint j = 0; j < channelIds.length; j++) {
                uint256 channelId = channelIds[j];
                uint256 amount = tokenList[token][user][channelId];
                if (amount > 0) {
                    tokenList[token][user][channelId] = 0;
                    if (token == 0) {//withdraw ether
                        require(user.send(amount));
                    } else {//withdraw token
                        require(Token(token).transfer(user, amount));
                    }
                    Withdraw(token, user, amount, tokenList[token][user][channelId], channelId);
                }
            }
        }
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"stop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenBuy","type":"address"},{"name":"amountBuy","type":"uint256"},{"name":"tokenSell","type":"address"},{"name":"amountSell","type":"uint256"},{"name":"base","type":"address"},{"name":"expires","type":"uint256"},{"name":"nonce","type":"uint256"},{"name":"feeToken","type":"address"},{"name":"channelFeeAccount","type":"address"},{"name":"channelId","type":"uint256"}],"name":"getOrderHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address[]"},{"name":"amount","type":"uint256[]"},{"name":"fromChannelId","type":"uint256"},{"name":"toChannelId","type":"uint256"}],"name":"batchChangeChannel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"applyList","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"withdrawEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"channelId","type":"uint256"}],"name":"withdrawNoLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"tokenList","outputs":[{"name":"","type":"uint256"}],"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":"depositToEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"tokens","type":"address[]"},{"name":"channelIds","type":"uint256[]"}],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"admins","outputs":[{"name":"","type":"bool"}],"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":"transferEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"channelId","type":"uint256"}],"name":"innerTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"bytes32"}],"name":"orderFilled","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"changeChannelEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"channelId","type":"uint256"}],"name":"applyWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"to","type":"address"},{"name":"amount","type":"uint256"},{"name":"channelId","type":"uint256"}],"name":"depositTokenTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"user","type":"address"},{"name":"channelId","type":"uint256"}],"name":"approveWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"users","type":"address[]"},{"name":"nonces","type":"uint256[]"},{"name":"channelId","type":"uint256"}],"name":"batchCancel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address[]"},{"name":"to","type":"address[]"},{"name":"amount","type":"uint256[]"},{"name":"channelId","type":"uint256"}],"name":"batchDepositTokenTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"stopTrade","outputs":[],"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":"enabled","type":"bool"}],"name":"enableWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"lock","type":"uint256"}],"name":"changeLockTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"channelId","type":"uint256"}],"name":"depositToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"acc","type":"address"},{"name":"asFee","type":"bool"}],"name":"setFeeAccount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"enabled","type":"bool"}],"name":"enableDepositTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"fromChannelId","type":"uint256"},{"name":"toChannelId","type":"uint256"}],"name":"changeChannel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[13]"},{"name":"values","type":"uint256[15]"},{"name":"v","type":"uint8[2]"},{"name":"r","type":"bytes32[2]"},{"name":"s","type":"bytes32[2]"}],"name":"trade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[13][]"},{"name":"values","type":"uint256[15][]"},{"name":"v","type":"uint8[2][]"},{"name":"r","type":"bytes32[2][]"},{"name":"s","type":"bytes32[2][]"}],"name":"batchTrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"fr","type":"uint256"}],"name":"changeFeeRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"canceled","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"enabled","type":"bool"}],"name":"enableChangeChannel","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"channelId","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"channelId","type":"uint256"}],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address[]"},{"name":"to","type":"address[]"},{"name":"amount","type":"uint256[]"},{"name":"channelId","type":"uint256"}],"name":"batchInnerTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"latestApply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"feeAccounts","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"withdrawAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"user","type":"address"},{"name":"channelId","type":"uint256"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"enabled","type":"bool"}],"name":"enableTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"applyWait","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[4]"},{"name":"values","type":"uint256[5]"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"adminWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"channelId","type":"uint256"}],"name":"depositTo","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"payable":false,"stateMutability":"nonpayable","type":"fallback"},{"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":"channelId","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"},{"indexed":false,"name":"channelId","type":"uint256"}],"name":"DepositTo","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":"channelId","type":"uint256"}],"name":"Withdraw","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":"time","type":"uint256"},{"indexed":false,"name":"channelId","type":"uint256"}],"name":"ApplyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"channelId","type":"uint256"}],"name":"ApproveWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"maker","type":"address"},{"indexed":true,"name":"taker","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"makerFee","type":"uint256"},{"indexed":false,"name":"takerFee","type":"uint256"},{"indexed":false,"name":"makerNonce","type":"uint256"},{"indexed":false,"name":"takerNonce","type":"uint256"}],"name":"Trade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"},{"indexed":false,"name":"channelId","type":"uint256"}],"name":"InnerTransfer","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":"fromChannelId","type":"uint256"},{"indexed":false,"name":"toChannelId","type":"uint256"}],"name":"ChangeChannel","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"count","type":"uint256"},{"indexed":false,"name":"channelId","type":"uint256"}],"name":"BatchCancel","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405262015180600a908155600b55600c805461ffff191690556000600d819055600e805460ff191660011762ffff00191690558054600160a060020a03191633600160a060020a03161781556145e890819061005e90396000f30060606040526004361061022c5763ffffffff60e060020a60003504166307da68f5811461023c5780630f4665aa146102635780631d793e9a146102c15780632066b2e4146103595780632287e96a146103815780632c8668d4146103945780632e08c6f4146103b95780633823d66c146103e157806339dd48da146103f7578063411927881461040a578063429b62e5146104a75780634b0bddd2146104c65780634cd412d5146104ea57806354fd4d50146104fd5780635601da3d14610587578063560b3cba146105b257806359a13c4d146105d45780635c8b94e7146105e7578063610043641461060c5780636bf9b3e71461063757806377922e571461065f578063839affc3146106f05780638baeefce146107c15780638da5cb5b146107d457806392e33d141461080357806396cf52271461081b578063978bbdb91461083157806399c6d2de14610844578063a4de3c1914610869578063a5609ab51461088d578063a95bc9a7146108a5578063adf96752146108cd578063af857a84146109b7578063affca93214610c0a578063b0fff5d214610c20578063b42220ad14610c42578063b5c5f67214610c5a578063b6b55f2514610c7f578063bdd9f4e714610c8a578063dcfddcbb14610d5b578063e2e71f9314610d83578063e3ed7bb114610da2578063e93119d914610dca578063ef7ac0e514610df2578063f2eaee0214610e0a578063f2fde38b14610e1d578063fcf3276914610e3c578063ffaad6a514610eab575b341561023757600080fd5b600080fd5b341561024757600080fd5b61024f610ec2565b604051901515815260200160405180910390f35b341561026e57600080fd5b6102af600160a060020a03600435811690602435906044358116906064359060843581169060a4359060c4359060e435811690610104351661012435610ed0565b60405190815260200160405180910390f35b34156102cc57600080fd5b61035760046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965050843594602001359350610f7092505050565b005b341561036457600080fd5b6102af600160a060020a0360043581169060243516604435610ffa565b341561038c57600080fd5b61024f61101d565b341561039f57600080fd5b610357600160a060020a0360043516602435604435611026565b34156103c457600080fd5b6102af600160a060020a0360043581169060243516604435611220565b34156103ec57600080fd5b61024f600435611243565b341561040257600080fd5b61024f611258565b341561041557600080fd5b61035760048035600160a060020a03169060446024803590810190830135806020808202016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061126195505050505050565b34156104b257600080fd5b61024f600160a060020a03600435166114a5565b34156104d157600080fd5b610357600160a060020a036004351660243515156114ba565b34156104f557600080fd5b61024f611515565b341561050857600080fd5b610510611523565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561054c578082015183820152602001610534565b50505050905090810190601f1680156105795780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561059257600080fd5b610357600160a060020a036004358116906024351660443560643561155a565b34156105bd57600080fd5b6102af600160a060020a03600435166024356116e4565b34156105df57600080fd5b61024f611701565b34156105f257600080fd5b610357600160a060020a0360043516602435604435611710565b341561061757600080fd5b610357600160a060020a0360043581169060243516604435606435611857565b341561064257600080fd5b610357600160a060020a0360043581169060243516604435611a18565b341561066a57600080fd5b6103576004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505093359350611b3d92505050565b34156106fb57600080fd5b610357600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505093359350611c9592505050565b34156107cc57600080fd5b610357611d27565b34156107df57600080fd5b6107e7611d53565b604051600160a060020a03909116815260200160405180910390f35b341561080e57600080fd5b6103576004351515611d62565b341561082657600080fd5b610357600435611d90565b341561083c57600080fd5b6102af611dc0565b341561084f57600080fd5b610357600160a060020a0360043516602435604435611dc6565b341561087457600080fd5b610357600160a060020a03600435166024351515611f51565b341561089857600080fd5b6103576004351515611fac565b34156108b057600080fd5b610357600160a060020a0360043516602435604435606435611fda565b34156108d857600080fd5b61035760046101a481600d6101a0604051908101604052919082826101a08082843782019150505050509190806101e00190600f80602002604051908101604052919082826101e08082843782019150505050509190806040019060028060200260405190810160405280929190826002602002808284378201915050505050919080604001906002806020026040519081016040528092919082600260200280828437820191505050505091908060400190600280602002604051908101604052809291908260026020028082843750939550612131945050505050565b34156109c257600080fd5b61035760046024813581810190830135806020818102016040519081016040528181529291906000602085015b82821015610a2d576101a0808302860190600d90604051908101604052919082826101a08082843750505091835250506001909101906020016109ef565b505050505091908035906020019082018035906020019080806020026020016040519081016040528181529291906000602085015b82821015610aa0576101e0808302860190600f90604051908101604052919082826101e0808284375050509183525050600190910190602001610a62565b505050505091908035906020019082018035906020019080806020026020016040519081016040528181529291906000602085015b82821015610b14576040808302860190600290805190810160405280929190826002602002808284375050509183525050600190910190602001610ad5565b505050505091908035906020019082018035906020019080806020026020016040519081016040528181529291906000602085015b82821015610b88576040808302860190600290805190810160405280929190826002602002808284375050509183525050600190910190602001610b49565b505050505091908035906020019082018035906020019080806020026020016040519081016040528181529291906000602085015b82821015610bfc576040808302860190600290805190810160405280929190826002602002808284375050509183525050600190910190602001610bbd565b505050505091905050612798565b3415610c1557600080fd5b610357600435612852565b3415610c2b57600080fd5b6102af600160a060020a0360043516602435612880565b3415610c4d57600080fd5b610357600435151561289d565b3415610c6557600080fd5b610357600160a060020a03600435166024356044356128d4565b610357600435612bc8565b3415610c9557600080fd5b610357600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496505093359350612c8592505050565b3415610d6657600080fd5b6102af600160a060020a0360043581169060243516604435612d1c565b3415610d8e57600080fd5b61024f600160a060020a0360043516612d3f565b3415610dad57600080fd5b6102af600160a060020a0360043581169060243516604435612d54565b3415610dd557600080fd5b6102af600160a060020a0360043581169060243516604435612d77565b3415610dfd57600080fd5b6103576004351515612da9565b3415610e1557600080fd5b6102af612dde565b3415610e2857600080fd5b610357600160a060020a0360043516612de4565b3415610e4757600080fd5b610357600460848180608060405190810160405291908282608080828437820191505050505091908060a001906005806020026040519081016040529190828260a080828437509395505050823560ff169260208101359250604001359050612e7f565b610357600160a060020a03600435166024356135fc565b600c54610100900460ff1681565b6000308b8b8b8b8b8b8b8b8b8b6040516c01000000000000000000000000600160a060020a039c8d16810282529a8c168b0260148201526028810199909952968a1689026048890152605c8801959095529288168702607c870152609086019190915260b08501528516840260d084015290931690910260e482015260f881019190915261011801604051809103902090509a9950505050505050505050565b600e5460009062010000900460ff161515610f8a57600080fd5b83518551148015610f9d575060c8845111155b1515610fa857600080fd5b5060005b8351811015610ff357610feb858281518110610fc457fe5b90602001906020020151858381518110610fda57fe5b906020019060200201518585611fda565b600101610fac565b5050505050565b600760209081526000938452604080852082529284528284209052825290205481565b600c5460ff1681565b600c5460ff16151561103757600080fd5b600160a060020a0380841660009081526003602090815260408083203390941683529281528282208483529052205482111561107257600080fd5b600160a060020a038084166000908152600360209081526040808320339094168352928152828220848352905220546110ab90836136f4565b600160a060020a03808516600081815260036020908152604080832033909516835293815283822086835290529190912091909155151561111c57600160a060020a03331682156108fc0283604051600060405180830381858888f19350505050151561111757600080fd5b61119f565b82600160a060020a031663a9059cbb338460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561117957600080fd5b6102c65a03f1151561118a57600080fd5b50505060405180519050151561119f57600080fd5b600160a060020a0383811660008181526003602090815260408083203390951680845294825280832086845290915290819020547febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9186919086905180848152602001838152602001828152602001935050505060405180910390a3505050565b600360209081526000938452604080852082529284528284209052825290205481565b60056020526000908152604090205460ff1681565b600e5460ff1681565b600160a060020a033316600090815260016020526040812054819081908190819060ff16151561129057600080fd5b600094505b865185101561149b578685815181106112aa57fe5b906020019060200201519350600092505b8551831015611490578583815181106112d057fe5b90602001906020020151600160a060020a038086166000908152600360209081526040808320938d16835292815282822084835290529081205491935090915081111561148557600160a060020a038085166000818152600360209081526040808320948d168352938152838220868352905291822091909155151561138657600160a060020a03881681156108fc0282604051600060405180830381858888f19350505050151561138157600080fd5b611409565b83600160a060020a031663a9059cbb898360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156113e357600080fd5b6102c65a03f115156113f457600080fd5b50505060405180519050151561140957600080fd5b600160a060020a038481166000818152600360209081526040808320948d1680845294825280832087845290915290819020547febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9185919087905180848152602001838152602001828152602001935050505060405180910390a35b6001909201916112bb565b600190940193611295565b5050505050505050565b60016020526000908152604090205460ff1681565b60005433600160a060020a039081169116146114d557600080fd5b600160a060020a03821615156114ea57600080fd5b600160a060020a03919091166000908152600160205260409020805460ff1916911515919091179055565b600e54610100900460ff1681565b60408051908101604052600581527f322e302e30000000000000000000000000000000000000000000000000000000602082015281565b600e54610100900460ff16151561157057600080fd5b600160a060020a038316151561158557600080fd5b600160a060020a038085166000908152600360209081526040808320339094168352928152828220848352905220548211156115c057600080fd5b600160a060020a038085166000908152600360209081526040808320339094168352928152828220848352905220546115f990836136f4565b600160a060020a0380861660009081526003602090815260408083203385168452808352818420878552835281842095909555928716825292835281812084825290925290205461164a9083613706565b600160a060020a0380861660008181526003602090815260408083208986168085528184528285208986528452828520979097553390951680845294825280832087845290915290819020547f6e878aff7e74cbd83d8c07e128ce4635ed1f7d59d65d1f42d465bee84eb3460e9187919087905180848152602001838152602001828152602001935050505060405180910390a450505050565b600460209081526000928352604080842090915290825290205481565b600e5462010000900460ff1681565b600160a060020a03808416600090815260076020908152604080832033909416835292815282822084835290529081205461174b9084613706565b600160a060020a038086166000818152600360209081526040808320339095168084529482528083208884528252808320549383526006825280832094835293815283822087835290529190912054919250906117a9908390613706565b11156117b457600080fd5b600160a060020a0380851660008181526007602090815260408083203390951680845294825280832087845282528083208690558383526008825280832085845282528083208784529091529081902042908190557f062f8db33ce66010d5d335b9de2c68f7a59521142597b70f81220b3e97f4c9939187919087905180848152602001838152602001828152602001935050505060405180910390a350505050565b600e5460ff16151561186857600080fd5b600160a060020a038416158015906118885750600160a060020a03831615155b80156118945750600082115b151561189f57600080fd5b600160a060020a0380851660009081526003602090815260408083209387168352928152828220848352905220546118d79083613706565b600160a060020a0380861660008181526003602090815260408083209489168352938152838220868352905282812093909355916323b872dd9133913091879190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561196c57600080fd5b6102c65a03f1151561197d57600080fd5b50505060405180519050151561199257600080fd5b600160a060020a03848116600081815260036020908152604080832085891680855290835281842087855290925291829020549093331692917fb8549480a740327017d760034cf7d1b112890eb0948c99dbd7da38738096f75991879187905180848152602001838152602001828152602001935050505060405180910390a450505050565b600160a060020a03331660009081526001602052604090205460ff161515611a3f57600080fd5b600160a060020a0380841660008181526006602090815260408083209487168084529482528083208684528252808320549383526007825280832094835293815283822085835290529190912054611a979190613706565b600160a060020a038085166000818152600660209081526040808320948816808452948252808320878452825280832095909555828252600781528482208483528152848220868352815284822082905582825260088152848220848352815284822086835290528381205590917f1c6434ded5c8badcab3e8bb92e5cc66d78f4d88ff5e81846bd329f2f81d0d2749084905190815260200160405180910390a3505050565b600160a060020a033316600090815260016020526040812054819060ff161515611b6657600080fd5b8351855114611b7457600080fd5b5060009050805b8451811015611c545760096000868381518110611b9457fe5b90602001906020020151600160a060020a0316600160a060020a03168152602001908152602001600020600084815260200190815260200160002054848281518110611bdc57fe5b906020019060200201511015611bf157600080fd5b838181518110611bfd57fe5b9060200190602002015160096000878481518110611c1757fe5b90602001906020020151600160a060020a031681526020808201929092526040908101600090812087825290925290205560019182019101611b7b565b7feeea1444156f4442f9b8876353b17a5efc18632b2d1e773930c1a3303d5cba9e828460405191825260208201526040908101905180910390a15050505050565b600e5460009060ff161515611ca957600080fd5b82518451148015611cbc575060c8845111155b1515611cc757600080fd5b5060005b8351811015610ff357611d1f858281518110611ce357fe5b90602001906020020151858381518110611cf957fe5b90602001906020020151858481518110611d0f57fe5b9060200190602002015185611857565b600101611ccb565b60005433600160a060020a03908116911614611d4257600080fd5b600c805461ff001916610100179055565b600054600160a060020a031681565b60005433600160a060020a03908116911614611d7d57600080fd5b600c805460ff1916911515919091179055565b60005433600160a060020a03908116911614611dab57600080fd5b62093a80811115611dbb57600080fd5b600a55565b600b5481565b600160a060020a0383161515611ddb57600080fd5b600160a060020a03808416600090815260036020908152604080832033909416835292815282822084835290522054611e149083613706565b600160a060020a03808516600081815260036020908152604080832033958616845282528083208784529091528082209490945590926323b872dd92913091879190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611eaa57600080fd5b6102c65a03f11515611ebb57600080fd5b505050604051805190501515611ed057600080fd5b600160a060020a0383811660008181526003602090815260408083203390951680845294825280832086845290915290819020547f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69186919086905180848152602001838152602001828152602001935050505060405180910390a3505050565b60005433600160a060020a03908116911614611f6c57600080fd5b600160a060020a0382161515611f8157600080fd5b600160a060020a03919091166000908152600260205260409020805460ff1916911515919091179055565b60005433600160a060020a03908116911614611fc757600080fd5b600e805460ff1916911515919091179055565b600e5462010000900460ff161515611ff157600080fd5b600160a060020a0380851660009081526003602090815260408083203390941683529281528282208583529052205483111561202c57600080fd5b600160a060020a0380851660009081526003602090815260408083203390941683529281528282208583529052205461206590846136f4565b600160a060020a0385811660009081526003602090815260408083203390941683529281528282208683529052818120929092558282529020546120a99084613706565b600160a060020a03808616600081815260036020908152604080832033909516808452948252808320878452909152908190209390935590917fbb69f2324604d3dc028e651782c9bc2152cb34213ecb64bb5c2312ab3dabf696908690869086905180848152602001838152602001828152602001935050505060405180910390a350505050565b6121396144dc565b6121416144dc565b600160a060020a03331660009081526001602052604081205460ff16151561216857600080fd5b610140880151600160a060020a03811660009081526002602052604090205460ff16151561219557600080fd5b600c54610100900460ff16156121aa57600080fd5b6101c0604051908101604052808a51600160a060020a0316815260200160408b0151600160a060020a031681526020018951815260200160408a0151815260200160808b0151600160a060020a0316815260200160808a0151815260200160c08a015181526020016101008a015181526000602082015260400160c08b0151600160a060020a031681526020016101008b0151600160a060020a031681526020016101608b0151600160a060020a031681526020016101608a015181526020016101a08a0151905293506101c06040519081016040528060208b0151600160a060020a0316815260200160608b0151600160a060020a031681526020018960016020020151815260200160608a0151815260200160a08b0151600160a060020a0316815260200160a08a0151815260200160e08a015181526020016101208a015181526000602082015260400160e08b0151600160a060020a031681526020016101208b0151600160a060020a031681526020016101808b0151600160a060020a031681526020016101808a015181526020016101c08a0151905292506101408801519150438460c00151101580156123675750438360c0015110155b151561237257600080fd5b600960008560800151600160a060020a0316600160a060020a031681526020019081526020016000206000856101a001518152602001908152602001600020548460e00151101580156124085750600960008460800151600160a060020a0316600160a060020a031681526020019081526020016000206000846101a001518152602001908152602001600020548360e0015110155b151561241357600080fd5b826101200151600160a060020a0316846101200151600160a060020a031614801561245457508260200151600160a060020a03168451600160a060020a0316145b801561247657508251600160a060020a03168460200151600160a060020a0316145b151561248157600080fd5b8251600160a060020a0316836101200151600160a060020a031614806124c157508260200151600160a060020a0316836101200151600160a060020a0316145b15156124cc57600080fd5b61250784518560400151866020015187606001518861012001518960c001518a60e001518b61014001518c61016001518d6101a00151610ed0565b61010085015261254883518460400151856020015186606001518761012001518860c001518960e001518a61014001518b61016001518c6101a00151610ed0565b6101008401526080840151600160a060020a031660018561010001516040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c016040519081900390208951895189516040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561260357600080fd5b505060206040510351600160a060020a03161461261f57600080fd5b8260800151600160a060020a031660018461010001516040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0160405190819003902060208a015160208a015160208a01516040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156126dd57600080fd5b505060206040510351600160a060020a0316146126f957600080fd5b61270a84846101408c01518561371c565b8260800151600160a060020a03168460800151600160a060020a03167f01f5d7c359dba416997ea6c723ea4663e9ad524f956ed8bb3b5234e6475a7285848760a001518760a001518960e001518960e00151604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390a3505050505050505050565b600160a060020a03331660009081526001602052604081205460ff1615156127bf57600080fd5b5060005b855181101561284a576128428682815181106127db57fe5b906020019060200201518683815181106127f157fe5b9060200190602002015186848151811061280757fe5b9060200190602002015186858151811061281d57fe5b9060200190602002015186868151811061283357fe5b90602001906020020151612131565b6001016127c3565b505050505050565b60005433600160a060020a0390811691161461286d57600080fd5b600a81101561287b57600080fd5b600b55565b600960209081526000928352604080842090915290825290205481565b60005433600160a060020a039081169116146128b857600080fd5b600e8054911515620100000262ff000019909216919091179055565b600160a060020a0380841660009081526003602090815260408083203390941683529281528282208483529052205482111561290f57600080fd5b600160a060020a03808416600090815260066020908152604080832033909416835292815282822084835290522054821115612a7257600160a060020a03808416600090815260086020908152604080832033909416835292815282822084835290522054158015906129bc5750600a54600160a060020a038085166000908152600860209081526040808320339094168352928152828220858352905220546129ba9042906136f4565b115b15156129c757600080fd5b600160a060020a038084166000818152600660209081526040808320339095168084529482528083208684528252808320549383526007825280832094835293815283822085835290529190912054612a209190613706565b600160a060020a03808516600081815260066020908152604080832033909516808452948252808320878452825280832095909555918152600782528381209281529181528282208483529052908120555b600160a060020a03808416600090815260066020908152604080832033909416835292815282822084835290522054821115612aad57600080fd5b600160a060020a03808416600090815260066020908152604080832033909416835292815282822084835290522054612ae690836136f4565b600160a060020a038085166000818152600660209081526040808320339095168084529482528083208784528252808320959095559181526003825283812092815291815282822084835290522054612b3f90836136f4565b600160a060020a038085166000818152600360209081526040808320339095168084529482528083208784528252808320959095558282526008815284822093825292835283812085825290925291812055151561111c57600160a060020a03331682156108fc0283604051600060405180830381858888f19350505050151561111757600080fd5b33600160a060020a0316600090815260008051602061459d83398151915260209081526040808320848452909152902054612c039034613706565b600160a060020a033316600081815260008051602061459d83398151915260209081526040808320868452909152808220849055919290917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f691349186905180848152602001838152602001828152602001935050505060405180910390a350565b600e54600090610100900460ff161515612c9e57600080fd5b82518451148015612cb1575060c8845111155b1515612cbc57600080fd5b5060005b8351811015610ff357612d14858281518110612cd857fe5b90602001906020020151858381518110612cee57fe5b90602001906020020151858481518110612d0457fe5b906020019060200201518561155a565b600101612cc0565b600860209081526000938452604080852082529284528284209052825290205481565b60026020526000908152604090205460ff1681565b600660209081526000938452604080852082529284528284209052825290205481565b600160a060020a0392831660009081526003602090815260408083209490951682529283528381209181529152205490565b60005433600160a060020a03908116911614612dc457600080fd5b600e80549115156101000261ff0019909216919091179055565b600a5481565b60005433600160a060020a03908116911614612dff57600080fd5b600160a060020a0381161515612e1457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b612e87614550565b600160a060020a03331660009081526001602052604081205460ff161515612eae57600080fd5b6040870151600160a060020a03811660009081526002602052604090205460ff161515612eda57600080fd5b610120604051908101604052808951600160a060020a031681526020018960016020020151600160a060020a0316815260200160408a0151600160a060020a0316815260200160608a0151600160a060020a0316815260200188518152602001886001602002015181526020016040890151815260200160608901518152602001608089015190529250600360006020850151600160a060020a0316600160a060020a0316815260200190815260200160002060008460000151600160a060020a0316600160a060020a03168152602001908152602001600020600084610100015181526020019081526020016000205483608001511115612fdb57600080fd5b612fed83608001518460c00151613f15565b60c084015261300460808401518460e00151613f15565b60e0840152308351846020015185608001518660a0015187606001518861010001516040516c01000000000000000000000000600160a060020a03988916810282529688168702601482015294871686026028860152603c850193909352605c840191909152909316909102607c820152609081019190915260b00160405190819003902060008181526005602052604090205490925060ff16156130a857600080fd5b6000828152600560205260409020805460ff191660011790558251600160a060020a03166001836040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0160405180910390208888886040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561316a57600080fd5b505060206040510351600160a060020a03161461318657600080fd5b6131fa600360008560200151600160a060020a0316600160a060020a0316815260200190815260200160002060008560000151600160a060020a0316600160a060020a03168152602001908152602001600020600085610100015181526020019081526020016000205484608001516136f4565b600360008560200151600160a060020a0316600160a060020a0316815260200190815260200160002060008560000151600160a060020a0316600160a060020a0316815260200190815260200160002060008561010001518152602001908152602001600020819055506132d5600360008560200151600160a060020a0316600160a060020a0316815260200190815260200160002060008560400151600160a060020a0316600160a060020a031681526020019081526020016000206000600d548152602001908152602001600020548460c00151613706565b600360008560200151600160a060020a0316600160a060020a0316815260200190815260200160002060008560400151600160a060020a0316600160a060020a031681526020019081526020016000206000600d548152602001908152602001600020819055506133b0600360008560200151600160a060020a0316600160a060020a0316815260200190815260200160002060008560600151600160a060020a0316600160a060020a0316815260200190815260200160002060008561010001518152602001908152602001600020548460e00151613706565b600360008560200151600160a060020a0316600160a060020a0316815260200190815260200160002060008560600151600160a060020a0316600160a060020a031681526020019081526020016000206000856101000151815260208101919091526040016000205561342b60808401518460c001516136f4565b6080840190815261344190518460e001516136f4565b60808401526020830151600160a060020a03161515613497578251600160a060020a03166108fc84608001519081150290604051600060405180830381858888f19350505050151561349257600080fd5b613523565b8260200151600160a060020a031663a9059cbb8451856080015160006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156134fd57600080fd5b6102c65a03f1151561350e57600080fd5b50505060405180519050151561352357600080fd5b8251600160a060020a03168360200151600160a060020a03167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8560800151600360008860200151600160a060020a0316600160a060020a0316815260200190815260200160002060008860000151600160a060020a0316600160a060020a03168152602001908152602001600020600088610100015181526020019081526020016000205487610100015160405180848152602001838152602001828152602001935050505060405180910390a35050505050505050565b600e5460ff16151561360d57600080fd5b600160a060020a038216158015906136255750600034115b151561363057600080fd5b600160a060020a038216600090815260008051602061459d8339815191526020908152604080832084845290915290205461366b9034613706565b600160a060020a03838116600081815260008051602061459d833981519152602090815260408083208784529091528082208590559193339093169290917fb8549480a740327017d760034cf7d1b112890eb0948c99dbd7da38738096f75991349187905180848152602001838152602001828152602001935050505060405180910390a45050565b60008183101561370057fe5b50900390565b60008282018381101561371557fe5b9392505050565b60008060008061373488604001518860400151613f44565b61374689606001518960600151613f44565b101561375157600080fd5b600093508392508651600160a060020a0316876101200151600160a060020a03161415613987576137c78860400151600460008b60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008b610100015181526020810191909152604001600020546136f4565b91506138188760600151600460008a60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008a610100015181526020810191909152604001600020546136f4565b905060008511801561382a5750818511155b80156138365750808511155b151561384157600080fd5b8492508760400151613857896060015185613f44565b81151561386057fe5b0493506138ae600460008960800151600160a060020a0316600160a060020a031681526020019081526020016000206000896101000151815260208101919091526040016000205484613706565b600460008960800151600160a060020a0316600160a060020a031681526020019081526020016000206000896101000151815260208101919091526040016000908120919091556139409060049060808b0151600160a060020a0316600160a060020a0316815260200190815260200160002060008a6101000151815260208101919091526040016000205484613706565b600460008a60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008a61010001518152602081019190915260400160002055613b92565b6139d68760400151600460008a60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008a610100015181526020810191909152604001600020546136f4565b9050613a278860600151600460008b60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008b610100015181526020810191909152604001600020546136f4565b9150600085118015613a395750818511155b8015613a455750808511155b1515613a5057600080fd5b8493508760600151613a66896040015186613f44565b811515613a6f57fe5b049250613abd600460008960800151600160a060020a0316600160a060020a031681526020019081526020016000206000896101000151815260208101919091526040016000205485613706565b600460008960800151600160a060020a0316600160a060020a03168152602001908152602001600020600089610100015181526020810191909152604001600090812091909155613b4f9060049060808b0151600160a060020a0316600160a060020a0316815260200190815260200160002060008a6101000151815260208101919091526040016000205485613706565b600460008a60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008a610100015181526020810191909152604001600020555b613c02600360008960200151600160a060020a0316600160a060020a0316815260200190815260200160002060008960800151600160a060020a0316600160a060020a031681526020019081526020016000206000896101a00151815260200190815260200160002054846136f4565b600360008960200151600160a060020a0316600160a060020a0316815260200190815260200160002060008960800151600160a060020a0316600160a060020a031681526020019081526020016000206000896101a00151815260200190815260200160002081905550613cdc600360008960000151600160a060020a0316600160a060020a0316815260200190815260200160002060008960800151600160a060020a0316600160a060020a031681526020019081526020016000206000896101a0015181526020019081526020016000205485613706565b600360008951600160a060020a0316600160a060020a0316815260200190815260200160002060008960800151600160a060020a0316600160a060020a031681526020019081526020016000206000896101a00151815260200190815260200160002081905550613db3600360008a60200151600160a060020a0316600160a060020a0316815260200190815260200160002060008a60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008a6101a00151815260200190815260200160002054856136f4565b600360008a60200151600160a060020a0316600160a060020a0316815260200190815260200160002060008a60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008a6101a00151815260200190815260200160002081905550613e8d600360008a60000151600160a060020a0316600160a060020a0316815260200190815260200160002060008a60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008a6101a0015181526020019081526020016000205484613706565b600360008a51600160a060020a0316600160a060020a0316815260200190815260200160002060008a60800151600160a060020a0316600160a060020a0316815260200190815260200160002060008a6101a001518152602081019190915260400160002055613efe888785613f68565b50613f0a878786613f68565b505050505050505050565b60008082905083613f2884600b54613f44565b111561371557600b5484811515613f3b57fe5b04949350505050565b6000828202831580613f605750828482811515613f5d57fe5b04145b151561371557fe5b600080610140850151600160a060020a03161561425d57613f928560a00151866101800151613706565b905060036000866101400151600160a060020a0316600160a060020a0316815260200190815260200160002060008660800151600160a060020a0316600160a060020a031681526020019081526020016000206000866101a00151815260200190815260200160002054811115151561400a57600080fd5b61405760036000876101400151600160a060020a039081168252602080830193909352604091820160009081209189168152908352818120600d54825290925290205460a0870151613706565b60036000876101400151600160a060020a039081168252602080830193909352604091820160009081209189168152908352818120600d54825290925281209190915561411190600390610140880151600160a060020a0316600160a060020a031681526020019081526020016000206000876101600151600160a060020a0316600160a060020a031681526020019081526020016000206000876101a00151815260200190815260200160002054866101800151613706565b60036000876101400151600160a060020a0316600160a060020a031681526020019081526020016000206000876101600151600160a060020a0316600160a060020a031681526020019081526020016000206000876101a001518152602001908152602001600020819055506141ee60036000876101400151600160a060020a0316600160a060020a0316815260200190815260200160002060008760800151600160a060020a0316600160a060020a031681526020019081526020016000206000876101a00151815260200190815260200160002054826136f4565b60036000876101400151600160a060020a0316600160a060020a0316815260200190815260200160002060008760800151600160a060020a0316600160a060020a031681526020019081526020016000206000876101a0015181526020810191909152604001600020556144d4565b61426b838660a00151613f15565b60a086015261427f83610180870151613f15565b61018086015261429860a0860151866101800151613706565b90506142e3600360008751600160a060020a039081168252602080830193909352604091820160009081209189168152908352818120600d54825290925290205460a0870151613706565b600360008751600160a060020a039081168252602080830193909352604091820160009081209189168152908352818120600d548252909252812091909155614395906003908751600160a060020a0316600160a060020a031681526020019081526020016000206000876101600151600160a060020a0316600160a060020a031681526020019081526020016000206000876101a00151815260200190815260200160002054866101800151613706565b600360008751600160a060020a0316600160a060020a031681526020019081526020016000206000876101600151600160a060020a0316600160a060020a031681526020019081526020016000206000876101a0015181526020019081526020016000208190555061446d600360008760000151600160a060020a0316600160a060020a0316815260200190815260200160002060008760800151600160a060020a0316600160a060020a031681526020019081526020016000206000876101a00151815260200190815260200160002054826136f4565b600360008751600160a060020a0316600160a060020a0316815260200190815260200160002060008760800151600160a060020a0316600160a060020a031681526020019081526020016000206000876101a0015181526020810191909152604001600020555b509392505050565b6101c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082015290565b6101206040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e082018190526101008201529056003617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92effa165627a7a723058200d1225673238323992ca55afee13200a0daef9e7ac34865282ae9922677b1c6c0029

   Swarm Source:
bzzr://0d1225673238323992ca55afee13200a0daef9e7ac34865282ae9922677b1c6c

 

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.