ETH Price: $3,413.45 (+3.89%)

Contract

0x45eb33D008801d547990cAF3b63B4F8aE596EA57
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Ether116586352021-01-15 8:36:231408 days ago1610699783IN
Kyber: Reserve REN
0 ETH0.0024896477
Withdraw Token116586162021-01-15 8:31:571408 days ago1610699517IN
Kyber: Reserve REN
0 ETH0.0041700496
Disable Trade116585932021-01-15 8:26:521408 days ago1610699212IN
Kyber: Reserve REN
0 ETH0.0017037558
Enable Trade104237282020-07-09 6:33:261598 days ago1594276406IN
Kyber: Reserve REN
0 ETH0.0009599733
Disable Trade104236742020-07-09 6:21:041598 days ago1594275664IN
Kyber: Reserve REN
0 ETH0.00117540
Set Contracts104105822020-07-07 6:12:331600 days ago1594102353IN
Kyber: Reserve REN
0 ETH0.001391840
Enable Trade103279542020-06-24 10:34:191613 days ago1592994859IN
Kyber: Reserve REN
0 ETH0.0012799644
Disable Trade103277512020-06-24 9:51:191613 days ago1592992279IN
Kyber: Reserve REN
0 ETH0.0013218745
Enable Trade99211992020-04-22 8:30:201676 days ago1587544220IN
Kyber: Reserve REN
0 ETH0.000290910
Transfer99211802020-04-22 8:25:311676 days ago1587543931IN
Kyber: Reserve REN
50 ETH0.0002248410
Withdraw Token99211552020-04-22 8:16:531676 days ago1587543413IN
Kyber: Reserve REN
0 ETH0.0005842610
Disable Trade99211222020-04-22 8:08:461676 days ago1587542926IN
Kyber: Reserve REN
0 ETH0.0002937510
Set Contracts90377302019-12-02 11:04:001818 days ago1575284640IN
Kyber: Reserve REN
0 ETH0.0005162212
Set Contracts90136972019-11-28 5:01:521822 days ago1574917312IN
Kyber: Reserve REN
0 ETH0.0004739111
Set Contracts90090592019-11-27 9:17:131823 days ago1574846233IN
Kyber: Reserve REN
0 ETH0.000460310.7
Enable Trade80702512019-07-02 5:39:201971 days ago1562045960IN
Kyber: Reserve REN
0 ETH0.0003926414
Withdraw Ether80702202019-07-02 5:33:051971 days ago1562045585IN
Kyber: Reserve REN
0 ETH0.0005017315
Disable Trade80702162019-07-02 5:32:101971 days ago1562045530IN
Kyber: Reserve REN
0 ETH0.000255449
Set Contracts72092252019-02-12 2:51:142111 days ago1549939874IN
Kyber: Reserve REN
0 ETH0.0012924930
Set Contracts71383192019-01-28 8:44:172126 days ago1548665057IN
Kyber: Reserve REN
0 ETH0.0008659620.1
Transfer71381652019-01-28 8:06:212126 days ago1548662781IN
Kyber: Reserve REN
80 ETH0.001124250
Withdraw Token71381242019-01-28 7:55:272126 days ago1548662127IN
Kyber: Reserve REN
0 ETH0.0007059725
Withdraw Token71381232019-01-28 7:55:202126 days ago1548662120IN
Kyber: Reserve REN
0 ETH0.000055872
Withdraw Ether71381232019-01-28 7:55:202126 days ago1548662120IN
Kyber: Reserve REN
0 ETH0.000066512
Claim Admin71381232019-01-28 7:55:202126 days ago1548662120IN
Kyber: Reserve REN
0 ETH0.00004412
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
116586352021-01-15 8:36:231408 days ago1610699783
Kyber: Reserve REN
80.611945 ETH
116581032021-01-15 6:41:361408 days ago1610692896
Kyber: Reserve REN
6.88492628 ETH
116580692021-01-15 6:33:491408 days ago1610692429
Kyber: Reserve REN
4.52332045 ETH
116580332021-01-15 6:26:391408 days ago1610691999
Kyber: Reserve REN
3.77573413 ETH
116578282021-01-15 5:45:561408 days ago1610689556
Kyber: Reserve REN
4.22825725 ETH
116578002021-01-15 5:39:081408 days ago1610689148
Kyber: Reserve REN
4.05165776 ETH
116577882021-01-15 5:36:161408 days ago1610688976
Kyber: Reserve REN
3.69005955 ETH
116577562021-01-15 5:30:271408 days ago1610688627
Kyber: Reserve REN
3.89221784 ETH
116572252021-01-15 3:33:491408 days ago1610681629
Kyber: Reserve REN
4.55600823 ETH
116572172021-01-15 3:31:541408 days ago1610681514
Kyber: Reserve REN
4.21981306 ETH
116572132021-01-15 3:30:451408 days ago1610681445
Kyber: Reserve REN
4.08732509 ETH
116572072021-01-15 3:29:441408 days ago1610681384
Kyber: Reserve REN
3.62069779 ETH
116571092021-01-15 3:09:571408 days ago1610680197
Kyber: Reserve REN
5.88920069 ETH
116570262021-01-15 2:52:201408 days ago1610679140
Kyber: Reserve REN
5.994 ETH
116570232021-01-15 2:51:401408 days ago1610679100
Kyber: Reserve REN
5.994 ETH
116569242021-01-15 2:27:171408 days ago1610677637
Kyber: Reserve REN
5.23081564 ETH
116568522021-01-15 2:11:071408 days ago1610676667
Kyber: Reserve REN
4.30079948 ETH
116555542021-01-14 21:12:051408 days ago1610658725
Kyber: Reserve REN
6.03699615 ETH
116555542021-01-14 21:12:051408 days ago1610658725
Kyber: Reserve REN
6.10965846 ETH
116544852021-01-14 17:11:301409 days ago1610644290
Kyber: Reserve REN
8.46452665 ETH
116538582021-01-14 14:52:151409 days ago1610635935
Kyber: Reserve REN
6.3989591 ETH
116537672021-01-14 14:33:021409 days ago1610634782
Kyber: Reserve REN
5.60421124 ETH
116537512021-01-14 14:30:161409 days ago1610634616
Kyber: Reserve REN
5.08251196 ETH
116536582021-01-14 14:08:231409 days ago1610633303
Kyber: Reserve REN
5.83160376 ETH
116530742021-01-14 11:57:161409 days ago1610625436
Kyber: Reserve REN
7.7922 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KyberReserve

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-01-26
*/

pragma solidity 0.4.18;

// File: contracts/ERC20Interface.sol

// https://github.com/ethereum/EIPs/issues/20
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);
}

// File: contracts/Utils.sol

/// @title Kyber constants contract
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
    }
}

// File: contracts/PermissionGroups.sol

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

// File: contracts/Withdrawable.sol

/**
 * @title Contracts that should be able to recover tokens or ethers
 * @author Ilan Doron
 * @dev This allows to recover any tokens or Ethers received in a contract.
 * This will prevent any accidental loss of tokens.
 */
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);
    }
}

// File: contracts/ConversionRatesInterface.sol

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

// File: contracts/SanityRatesInterface.sol

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

// File: contracts/KyberReserveInterface.sol

/// @title Kyber Reserve contract
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);
}

// File: contracts/KyberReserve.sol

/// @title Kyber Reserve contract
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
    mapping(address=>address) public tokenWallet;

    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);
        if ((tokenWallet[token] == address(0x0)) && (token != ETH_TOKEN_ADDRESS)) {
            tokenWallet[token] = this; // by default
            require(token.approve(this, 2 ** 255));
        }
    }

    event NewTokenWallet(ERC20 token, address wallet);

    function setTokenWallet(ERC20 token, address wallet) public onlyAdmin {
        require(wallet != address(0x0));
        tokenWallet[token] = wallet;
        NewTokenWallet(token, wallet);
    }

    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.transferFrom(tokenWallet[token], 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 {
            address wallet = tokenWallet[token];
            uint balanceOfWallet = token.balanceOf(wallet);
            uint allowanceOfWallet = token.allowance(wallet, this);

            return (balanceOfWallet < allowanceOfWallet) ? balanceOfWallet : allowanceOfWallet;
        }
    }

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

        if (!tradeEnabled) return 0;

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

        uint rate = conversionRatesContract.getRate(token, blockNumber, isBuy, 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 tradeAmount;
        if (srcToken == ETH_TOKEN_ADDRESS) {
            tradeAmount = int(destAmount);
            token = destToken;
        } else {
            tradeAmount = -1 * int(srcAmount);
            token = srcToken;
        }

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

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

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

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

        return true;
    }
}

Contract Security Audit

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":false,"inputs":[{"name":"token","type":"address"},{"name":"wallet","type":"address"}],"name":"setTokenWallet","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":true,"inputs":[{"name":"","type":"address"}],"name":"tokenWallet","outputs":[{"name":"","type":"address"}],"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":"wallet","type":"address"}],"name":"NewTokenWallet","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"}]

6060604052341561000f57600080fd5b60405160608061219083398101604052808051919060200180519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061006357600080fd5b600160a060020a038216151561007857600080fd5b600160a060020a038316151561008d57600080fd5b6007805460088054600160a060020a03958616600160a060020a031991821617909155600080549486169482169490941790935560a060020a60ff02199390941691909316171674010000000000000000000000000000000000000000179055612094806100fc6000396000f3006060604052600436106101655763ffffffff60e060020a60003504166299d38681146101b957806301a12fd3146101e05780631bc7bfec14610201578063267822471461022657806327a099d8146102555780633ccdbb28146102bb578063408ee7fe146102e457806347e6924f14610303578063546dc71c1461031657806369328dec146103405780636940030f146103695780636cf698111461037c57806375829def146103a857806377f50f97146103c75780637acc8678146103da5780637c423f54146103f95780637cd442721461040c5780639870d7fe14610449578063a7fca95314610468578063a80cbac614610493578063ac8a584a146104b2578063b3066d49146104d1578063b78b842d146104fc578063ce56c4541461050f578063d5847d3314610531578063d621e81314610544578063d7b7024d14610557578063f851a4401461056d578063f8b2cb4f14610580578063fa64dffa1461059f575b7f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f60008051602061204983398151915234604051600160a060020a03909216825260208201526040908101905180910390a1005b34156101c457600080fd5b6101cc6105ca565b604051901515815260200160405180910390f35b34156101eb57600080fd5b6101ff600160a060020a0360043516610658565b005b341561020c57600080fd5b6101ff600160a060020a03600435811690602435166107c8565b341561023157600080fd5b610239610874565b604051600160a060020a03909116815260200160405180910390f35b341561026057600080fd5b610268610883565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102a757808201518382015260200161028f565b505050509050019250505060405180910390f35b34156102c657600080fd5b6101ff600160a060020a0360043581169060243590604435166108eb565b34156102ef57600080fd5b6101ff600160a060020a03600435166109e2565b341561030e57600080fd5b610239610ade565b341561032157600080fd5b6101ff600160a060020a03600435811690602435166044351515610aed565b341561034b57600080fd5b6101cc600160a060020a036004358116906024359060443516610cd7565b341561037457600080fd5b6101cc610eb0565b6101cc600160a060020a03600435811690602435906044358116906064351660843560a4351515610f31565b34156103b357600080fd5b6101ff600160a060020a0360043516610f9e565b34156103d257600080fd5b6101ff611039565b34156103e557600080fd5b6101ff600160a060020a03600435166110d3565b341561040457600080fd5b6102686111b5565b341561041757600080fd5b610437600160a060020a036004358116906024351660443560643561121b565b60405190815260200160405180910390f35b341561045457600080fd5b6101ff600160a060020a0360043516611406565b341561047357600080fd5b610437600160a060020a03600435811690602435166044356064356114d6565b341561049e57600080fd5b610239600160a060020a0360043516611508565b34156104bd57600080fd5b6101ff600160a060020a0360043516611523565b34156104dc57600080fd5b6101ff600160a060020a036004358116906024358116906044351661168f565b341561050757600080fd5b610239611773565b341561051a57600080fd5b6101ff600435600160a060020a0360243516611782565b341561053c57600080fd5b610239611815565b341561054f57600080fd5b6101cc611824565b341561056257600080fd5b6101cc600435611845565b341561057857600080fd5b61023961185a565b341561058b57600080fd5b610437600160a060020a0360043516611869565b34156105aa57600080fd5b610437600160a060020a03600435811690602435166044356064356119bd565b6000805433600160a060020a039081169116146105e657600080fd5b6007805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461067457600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561069b57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156107c45781600160a060020a03166005828154811015156106e057fe5b600091825260209091200154600160a060020a031614156107bc5760058054600019810190811061070d57fe5b60009182526020909120015460058054600160a060020a03909216918390811061073357fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061076f906000198301611ff4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b6001016106bd565b5050565b60005433600160a060020a039081169116146107e357600080fd5b600160a060020a03811615156107f857600080fd5b600160a060020a038281166000908152600b6020526040908190208054600160a060020a031916928416929092179091557f81995c7b922889ac0a81e41866106d4046268ea3a9abaae9f9e080a6ce36ee7d908390839051600160a060020a039283168152911660208201526040908101905180910390a15050565b600154600160a060020a031681565b61088b612018565b60048054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116108c3575b5050505050905090565b60005433600160a060020a0390811691161461090657600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561096357600080fd5b6102c65a03f1151561097457600080fd5b50505060405180519050151561098957600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a039081169116146109fd57600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610a2357600080fd5b60055460329010610a3357600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610ab28382611ff4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600954600160a060020a031681565b60005433600160a060020a03908116911614610b0857600080fd5b80600a600085856040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040908101600020805460ff1916921515929092179091557fd5fd5351efae1f4bb760079da9f0ff9589e2c3e216337ca9d39cdff573b245c49084908490849051600160a060020a0393841681529190921660208201529015156040808301919091526060909101905180910390a1610bc7836119e4565b600160a060020a038381166000908152600b602052604090205416158015610c065750600160a060020a03831660008051602061204983398151915214155b15610cd257600160a060020a038381166000818152600b60205260408082208054600160a060020a03191630958616179055919263095ea7b39290917f800000000000000000000000000000000000000000000000000000000000000091516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610cac57600080fd5b6102c65a03f11515610cbd57600080fd5b505050604051805190501515610cd257600080fd5b505050565b600160a060020a03331660009081526002602052604081205460ff161515610cfe57600080fd5b600a600085846040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040016000205460ff161515610d5957600080fd5b600160a060020a0384166000805160206120498339815191521415610dae57600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515610da957600080fd5b610e52565b600160a060020a038085166000818152600b60205260408082205492936323b872dd9316918691889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610e2c57600080fd5b6102c65a03f11515610e3d57600080fd5b505050604051805190501515610e5257600080fd5b7fb67719fc33c1f17d31bf3a698690d62066b1e0bae28fcd3c56cf2c015c2863d6848484604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a15060019392505050565b600160a060020a03331660009081526003602052604081205460ff161515610ed757600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60075460009074010000000000000000000000000000000000000000900460ff161515610f5d57600080fd5b60075433600160a060020a03908116911614610f7857600080fd5b610f86878787878787611aa1565b1515610f9157600080fd5b5060019695505050505050565b60005433600160a060020a03908116911614610fb957600080fd5b600160a060020a0381161515610fce57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461105457600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a039081169116146110ee57600080fd5b600160a060020a038116151561110357600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6111bd612018565b60058054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020908154600160a060020a031681526001909101906020018083116108c3575050505050905090565b600080600080600080600760149054906101000a900460ff16151561124357600095506113f9565b600080516020612049833981519152600160a060020a038b16141561126e57600193508894506112a2565b600080516020612049833981519152600160a060020a038a16141561129957600093508994506112a2565b600095506113f9565b600854600160a060020a031663b8e9c22e8689878c60006040516020015260405160e060020a63ffffffff8716028152600160a060020a0390941660048501526024840192909252151560448301526064820152608401602060405180830381600087803b151561131257600080fd5b6102c65a03f1151561132357600080fd5b50505060405180519050925061133b8a8a8a866119bd565b9150816113478a611869565b101561135657600095506113f9565b600954600160a060020a0316156113f557600954600160a060020a031663a58092b78b8b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156113c857600080fd5b6102c65a03f115156113d957600080fd5b5050506040518051915050808311156113f557600095506113f9565b8295505b5050505050949350505050565b60005433600160a060020a0390811691161461142157600080fd5b600160a060020a03811660009081526002602052604090205460ff161561144757600080fd5b6004546032901061145757600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610ab28382611ff4565b60008060006114e486611df6565b91506114ef87611df6565b90506114fd85828487611eb4565b979650505050505050565b600b60205260009081526040902054600160a060020a031681565b6000805433600160a060020a0390811691161461153f57600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561156657600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156107c45781600160a060020a03166004828154811015156115ab57fe5b600091825260209091200154600160a060020a03161415611687576004805460001981019081106115d857fe5b60009182526020909120015460048054600160a060020a0390921691839081106115fe57fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560048054600019019061163a9082611ff4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b600101611588565b60005433600160a060020a039081169116146116aa57600080fd5b600160a060020a03831615156116bf57600080fd5b600160a060020a03821615156116d457600080fd5b60078054600160a060020a03808616600160a060020a0319928316179283905560088054868316908416179081905560098054868416941693909317928390557f7a85322644a4462d8ff5482d2a841a4d231f8cfb3c9f4a50f66f8b2bd568c31c938216929082169116604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461179d57600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f1935050505015156117ce57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600854600160a060020a031681565b60075474010000000000000000000000000000000000000000900460ff1681565b600a6020526000908152604090205460ff1681565b600054600160a060020a031681565b6000808080600160a060020a038516600080516020612049833981519152141561189f5730600160a060020a03163193506119b5565b600160a060020a038086166000818152600b602052604080822054909316955090916370a08231918691516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561190c57600080fd5b6102c65a03f1151561191d57600080fd5b5050506040518051925050600160a060020a03851663dd62ed3e843060006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561198757600080fd5b6102c65a03f1151561199857600080fd5b50505060405180519150508082106119b057806119b2565b815b93505b505050919050565b60008060006119cb86611df6565b91506119d687611df6565b90506114fd85828487611f5b565b600160a060020a0381166000805160206120498339815191521415611a2457600160a060020a038116600090815260066020526040902060129055611a9e565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a6a57600080fd5b6102c65a03f11515611a7b57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b6000806000808415611af55760008611611aba57600080fd5b600160a060020a038a166000805160206120498339815191521415611aea57348914611ae557600080fd5b611af5565b3415611af557600080fd5b611b018a898b896119bd565b925060008311611b1057600080fd5b600160a060020a038a166000805160206120498339815191521415611b39575086905081611b43565b5088905060001988025b600854600160a060020a031663c6fd2103838360004360405160e060020a63ffffffff8716028152600160a060020a039094166004850152602484019290925260448301526064820152608401600060405180830381600087803b1515611ba957600080fd5b6102c65a03f11515611bba57600080fd5b505050600160a060020a038a1660008051602061204983398151915214611c8057600160a060020a03808b166000818152600b60205260408082205492936323b872dd9333939116918e9190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611c5a57600080fd5b6102c65a03f11515611c6b57600080fd5b505050604051805190501515611c8057600080fd5b600160a060020a0388166000805160206120498339815191521415611cd557600160a060020a03871683156108fc0284604051600060405180830381858888f193505050501515611cd057600080fd5b611d79565b600160a060020a038089166000818152600b60205260408082205492936323b872dd9316918b91889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611d5357600080fd5b6102c65a03f11515611d6457600080fd5b505050604051805190501515611d7957600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b878c604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019998505050505050505050565b600080600160a060020a0383166000805160206120498339815191521415611e215760129150611eae565b50600160a060020a038216600090815260066020526040902054801515611eaa5782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611e8857600080fd5b6102c65a03f11515611e9957600080fd5b505050604051805190509150611eae565b8091505b50919050565b600080806b204fce5e3e25026110000000871115611ed157600080fd5b69d3c21bcecceda1000000841115611ee857600080fd5b848610611f195760128587031115611eff57600080fd5b5050828403600a0a8502670de0b6b3a76400000282611f3f565b60128686031115611f2957600080fd5b5050670de0b6b3a76400008502848403600a0a83025b80600182840103811515611f4f57fe5b04979650505050505050565b60006b204fce5e3e25026110000000851115611f7657600080fd5b69d3c21bcecceda1000000821115611f8d57600080fd5b838310611fc05760128484031115611fa457600080fd5b670de0b6b3a7640000858302858503600a0a025b049050611fec565b60128385031115611fd057600080fd5b828403600a0a670de0b6b3a764000002828602811515611fb857fe5b949350505050565b815481835581811511610cd257600083815260209020610cd291810190830161202a565b60206040519081016040526000815290565b61065591905b808211156120445760008155600101612030565b50905600000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea165627a7a723058209c2ee7d885d349263e39d02e008f69595bc95d44ac16a6db91b995ce19a0075e00290000000000000000000000009ae49c0d7f8f9ef4b864e004fe86ac8294e209500000000000000000000000002f4b3134265e1103fb61ceb534d117755a906963000000000000000000000000086b47c43d5046d059d234f863d9ae6821c945e6

Deployed Bytecode

0x6060604052600436106101655763ffffffff60e060020a60003504166299d38681146101b957806301a12fd3146101e05780631bc7bfec14610201578063267822471461022657806327a099d8146102555780633ccdbb28146102bb578063408ee7fe146102e457806347e6924f14610303578063546dc71c1461031657806369328dec146103405780636940030f146103695780636cf698111461037c57806375829def146103a857806377f50f97146103c75780637acc8678146103da5780637c423f54146103f95780637cd442721461040c5780639870d7fe14610449578063a7fca95314610468578063a80cbac614610493578063ac8a584a146104b2578063b3066d49146104d1578063b78b842d146104fc578063ce56c4541461050f578063d5847d3314610531578063d621e81314610544578063d7b7024d14610557578063f851a4401461056d578063f8b2cb4f14610580578063fa64dffa1461059f575b7f2d0c0a8842b9944ece1495eb61121621b5e36bd6af3bba0318c695f525aef79f60008051602061204983398151915234604051600160a060020a03909216825260208201526040908101905180910390a1005b34156101c457600080fd5b6101cc6105ca565b604051901515815260200160405180910390f35b34156101eb57600080fd5b6101ff600160a060020a0360043516610658565b005b341561020c57600080fd5b6101ff600160a060020a03600435811690602435166107c8565b341561023157600080fd5b610239610874565b604051600160a060020a03909116815260200160405180910390f35b341561026057600080fd5b610268610883565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102a757808201518382015260200161028f565b505050509050019250505060405180910390f35b34156102c657600080fd5b6101ff600160a060020a0360043581169060243590604435166108eb565b34156102ef57600080fd5b6101ff600160a060020a03600435166109e2565b341561030e57600080fd5b610239610ade565b341561032157600080fd5b6101ff600160a060020a03600435811690602435166044351515610aed565b341561034b57600080fd5b6101cc600160a060020a036004358116906024359060443516610cd7565b341561037457600080fd5b6101cc610eb0565b6101cc600160a060020a03600435811690602435906044358116906064351660843560a4351515610f31565b34156103b357600080fd5b6101ff600160a060020a0360043516610f9e565b34156103d257600080fd5b6101ff611039565b34156103e557600080fd5b6101ff600160a060020a03600435166110d3565b341561040457600080fd5b6102686111b5565b341561041757600080fd5b610437600160a060020a036004358116906024351660443560643561121b565b60405190815260200160405180910390f35b341561045457600080fd5b6101ff600160a060020a0360043516611406565b341561047357600080fd5b610437600160a060020a03600435811690602435166044356064356114d6565b341561049e57600080fd5b610239600160a060020a0360043516611508565b34156104bd57600080fd5b6101ff600160a060020a0360043516611523565b34156104dc57600080fd5b6101ff600160a060020a036004358116906024358116906044351661168f565b341561050757600080fd5b610239611773565b341561051a57600080fd5b6101ff600435600160a060020a0360243516611782565b341561053c57600080fd5b610239611815565b341561054f57600080fd5b6101cc611824565b341561056257600080fd5b6101cc600435611845565b341561057857600080fd5b61023961185a565b341561058b57600080fd5b610437600160a060020a0360043516611869565b34156105aa57600080fd5b610437600160a060020a03600435811690602435166044356064356119bd565b6000805433600160a060020a039081169116146105e657600080fd5b6007805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356001604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461067457600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561069b57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156107c45781600160a060020a03166005828154811015156106e057fe5b600091825260209091200154600160a060020a031614156107bc5760058054600019810190811061070d57fe5b60009182526020909120015460058054600160a060020a03909216918390811061073357fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061076f906000198301611ff4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b6001016106bd565b5050565b60005433600160a060020a039081169116146107e357600080fd5b600160a060020a03811615156107f857600080fd5b600160a060020a038281166000908152600b6020526040908190208054600160a060020a031916928416929092179091557f81995c7b922889ac0a81e41866106d4046268ea3a9abaae9f9e080a6ce36ee7d908390839051600160a060020a039283168152911660208201526040908101905180910390a15050565b600154600160a060020a031681565b61088b612018565b60048054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116108c3575b5050505050905090565b60005433600160a060020a0390811691161461090657600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561096357600080fd5b6102c65a03f1151561097457600080fd5b50505060405180519050151561098957600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a039081169116146109fd57600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610a2357600080fd5b60055460329010610a3357600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610ab28382611ff4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b600954600160a060020a031681565b60005433600160a060020a03908116911614610b0857600080fd5b80600a600085856040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040908101600020805460ff1916921515929092179091557fd5fd5351efae1f4bb760079da9f0ff9589e2c3e216337ca9d39cdff573b245c49084908490849051600160a060020a0393841681529190921660208201529015156040808301919091526060909101905180910390a1610bc7836119e4565b600160a060020a038381166000908152600b602052604090205416158015610c065750600160a060020a03831660008051602061204983398151915214155b15610cd257600160a060020a038381166000818152600b60205260408082208054600160a060020a03191630958616179055919263095ea7b39290917f800000000000000000000000000000000000000000000000000000000000000091516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610cac57600080fd5b6102c65a03f11515610cbd57600080fd5b505050604051805190501515610cd257600080fd5b505050565b600160a060020a03331660009081526002602052604081205460ff161515610cfe57600080fd5b600a600085846040516c01000000000000000000000000600160a060020a039384168102825291909216026014820152602801604051908190039020815260208101919091526040016000205460ff161515610d5957600080fd5b600160a060020a0384166000805160206120498339815191521415610dae57600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515610da957600080fd5b610e52565b600160a060020a038085166000818152600b60205260408082205492936323b872dd9316918691889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610e2c57600080fd5b6102c65a03f11515610e3d57600080fd5b505050604051805190501515610e5257600080fd5b7fb67719fc33c1f17d31bf3a698690d62066b1e0bae28fcd3c56cf2c015c2863d6848484604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a15060019392505050565b600160a060020a03331660009081526003602052604081205460ff161515610ed757600080fd5b6007805474ff0000000000000000000000000000000000000000191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60075460009074010000000000000000000000000000000000000000900460ff161515610f5d57600080fd5b60075433600160a060020a03908116911614610f7857600080fd5b610f86878787878787611aa1565b1515610f9157600080fd5b5060019695505050505050565b60005433600160a060020a03908116911614610fb957600080fd5b600160a060020a0381161515610fce57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a0390811691161461105457600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a039081169116146110ee57600080fd5b600160a060020a038116151561110357600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6111bd612018565b60058054806020026020016040519081016040528092919081815260200182805480156108e157602002820191906000526020600020908154600160a060020a031681526001909101906020018083116108c3575050505050905090565b600080600080600080600760149054906101000a900460ff16151561124357600095506113f9565b600080516020612049833981519152600160a060020a038b16141561126e57600193508894506112a2565b600080516020612049833981519152600160a060020a038a16141561129957600093508994506112a2565b600095506113f9565b600854600160a060020a031663b8e9c22e8689878c60006040516020015260405160e060020a63ffffffff8716028152600160a060020a0390941660048501526024840192909252151560448301526064820152608401602060405180830381600087803b151561131257600080fd5b6102c65a03f1151561132357600080fd5b50505060405180519050925061133b8a8a8a866119bd565b9150816113478a611869565b101561135657600095506113f9565b600954600160a060020a0316156113f557600954600160a060020a031663a58092b78b8b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b15156113c857600080fd5b6102c65a03f115156113d957600080fd5b5050506040518051915050808311156113f557600095506113f9565b8295505b5050505050949350505050565b60005433600160a060020a0390811691161461142157600080fd5b600160a060020a03811660009081526002602052604090205460ff161561144757600080fd5b6004546032901061145757600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610ab28382611ff4565b60008060006114e486611df6565b91506114ef87611df6565b90506114fd85828487611eb4565b979650505050505050565b600b60205260009081526040902054600160a060020a031681565b6000805433600160a060020a0390811691161461153f57600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561156657600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156107c45781600160a060020a03166004828154811015156115ab57fe5b600091825260209091200154600160a060020a03161415611687576004805460001981019081106115d857fe5b60009182526020909120015460048054600160a060020a0390921691839081106115fe57fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560048054600019019061163a9082611ff4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16107c4565b600101611588565b60005433600160a060020a039081169116146116aa57600080fd5b600160a060020a03831615156116bf57600080fd5b600160a060020a03821615156116d457600080fd5b60078054600160a060020a03808616600160a060020a0319928316179283905560088054868316908416179081905560098054868416941693909317928390557f7a85322644a4462d8ff5482d2a841a4d231f8cfb3c9f4a50f66f8b2bd568c31c938216929082169116604051600160a060020a03938416815291831660208301529091166040808301919091526060909101905180910390a1505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461179d57600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f1935050505015156117ce57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600854600160a060020a031681565b60075474010000000000000000000000000000000000000000900460ff1681565b600a6020526000908152604090205460ff1681565b600054600160a060020a031681565b6000808080600160a060020a038516600080516020612049833981519152141561189f5730600160a060020a03163193506119b5565b600160a060020a038086166000818152600b602052604080822054909316955090916370a08231918691516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561190c57600080fd5b6102c65a03f1151561191d57600080fd5b5050506040518051925050600160a060020a03851663dd62ed3e843060006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561198757600080fd5b6102c65a03f1151561199857600080fd5b50505060405180519150508082106119b057806119b2565b815b93505b505050919050565b60008060006119cb86611df6565b91506119d687611df6565b90506114fd85828487611f5b565b600160a060020a0381166000805160206120498339815191521415611a2457600160a060020a038116600090815260066020526040902060129055611a9e565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a6a57600080fd5b6102c65a03f11515611a7b57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b6000806000808415611af55760008611611aba57600080fd5b600160a060020a038a166000805160206120498339815191521415611aea57348914611ae557600080fd5b611af5565b3415611af557600080fd5b611b018a898b896119bd565b925060008311611b1057600080fd5b600160a060020a038a166000805160206120498339815191521415611b39575086905081611b43565b5088905060001988025b600854600160a060020a031663c6fd2103838360004360405160e060020a63ffffffff8716028152600160a060020a039094166004850152602484019290925260448301526064820152608401600060405180830381600087803b1515611ba957600080fd5b6102c65a03f11515611bba57600080fd5b505050600160a060020a038a1660008051602061204983398151915214611c8057600160a060020a03808b166000818152600b60205260408082205492936323b872dd9333939116918e9190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611c5a57600080fd5b6102c65a03f11515611c6b57600080fd5b505050604051805190501515611c8057600080fd5b600160a060020a0388166000805160206120498339815191521415611cd557600160a060020a03871683156108fc0284604051600060405180830381858888f193505050501515611cd057600080fd5b611d79565b600160a060020a038089166000818152600b60205260408082205492936323b872dd9316918b91889190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515611d5357600080fd5b6102c65a03f11515611d6457600080fd5b505050604051805190501515611d7957600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8b8b8b878c604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019998505050505050505050565b600080600160a060020a0383166000805160206120498339815191521415611e215760129150611eae565b50600160a060020a038216600090815260066020526040902054801515611eaa5782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611e8857600080fd5b6102c65a03f11515611e9957600080fd5b505050604051805190509150611eae565b8091505b50919050565b600080806b204fce5e3e25026110000000871115611ed157600080fd5b69d3c21bcecceda1000000841115611ee857600080fd5b848610611f195760128587031115611eff57600080fd5b5050828403600a0a8502670de0b6b3a76400000282611f3f565b60128686031115611f2957600080fd5b5050670de0b6b3a76400008502848403600a0a83025b80600182840103811515611f4f57fe5b04979650505050505050565b60006b204fce5e3e25026110000000851115611f7657600080fd5b69d3c21bcecceda1000000821115611f8d57600080fd5b838310611fc05760128484031115611fa457600080fd5b670de0b6b3a7640000858302858503600a0a025b049050611fec565b60128385031115611fd057600080fd5b828403600a0a670de0b6b3a764000002828602811515611fb857fe5b949350505050565b815481835581811511610cd257600083815260209020610cd291810190830161202a565b60206040519081016040526000815290565b61065591905b808211156120445760008155600101612030565b50905600000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea165627a7a723058209c2ee7d885d349263e39d02e008f69595bc95d44ac16a6db91b995ce19a0075e0029

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

0000000000000000000000009ae49c0d7f8f9ef4b864e004fe86ac8294e209500000000000000000000000002f4b3134265e1103fb61ceb534d117755a906963000000000000000000000000086b47c43d5046d059d234f863d9ae6821c945e6

-----Decoded View---------------
Arg [0] : _kyberNetwork (address): 0x9ae49C0d7F8F9EF4B864e004FE86Ac8294E20950
Arg [1] : _ratesContract (address): 0x2f4B3134265E1103Fb61cEB534d117755a906963
Arg [2] : _admin (address): 0x086B47c43d5046D059D234f863D9ae6821C945E6

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000009ae49c0d7f8f9ef4b864e004fe86ac8294e20950
Arg [1] : 0000000000000000000000002f4b3134265e1103fb61ceb534d117755a906963
Arg [2] : 000000000000000000000000086b47c43d5046d059d234f863d9ae6821c945e6


Swarm Source

bzzr://9c2ee7d885d349263e39d02e008f69595bc95d44ac16a6db91b995ce19a0075e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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