Contract Overview
Balance: 3,943.49684999489947989 Ether
Transactions: 51 txns
Misc:
Contract Creator: 0x8fc577f07f7d765724e293a4f259d2a15c48fb8aat txn 0x80e7ced5d12034000037357e92191b079ba7c58e4cae660978e32f80092f9452
Token Balance:
 Latest 25 transactions from a total of 51 transactions

TxHash Age From To Value [TxFee]
0xfd2e9bfa293415f18e26b54a52575d7e5ab015e713d7cb788e9f65d5a6ac839346 days 3 mins ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.000367829
0xf9856746b155af45435efcc0a09ec9b7a2ac803665c69677ff8ecf89ec04734e53 days 23 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.000367829
0x1af35d02d581da3c146c799585a43f39c77a2dbc5e65d73b4b9d8b109c1013c353 days 23 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.00021483
0x217fda9ef9f17c7389ede9894080bda8ec368a6e01d6b55e2d7952cc4cf83d8d54 days 21 hrs ago0x6e4843e90ecacd3a3bbced74a5235363762d5100  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.001134775
0x56c4bc0e97f0730e1b368e1d9c83b0a30a174a76ab6ce9ea2e3ccd64a415412185 days 1 hr ago0x39ded5318c57909e0087b915c1cd0be563b05607  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.0007062
0x1739dbb1a506da1e5b3d0952e9fedce45a8f18ded2dfb03262fbd9b3551d26c585 days 1 hr ago0x39ded5318c57909e0087b915c1cd0be563b05607  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.00070818
0xc70164c148006e6dee5abce131e0a76640ccd527afbfdb5c3e6979c95141e56385 days 1 hr ago0x39ded5318c57909e0087b915c1cd0be563b05607  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.00075105
0x587642fb5f21efd34383d409a6af56a95c4568296acb0ba7ed1d644f2195dad285 days 1 hr ago0x39ded5318c57909e0087b915c1cd0be563b05607  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.00075105
0x10563dd2a61d370c5ded0eee941b89f49b034566aa56b80f02a1c26cdde4321e85 days 1 hr ago0x39ded5318c57909e0087b915c1cd0be563b05607  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.00075105
0x22f03adcdc5584a9876301aba1e9fc6269d86b18d16cb26befbd112d4cbd37f892 days 19 hrs ago0x6e4843e90ecacd3a3bbced74a5235363762d5100  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.00001953
0xf708bb2840f4f6730498fa871d8ce41e842a427482ab9c7d01b16c68c66c0d9f92 days 19 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.001087848
0xa2fdb81468133490728f5b959fbe3b2f2d859db6c459650be665078da25f9bd2184 days 23 hrs ago0x778599dd7893c8166d313f0f9b5f6cbf7536c293  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0.5 Ether0.022484
0xea147093316f027cbc3282f330175511ed590ee3b414c1cdda3374884c40abca184 days 23 hrs ago0x778599dd7893c8166d313f0f9b5f6cbf7536c293  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0.2 Ether0.0000022484
0xed8305be659ef1e970e5f8b90e387ac88a75142aba49bb710b7c3e4aa110aa61199 days 3 hrs ago0xbfc103a3dc21dd917540660c8fa5c20f57a44cc9  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0.5 Ether0.00044968
0x847552e916d9ed273485c1d2376f748d24d64112b8011ff9c8e52301fcf19b81222 days 22 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.002668418
0x16368d2b29896cae04a51426bcd621c8735f0bc1ac6dfede3da24a32e9d6e4c2240 days 15 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.002108911
0x7acfee31a85ff0eb32c19891cb330d90afd7853277219259aed82df01be22da4241 days 16 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.002108911
0x80a5c492cd5193fcc24d6ea6819d75f28ea9cf9d47a3ad830627db2d8f5f9914241 days 17 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.002108911
0x0d2898e465738e4272f6f8f6ffe4d1b2578447141139839afafd5de032ca7255243 days 1 hr ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.002004835
0x3b3e55b30a7dedf97dc6566ba1d198d9a25d8154ef0ebf7097b2c0332d0dbd0a243 days 1 hr ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.000910875
0x40e57596e911d8e8425d72e687bc59cf0f8e659121815eb39dcb857a5f97b444254 days 4 hrs ago0x76ea764cb4d385866f824b6a57cdd714f825ed43  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.00021704
0xca4b26af20ba7e0285f7fe0c5a7d82e344f11b6992560a98ce1e6a9dcb28bd0a272 days 22 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a50 Ether0.000876876
0x1ff2d0df3df42e662574b8a3bb474e867bb0d34d889f97f87c73c89b544724dd273 days 12 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a5 Ether0.000876876
0xe1dbc2326b0c8c5673a10ec569539f341e96e61947bc701b2864b2003487db93273 days 12 hrs ago0x1be6064ca70e40a39473372be0ac8a5e16f7be45  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a5 Ether0.000819039
0xf0a803407eb8e24252cff6a97fabb54ac7c5381b9c171c25266b8bce5e32fdd5273 days 12 hrs ago0x8fc577f07f7d765724e293a4f259d2a15c48fb8a  IN   0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether0.00127412
[ 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
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x817f45d0ca523b7f80a8b1017ba63fbd9557127a097d7cd3efbd42832583dbc8502704810 hrs 13 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0 Ether
0x4dc8958d7494c9a9032b812f0b05e283624df17c08b396fcbcbfcef2c072f04e502495918 hrs 3 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0x72fd6c7c1397040a66f33c2ecc83a0f71ee46d5c0 Ether
0x4dc8958d7494c9a9032b812f0b05e283624df17c08b396fcbcbfcef2c072f04e502495918 hrs 3 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 Ether
0x4dc8958d7494c9a9032b812f0b05e283624df17c08b396fcbcbfcef2c072f04e502495918 hrs 3 mins ago0x3f9a8e219ab1ad42f96b22c294e564b2b48fe6360xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0.9985 Ether
0x4dc8958d7494c9a9032b812f0b05e283624df17c08b396fcbcbfcef2c072f04e502495918 hrs 3 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0x72fd6c7c1397040a66f33c2ecc83a0f71ee46d5c0 Ether
0x4dc8958d7494c9a9032b812f0b05e283624df17c08b396fcbcbfcef2c072f04e502495918 hrs 3 mins ago0xeb52ce516a8d054a574905bdc3d4a176d3a2d51a0xe16e257a25e287af50c5651a4c2728b32d7e5ef70 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: This contract matches the deployed ByteCode of the Verified Source Code for Contract 0xC97094dCeD8B43bE3D275e725f41E63ebA2D4Cb6
Contract Name: KyberReserve
Compiler Version: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.18;

contract Utils {

    ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);
    uint  constant internal PRECISION = (10**18);
    uint  constant internal MAX_QTY   = (10**28); // 10B tokens
    uint  constant internal MAX_RATE  = (PRECISION * 10**6); // up to 1M tokens per ETH
    uint  constant internal MAX_DECIMALS = 18;
    uint  constant internal ETH_DECIMALS = 18;
    mapping(address=>uint) internal decimals;

    function setDecimals(ERC20 token) internal {
        if (token == ETH_TOKEN_ADDRESS) decimals[token] = ETH_DECIMALS;
        else decimals[token] = token.decimals();
    }

    function getDecimals(ERC20 token) internal view returns(uint) {
        if (token == ETH_TOKEN_ADDRESS) return ETH_DECIMALS; // save storage access
        uint tokenDecimals = decimals[token];
        // technically, there might be token with decimals 0
        // moreover, very possible that old tokens have decimals 0
        // these tokens will just have higher gas fees.
        if(tokenDecimals == 0) return token.decimals();

        return tokenDecimals;
    }

    function calcDstQty(uint srcQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
        require(srcQty <= MAX_QTY);
        require(rate <= MAX_RATE);

        if (dstDecimals >= srcDecimals) {
            require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
            return (srcQty * rate * (10**(dstDecimals - srcDecimals))) / PRECISION;
        } else {
            require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
            return (srcQty * rate) / (PRECISION * (10**(srcDecimals - dstDecimals)));
        }
    }

    function calcSrcQty(uint dstQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
        require(dstQty <= MAX_QTY);
        require(rate <= MAX_RATE);

        //source quantity is rounded up. to avoid dest quantity being too low.
        uint numerator;
        uint denominator;
        if (srcDecimals >= dstDecimals) {
            require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
            numerator = (PRECISION * dstQty * (10**(srcDecimals - dstDecimals)));
            denominator = rate;
        } else {
            require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
            numerator = (PRECISION * dstQty);
            denominator = (rate * (10**(dstDecimals - srcDecimals)));
        }
        return (numerator + denominator - 1) / denominator; //avoid rounding down errors
    }
}

contract PermissionGroups {

    address public admin;
    address public pendingAdmin;
    mapping(address=>bool) internal operators;
    mapping(address=>bool) internal alerters;
    address[] internal operatorsGroup;
    address[] internal alertersGroup;
    uint constant internal MAX_GROUP_SIZE = 50;

    function PermissionGroups() public {
        admin = msg.sender;
    }

    modifier onlyAdmin() {
        require(msg.sender == admin);
        _;
    }

    modifier onlyOperator() {
        require(operators[msg.sender]);
        _;
    }

    modifier onlyAlerter() {
        require(alerters[msg.sender]);
        _;
    }

    function getOperators () external view returns(address[]) {
        return operatorsGroup;
    }

    function getAlerters () external view returns(address[]) {
        return alertersGroup;
    }

    event TransferAdminPending(address pendingAdmin);

    /**
     * @dev Allows the current admin to set the pendingAdmin address.
     * @param newAdmin The address to transfer ownership to.
     */
    function transferAdmin(address newAdmin) public onlyAdmin {
        require(newAdmin != address(0));
        TransferAdminPending(pendingAdmin);
        pendingAdmin = newAdmin;
    }

    /**
     * @dev Allows the current admin to set the admin in one tx. Useful initial deployment.
     * @param newAdmin The address to transfer ownership to.
     */
    function transferAdminQuickly(address newAdmin) public onlyAdmin {
        require(newAdmin != address(0));
        TransferAdminPending(newAdmin);
        AdminClaimed(newAdmin, admin);
        admin = newAdmin;
    }

    event AdminClaimed( address newAdmin, address previousAdmin);

    /**
     * @dev Allows the pendingAdmin address to finalize the change admin process.
     */
    function claimAdmin() public {
        require(pendingAdmin == msg.sender);
        AdminClaimed(pendingAdmin, admin);
        admin = pendingAdmin;
        pendingAdmin = address(0);
    }

    event AlerterAdded (address newAlerter, bool isAdd);

    function addAlerter(address newAlerter) public onlyAdmin {
        require(!alerters[newAlerter]); // prevent duplicates.
        require(alertersGroup.length < MAX_GROUP_SIZE);

        AlerterAdded(newAlerter, true);
        alerters[newAlerter] = true;
        alertersGroup.push(newAlerter);
    }

    function removeAlerter (address alerter) public onlyAdmin {
        require(alerters[alerter]);
        alerters[alerter] = false;

        for (uint i = 0; i < alertersGroup.length; ++i) {
            if (alertersGroup[i] == alerter) {
                alertersGroup[i] = alertersGroup[alertersGroup.length - 1];
                alertersGroup.length--;
                AlerterAdded(alerter, false);
                break;
            }
        }
    }

    event OperatorAdded(address newOperator, bool isAdd);

    function addOperator(address newOperator) public onlyAdmin {
        require(!operators[newOperator]); // prevent duplicates.
        require(operatorsGroup.length < MAX_GROUP_SIZE);

        OperatorAdded(newOperator, true);
        operators[newOperator] = true;
        operatorsGroup.push(newOperator);
    }

    function removeOperator (address operator) public onlyAdmin {
        require(operators[operator]);
        operators[operator] = false;

        for (uint i = 0; i < operatorsGroup.length; ++i) {
            if (operatorsGroup[i] == operator) {
                operatorsGroup[i] = operatorsGroup[operatorsGroup.length - 1];
                operatorsGroup.length -= 1;
                OperatorAdded(operator, false);
                break;
            }
        }
    }
}

interface ConversionRatesInterface {

    function recordImbalance(
        ERC20 token,
        int buyAmount,
        uint rateUpdateBlock,
        uint currentBlock
    )
        public;

    function getRate(ERC20 token, uint currentBlockNumber, bool buy, uint qty) public view returns(uint);
}

interface ERC20 {
    function totalSupply() public view returns (uint supply);
    function balanceOf(address _owner) public view returns (uint balance);
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
    function allowance(address _owner, address _spender) public view returns (uint remaining);
    function decimals() public view returns(uint digits);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

interface KyberReserveInterface {

    function trade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        public
        payable
        returns(bool);

    function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint);
}

interface SanityRatesInterface {
    function getSanityRate(ERC20 src, ERC20 dest) public view returns(uint);
}

contract Withdrawable is PermissionGroups {

    event TokenWithdraw(ERC20 token, uint amount, address sendTo);

    /**
     * @dev Withdraw all ERC20 compatible tokens
     * @param token ERC20 The address of the token contract
     */
    function withdrawToken(ERC20 token, uint amount, address sendTo) external onlyAdmin {
        require(token.transfer(sendTo, amount));
        TokenWithdraw(token, amount, sendTo);
    }

    event EtherWithdraw(uint amount, address sendTo);

    /**
     * @dev Withdraw Ethers
     */
    function withdrawEther(uint amount, address sendTo) external onlyAdmin {
        sendTo.transfer(amount);
        EtherWithdraw(amount, sendTo);
    }
}

contract KyberReserve is KyberReserveInterface, Withdrawable, Utils {

    address public kyberNetwork;
    bool public tradeEnabled;
    ConversionRatesInterface public conversionRatesContract;
    SanityRatesInterface public sanityRatesContract;
    mapping(bytes32=>bool) public approvedWithdrawAddresses; // sha3(token,address)=>bool

    function KyberReserve(address _kyberNetwork, ConversionRatesInterface _ratesContract, address _admin) public {
        require(_admin != address(0));
        require(_ratesContract != address(0));
        require(_kyberNetwork != address(0));
        kyberNetwork = _kyberNetwork;
        conversionRatesContract = _ratesContract;
        admin = _admin;
        tradeEnabled = true;
    }

    event DepositToken(ERC20 token, uint amount);

    function() public payable {
        DepositToken(ETH_TOKEN_ADDRESS, msg.value);
    }

    event TradeExecute(
        address indexed origin,
        address src,
        uint srcAmount,
        address destToken,
        uint destAmount,
        address destAddress
    );

    function trade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        public
        payable
        returns(bool)
    {
        require(tradeEnabled);
        require(msg.sender == kyberNetwork);

        require(doTrade(srcToken, srcAmount, destToken, destAddress, conversionRate, validate));

        return true;
    }

    event TradeEnabled(bool enable);

    function enableTrade() public onlyAdmin returns(bool) {
        tradeEnabled = true;
        TradeEnabled(true);

        return true;
    }

    function disableTrade() public onlyAlerter returns(bool) {
        tradeEnabled = false;
        TradeEnabled(false);

        return true;
    }

    event WithdrawAddressApproved(ERC20 token, address addr, bool approve);

    function approveWithdrawAddress(ERC20 token, address addr, bool approve) public onlyAdmin {
        approvedWithdrawAddresses[keccak256(token, addr)] = approve;
        WithdrawAddressApproved(token, addr, approve);

        setDecimals(token);
    }

    event WithdrawFunds(ERC20 token, uint amount, address destination);

    function withdraw(ERC20 token, uint amount, address destination) public onlyOperator returns(bool) {
        require(approvedWithdrawAddresses[keccak256(token, destination)]);

        if (token == ETH_TOKEN_ADDRESS) {
            destination.transfer(amount);
        } else {
            require(token.transfer(destination, amount));
        }

        WithdrawFunds(token, amount, destination);

        return true;
    }

    event SetContractAddresses(address network, address rate, address sanity);

    function setContracts(address _kyberNetwork, ConversionRatesInterface _conversionRates, SanityRatesInterface _sanityRates)
        public
        onlyAdmin
    {
        require(_kyberNetwork != address(0));
        require(_conversionRates != address(0));

        kyberNetwork = _kyberNetwork;
        conversionRatesContract = _conversionRates;
        sanityRatesContract = _sanityRates;

        SetContractAddresses(kyberNetwork, conversionRatesContract, sanityRatesContract);
    }

    ////////////////////////////////////////////////////////////////////////////
    /// status functions ///////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////
    function getBalance(ERC20 token) public view returns(uint) {
        if (token == ETH_TOKEN_ADDRESS)
            return this.balance;
        else
            return token.balanceOf(this);
    }

    function getDestQty(ERC20 src, ERC20 dest, uint srcQty, uint rate) public view returns(uint) {
        uint dstDecimals = getDecimals(dest);
        uint srcDecimals = getDecimals(src);

        return calcDstQty(srcQty, srcDecimals, dstDecimals, rate);
    }

    function getSrcQty(ERC20 src, ERC20 dest, uint dstQty, uint rate) public view returns(uint) {
        uint dstDecimals = getDecimals(dest);
        uint srcDecimals = getDecimals(src);

        return calcSrcQty(dstQty, srcDecimals, dstDecimals, rate);
    }

    function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint) {
        ERC20 token;
        bool  buy;

        if (!tradeEnabled) return 0;

        if (ETH_TOKEN_ADDRESS == src) {
            buy = true;
            token = dest;
        } else if (ETH_TOKEN_ADDRESS == dest) {
            buy = false;
            token = src;
        } else {
            return 0; // pair is not listed
        }

        uint rate = conversionRatesContract.getRate(token, blockNumber, buy, srcQty);
        uint destQty = getDestQty(src, dest, srcQty, rate);

        if (getBalance(dest) < destQty) return 0;

        if (sanityRatesContract != address(0)) {
            uint sanityRate = sanityRatesContract.getSanityRate(src, dest);
            if (rate > sanityRate) return 0;
        }

        return rate;
    }

    /// @dev do a trade
    /// @param srcToken Src token
    /// @param srcAmount Amount of src token
    /// @param destToken Destination token
    /// @param destAddress Destination address to send tokens to
    /// @param validate If true, additional validations are applicable
    /// @return true iff trade is successful
    function doTrade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        internal
        returns(bool)
    {
        // can skip validation if done at kyber network level
        if (validate) {
            require(conversionRate > 0);
            if (srcToken == ETH_TOKEN_ADDRESS)
                require(msg.value == srcAmount);
            else
                require(msg.value == 0);
        }

        uint destAmount = getDestQty(srcToken, destToken, srcAmount, conversionRate);
        // sanity check
        require(destAmount > 0);

        // add to imbalance
        ERC20 token;
        int buy;
        if (srcToken == ETH_TOKEN_ADDRESS) {
            buy = int(destAmount);
            token = destToken;
        } else {
            buy = -1 * int(srcAmount);
            token = srcToken;
        }

        conversionRatesContract.recordImbalance(
            token,
            buy,
            0,
            block.number
        );

        // collect src tokens
        if (srcToken != ETH_TOKEN_ADDRESS) {
            require(srcToken.transferFrom(msg.sender, this, srcAmount));
        }

        // send dest tokens
        if (destToken == ETH_TOKEN_ADDRESS) {
            destAddress.transfer(destAmount);
        } else {
            require(destToken.transfer(destAddress, destAmount));
        }

        TradeExecute(msg.sender, srcToken, srcAmount, destToken, destAmount, destAddress);

        return true;
    }
}

    Contract ABI  
[{"constant":false,"inputs":[],"name":"enableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sanityRatesContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"addr","type":"address"},{"name":"approve","type":"bool"}],"name":"approveWithdrawAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"destination","type":"address"}],"name":"withdraw","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"srcToken","type":"address"},{"name":"srcAmount","type":"uint256"},{"name":"destToken","type":"address"},{"name":"destAddress","type":"address"},{"name":"conversionRate","type":"uint256"},{"name":"validate","type":"bool"}],"name":"trade","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"blockNumber","type":"uint256"}],"name":"getConversionRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"dstQty","type":"uint256"},{"name":"rate","type":"uint256"}],"name":"getSrcQty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_conversionRates","type":"address"},{"name":"_sanityRates","type":"address"}],"name":"setContracts","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"conversionRatesContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"approvedWithdrawAddresses","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"rate","type":"uint256"}],"name":"getDestQty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_kyberNetwork","type":"address"},{"name":"_ratesContract","type":"address"},{"name":"_admin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DepositToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"origin","type":"address"},{"indexed":false,"name":"src","type":"address"},{"indexed":false,"name":"srcAmount","type":"uint256"},{"indexed":false,"name":"destToken","type":"address"},{"indexed":false,"name":"destAmount","type":"uint256"},{"indexed":false,"name":"destAddress","type":"address"}],"name":"TradeExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enable","type":"bool"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"approve","type":"bool"}],"name":"WithdrawAddressApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"destination","type":"address"}],"name":"WithdrawFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"network","type":"address"},{"indexed":false,"name":"rate","type":"address"},{"indexed":false,"name":"sanity","type":"address"}],"name":"SetContractAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAdmin","type":"address"},{"indexed":false,"name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAlerter","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b604051606080611e6483398101604052808051919060200180519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061006357600080fd5b600160a060020a038216151561007857600080fd5b600160a060020a038316151561008d57600080fd5b6007805460088054600160a060020a03958616600160a060020a031991821617909155600080549486169482169490941790935560a060020a60ff02199390941691909316171674010000000000000000000000000000000000000000179055611d68806100fc6000396000f30060606040526004361061014f5763ffffffff60e060020a60003504166299d38681146101a357806301a12fd3146101ca57806326782247146101eb57806327a099d81461021a5780633ccdbb2814610280578063408ee7fe146102a957806347e6924f146102c8578063546dc71c146102db57806369328dec146103055780636940030f1461032e5780636cf698111461034157806375829def1461036d57806377f50f971461038c5780637acc86781461039f5780637c423f54146103be5780637cd44272146103d15780639870d7fe1461040e578063a7fca9531461042d578063ac8a584a14610458578063b3066d4914610477578063b78b842d146104a2578063ce56c454146104b5578063d5847d33146104d7578063d621e813146104ea578063d7b7024d146104fd578063f851a44014610513578063f8b2cb4f14610526578063fa64dffa14610545575b7f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f600080516020611d1d83398151915234604051600160a060020a03909216825260208201526040908101905180910390a1005b34156101ae57600080fd5b6101b6610570565b604051901515815260200160405180910390f35b34156101d557600080fd5b6101e9600160a060020a03600435166105fe565b005b34156101f657600080fd5b6101fe61076e565b604051600160a060020a03909116815260200160405180910390f35b341561022557600080fd5b61022d61077d565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561026c578082015183820152602001610254565b505050509050019250505060405180910390f35b341561028b57600080fd5b6101e9600160a060020a0360043581169060243590604435166107e5565b34156102b457600080fd5b6101e9600160a060020a03600435166108dc565b34156102d357600080fd5b6101fe6109d8565b34156102e657600080fd5b6101e9600160a060020a036004358116906024351660443515156109e7565b341561031057600080fd5b6101b6600160a060020a036004358116906024359060443516610ac6565b341561033957600080fd5b6101b6610c7e565b6101b6600160a060020a03600435811690602435906044358116906064351660843560a4351515610cff565b341561037857600080fd5b6101e9600160a060020a0360043516610d6c565b341561039757600080fd5b6101e9610e07565b34156103aa57600080fd5b6101e9600160a060020a0360043516610ea1565b34156103c957600080fd5b61022d610f83565b34156103dc57600080fd5b6103fc600160a060020a0360043581169060243516604435606435610fe9565b60405190815260200160405180910390f35b341561041957600080fd5b6101e9600160a060020a03600435166111d4565b341561043857600080fd5b6103fc600160a060020a03600435811690602435166044356064356112a4565b341561046357600080fd5b6101e9600160a060020a03600435166112d6565b341561048257600080fd5b6101e9600160a060020a0360043581169060243581169060443516611442565b34156104ad57600080fd5b6101fe611526565b34156104c057600080fd5b6101e9600435600160a060020a0360243516611535565b34156104e257600080fd5b6101fe6115c8565b34156104f557600080fd5b6101b66115d7565b341561050857600080fd5b6101b66004356115f8565b341561051e57600080fd5b6101fe61160d565b341561053157600080fd5b6103fc600160a060020a036004351661161c565b341561055057600080fd5b6103fc600160a060020a03600435811690602435166044356064356116c7565b6000805433600160a060020a0390811691161461058c57600080fd5b6007805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461061a57600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561064157600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b60055481101561076a5781600160a060020a031660058281548110151561068657fe5b600091825260209091200154600160a060020a03161415610762576005805460001981019081106106b357fe5b60009182526020909120015460058054600160a060020a0390921691839081106106d957fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556005805490610715906000198301611cc8565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a161076a565b600101610663565b5050565b600154600160a060020a031681565b610785611cec565b60048054806020026020016040519081016040528092919081815260200182805480156107db57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116107bd575b5050505050905090565b60005433600160a060020a0390811691161461080057600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561085d57600080fd5b6102c65a03f1151561086e57600080fd5b50505060405180519050151561088357600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a039081169116146108f757600080fd5b600160a060020a03811660009081526003602052604090205460ff161561091d57600080fd5b6005546032901061092d57600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff1916600190811790915560058054909181016109ac8382611cc8565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600954600160a060020a031681565b60005433600160a060020a03908116911614610a0257600080fd5b80600a600085856040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040908101600020805460ff1916921515929092179091557fd5fd5351efae1f4bb760079da9f0ff9589e2c3e216337ca9d39cdff573b245c49084908490849051600160a060020a0393841681529190921660208201529015156040808301919091526060909101905180910390a1610ac1836116ee565b505050565b600160a060020a03331660009081526002602052604081205460ff161515610aed57600080fd5b600a600085846040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040016000205460ff161515610b4857600080fd5b600160a060020a038416600080516020611d1d8339815191521415610b9d57600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515610b9857600080fd5b610c20565b83600160a060020a031663a9059cbb838560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610bfa57600080fd5b6102c65a03f11515610c0b57600080fd5b505050604051805190501515610c2057600080fd5b7fb67719fc33c1f17d31bf3a698690d62066b1e0bae28fcd3c56cf2c015c2863d6848484604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a15060019392505050565b600160a060020a03331660009081526003602052604081205460ff161515610ca557600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60075460009074010000000000000000000000000000000000000000900460ff161515610d2b57600080fd5b60075433600160a060020a03908116911614610d4657600080fd5b610d548787878787876117ab565b1515610d5f57600080fd5b5060019695505050505050565b60005433600160a060020a03908116911614610d8757600080fd5b600160a060020a0381161515610d9c57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610e2257600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a03908116911614610ebc57600080fd5b600160a060020a0381161515610ed157600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b610f8b611cec565b60058054806020026020016040519081016040528092919081815260200182805480156107db57602002820191906000526020600020908154600160a060020a031681526001909101906020018083116107bd575050505050905090565b600080600080600080600760149054906101000a900460ff16151561101157600095506111c7565b600080516020611d1d833981519152600160a060020a038b16141561103c5760019350889450611070565b600080516020611d1d833981519152600160a060020a038a1614156110675760009350899450611070565b600095506111c7565b600854600160a060020a031663b8e9c22e8689878c60006040516020015260405160e060020a63ffffffff8716028152600160a060020a0390941660048501526024840192909252151560448301526064820152608401602060405180830381600087803b15156110e057600080fd5b6102c65a03f115156110f157600080fd5b5050506040518051905092506111098a8a8a866116c7565b9150816111158a61161c565b101561112457600095506111c7565b600954600160a060020a0316156111c357600954600160a060020a031663a58092b78b8b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561119657600080fd5b6102c65a03f115156111a757600080fd5b5050506040518051915050808311156111c357600095506111c7565b8295505b5050505050949350505050565b60005433600160a060020a039081169116146111ef57600080fd5b600160a060020a03811660009081526002602052604090205460ff161561121557600080fd5b6004546032901061122557600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff1916600190811790915560048054909181016109ac8382611cc8565b60008060006112b286611aca565b91506112bd87611aca565b90506112cb85828487611b88565b979650505050505050565b6000805433600160a060020a039081169116146112f257600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561131957600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b60045481101561076a5781600160a060020a031660048281548110151561135e57fe5b600091825260209091200154600160a060020a0316141561143a5760048054600019810190811061138b57fe5b60009182526020909120015460048054600160a060020a0390921691839081106113b157fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556004805460001901906113ed9082611cc8565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a161076a565b60010161133b565b60005433600160a060020a0390811691161461145d57600080fd5b600160a060020a038316151561147257600080fd5b600160a060020a038216151561148757600080fd5b60078054600160a060020a03808616600160a060020a0319928316179283905560088054868316908416179081905560098054868416941693909317928390557f7a85322644a4462d8ff5482d2a841a4d231f8cfb3c9f4a50f66f8b2bd568c31c938216929082169116604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461155057600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f19350505050151561158157600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600854600160a060020a031681565b60075474010000000000000000000000000000000000000000900460ff1681565b600a6020526000908152604090205460ff1681565b600054600160a060020a031681565b6000600160a060020a038216600080516020611d1d833981519152141561164e5750600160a060020a033016316116c2565b81600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156116a557600080fd5b6102c65a03f115156116b657600080fd5b50505060405180519150505b919050565b60008060006116d586611aca565b91506116e087611aca565b90506112cb85828487611c2f565b600160a060020a038116600080516020611d1d833981519152141561172e57600160a060020a0381166000908152600660205260409020601290556117a8565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561177457600080fd5b6102c65a03f1151561178557600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b60008060008084156117ff57600086116117c457600080fd5b600160a060020a038a16600080516020611d1d83398151915214156117f4573489146117ef57600080fd5b6117ff565b34156117ff57600080fd5b61180b8a898b896116c7565b92506000831161181a57600080fd5b600160a060020a038a16600080516020611d1d833981519152141561184357508690508161184d565b5088905060001988025b600854600160a060020a031663c6fd2103838360004360405160e060020a63ffffffff8716028152600160a060020a039094166004850152602484019290925260448301526064820152608401600060405180830381600087803b15156118b357600080fd5b6102c65a03f115156118c457600080fd5b505050600160a060020a038a16600080516020611d1d833981519152146119755789600160a060020a03166323b872dd33308c60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561194f57600080fd5b6102c65a03f1151561196057600080fd5b50505060405180519050151561197557600080fd5b600160a060020a038816600080516020611d1d83398151915214156119ca57600160a060020a03871683156108fc0284604051600060405180830381858888f1935050505015156119c557600080fd5b611a4d565b87600160a060020a031663a9059cbb888560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515611a2757600080fd5b6102c65a03f11515611a3857600080fd5b505050604051805190501515611a4d57600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b878c604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019998505050505050505050565b600080600160a060020a038316600080516020611d1d8339815191521415611af55760129150611b82565b50600160a060020a038216600090815260066020526040902054801515611b7e5782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b5c57600080fd5b6102c65a03f11515611b6d57600080fd5b505050604051805190509150611b82565b8091505b50919050565b600080806b204fce5e3e25026110000000871115611ba557600080fd5b69d3c21bcecceda1000000841115611bbc57600080fd5b848610611bed5760128587031115611bd357600080fd5b5050828403600a0a8502670de0b6b3a76400000282611c13565b60128686031115611bfd57600080fd5b5050670de0b6b3a76400008502848403600a0a83025b80600182840103811515611c2357fe5b04979650505050505050565b60006b204fce5e3e25026110000000851115611c4a57600080fd5b69d3c21bcecceda1000000821115611c6157600080fd5b838310611c945760128484031115611c7857600080fd5b670de0b6b3a7640000858302858503600a0a025b049050611cc0565b60128385031115611ca457600080fd5b828403600a0a670de0b6b3a764000002828602811515611c8c57fe5b949350505050565b815481835581811511610ac157600083815260209020610ac1918101908301611cfe565b60206040519081016040526000815290565b6105fb91905b80821115611d185760008155600101611d04565b50905600000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea165627a7a723058207694399fad3d193542e132b7c6621c3a63e22a08cad0e5837adcb11bd0f57e2c002900000000000000000000000020b2480ee5ef5d7be8aea4bc010bfaed9ec0bae3000000000000000000000000745daa7ee3ec03207f4b2c7ef557ff500972bf5f00000000000000000000000056b3d76539a2f3464e2f5b18dabb174fa013017f

   Swarm Source:
bzzr://7694399fad3d193542e132b7c6621c3a63e22a08cad0e5837adcb11bd0f57e2c

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward