ETH Price: $3,405.47 (+1.07%)

Contract

0x13032DeB2d37556cf49301f713E9d7e1d1A8b169
 

Overview

ETH Balance

0.000505794922909694 ETH

Eth Value

$1.72 (@ $3,405.47/ETH)

Token Holdings

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Withdraw Token108923712020-09-19 11:23:171559 days ago1600514597IN
0x13032DeB...1d1A8b169
0 ETH0.0043054894
Claim Admin108923402020-09-19 11:15:071560 days ago1600514107IN
0x13032DeB...1d1A8b169
0 ETH0.0021044794
Transfer Admin108792592020-09-17 10:58:161562 days ago1600340296IN
0x13032DeB...1d1A8b169
0 ETH0.0322063700
Claim Admin108792462020-09-17 10:54:221562 days ago1600340062IN
0x13032DeB...1d1A8b169
0 ETH0.016791750
Withdraw Ether73986192019-03-19 10:01:312110 days ago1552989691IN
0x13032DeB...1d1A8b169
0 ETH0.0005029915
Withdraw Ether73986032019-03-19 9:57:572110 days ago1552989477IN
0x13032DeB...1d1A8b169
0 ETH0.0004991515
Withdraw Ether73690562019-03-14 19:40:432114 days ago1552592443IN
0x13032DeB...1d1A8b169
0 ETH0.0005001115
Withdraw Ether73690462019-03-14 19:37:512114 days ago1552592271IN
0x13032DeB...1d1A8b169
0 ETH0.0005001115
Withdraw Ether73690232019-03-14 19:34:332114 days ago1552592073IN
0x13032DeB...1d1A8b169
0 ETH0.0004991515
Withdraw Ether73223332019-03-07 13:09:422121 days ago1551964182IN
0x13032DeB...1d1A8b169
0 ETH0.0003330110
Withdraw Ether73223242019-03-07 13:07:372121 days ago1551964057IN
0x13032DeB...1d1A8b169
0 ETH0.0003334110
List Token72953242019-03-03 7:56:082126 days ago1551599768IN
0x13032DeB...1d1A8b169
0 ETH0.0010150310
Set Fee72120162019-02-12 18:23:502144 days ago1549995830IN
0x13032DeB...1d1A8b169
0 ETH0.0004332210
Set Fee71429042019-01-29 7:26:262159 days ago1548746786IN
0x13032DeB...1d1A8b169
0 ETH0.0001412910
List Token71000572019-01-20 19:34:492167 days ago1548012889IN
0x13032DeB...1d1A8b169
0 ETH0.0009492810
Transfer Admin70998132019-01-20 18:36:022167 days ago1548009362IN
0x13032DeB...1d1A8b169
0 ETH0.0004545710
Set Kyber Networ...70997722019-01-20 18:26:112167 days ago1548008771IN
0x13032DeB...1d1A8b169
0 ETH0.0003009910
Add Alerter70997622019-01-20 18:23:242167 days ago1548008604IN
0x13032DeB...1d1A8b169
0 ETH0.0008692610
Set Kyber Networ...70983822019-01-20 12:24:122167 days ago1547987052IN
0x13032DeB...1d1A8b169
0 ETH0.0003009910
Trade70982432019-01-20 11:46:592167 days ago1547984819IN
0x13032DeB...1d1A8b169
0 ETH0.0008147310
Trade70982242019-01-20 11:41:392167 days ago1547984499IN
0x13032DeB...1d1A8b169
0 ETH0.0004273110
Trade70982032019-01-20 11:37:482167 days ago1547984268IN
0x13032DeB...1d1A8b169
0.01 ETH0.0010604210
Set Kyber Networ...70981952019-01-20 11:34:552167 days ago1547984095IN
0x13032DeB...1d1A8b169
0 ETH0.0003009910
List Token70981922019-01-20 11:33:422167 days ago1547984022IN
0x13032DeB...1d1A8b169
0 ETH0.0009492810

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
73988072019-03-19 10:43:302110 days ago1552992210
0x13032DeB...1d1A8b169
0.03499756 ETH
73988072019-03-19 10:43:302110 days ago1552992210
0x13032DeB...1d1A8b169
0.03508527 ETH
73987372019-03-19 10:27:372110 days ago1552991257
0x13032DeB...1d1A8b169
0.1668146 ETH
73987372019-03-19 10:27:372110 days ago1552991257
0x13032DeB...1d1A8b169
0.16723268 ETH
73986192019-03-19 10:01:312110 days ago1552989691
0x13032DeB...1d1A8b169
87.7395731 ETH
73986092019-03-19 9:59:462110 days ago1552989586
0x13032DeB...1d1A8b169
0.149625 ETH
73986092019-03-19 9:59:462110 days ago1552989586
0x13032DeB...1d1A8b169
0.15 ETH
73986032019-03-19 9:57:572110 days ago1552989477
0x13032DeB...1d1A8b169
0.01 ETH
73985302019-03-19 9:40:462110 days ago1552988446
0x13032DeB...1d1A8b169
10.9725 ETH
73985302019-03-19 9:40:462110 days ago1552988446
0x13032DeB...1d1A8b169
11 ETH
73985202019-03-19 9:39:412110 days ago1552988381
0x13032DeB...1d1A8b169
1.40269342 ETH
73985202019-03-19 9:39:412110 days ago1552988381
0x13032DeB...1d1A8b169
1.40620894 ETH
73984482019-03-19 9:23:032110 days ago1552987383
0x13032DeB...1d1A8b169
0.8961212 ETH
73984482019-03-19 9:23:032110 days ago1552987383
0x13032DeB...1d1A8b169
0.89836712 ETH
73984452019-03-19 9:22:122110 days ago1552987332
0x13032DeB...1d1A8b169
2.29699882 ETH
73984452019-03-19 9:22:122110 days ago1552987332
0x13032DeB...1d1A8b169
2.30275571 ETH
73984442019-03-19 9:22:092110 days ago1552987329
0x13032DeB...1d1A8b169
0.63209029 ETH
73984442019-03-19 9:22:092110 days ago1552987329
0x13032DeB...1d1A8b169
0.63367448 ETH
73984112019-03-19 9:13:342110 days ago1552986814
0x13032DeB...1d1A8b169
0.00351097 ETH
73984112019-03-19 9:13:342110 days ago1552986814
0x13032DeB...1d1A8b169
0.00351977 ETH
73984092019-03-19 9:13:152110 days ago1552986795
0x13032DeB...1d1A8b169
1.2290448 ETH
73984092019-03-19 9:13:152110 days ago1552986795
0x13032DeB...1d1A8b169
1.23212511 ETH
73981422019-03-19 8:15:262110 days ago1552983326
0x13032DeB...1d1A8b169
2.99993856 ETH
73981422019-03-19 8:15:262110 days ago1552983326
0x13032DeB...1d1A8b169
3.0074572 ETH
73981362019-03-19 8:13:122110 days ago1552983192
0x13032DeB...1d1A8b169
0.07199285 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KyberUniswapReserve

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-20
*/

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/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/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/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/Utils2.sol

contract Utils2 is Utils {

    /// @dev get the balance of a user.
    /// @param token The token type
    /// @return The balance
    function getBalance(ERC20 token, address user) public view returns(uint) {
        if (token == ETH_TOKEN_ADDRESS)
            return user.balance;
        else
            return token.balanceOf(user);
    }

    function getDecimalsSafe(ERC20 token) internal returns(uint) {

        if (decimals[token] == 0) {
            setDecimals(token);
        }

        return decimals[token];
    }

    function calcDestAmount(ERC20 src, ERC20 dest, uint srcAmount, uint rate) internal view returns(uint) {
        return calcDstQty(srcAmount, getDecimals(src), getDecimals(dest), rate);
    }

    function calcSrcAmount(ERC20 src, ERC20 dest, uint destAmount, uint rate) internal view returns(uint) {
        return calcSrcQty(destAmount, getDecimals(src), getDecimals(dest), rate);
    }

    function calcRateFromQty(uint srcAmount, uint destAmount, uint srcDecimals, uint dstDecimals)
        internal pure returns(uint)
    {
        require(srcAmount <= MAX_QTY);
        require(destAmount <= MAX_QTY);

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

// File: contracts/uniswap/KyberUniswapReserve.sol

interface UniswapExchange {
    function ethToTokenSwapInput(
        uint256 min_tokens,
        uint256 deadline
    )
        external
        payable
        returns (uint256  tokens_bought);

    function tokenToEthSwapInput(
        uint256 tokens_sold,
        uint256 min_eth,
        uint256 deadline
    )
        external
        returns (uint256  eth_bought);

    function getEthToTokenInputPrice(
        uint256 eth_sold
    )
        external
        view
        returns (uint256 tokens_bought);

    function getTokenToEthInputPrice(
        uint256 tokens_sold
    )
        external
        view
        returns (uint256 eth_bought);
}


interface UniswapFactory {
    function getExchange(address token) external view returns (address exchange);
}


contract KyberUniswapReserve is KyberReserveInterface, Withdrawable, Utils2 {
    // Parts per 10000
    uint public constant DEFAULT_FEE_BPS = 25;

    UniswapFactory public uniswapFactory;
    address public kyberNetwork;

    uint public feeBps = DEFAULT_FEE_BPS;

    // Uniswap exchange contract for every listed token
    // token -> exchange
    mapping (address => address) public tokenExchange;

    bool public tradeEnabled = true;

    /**
        Constructor
    */
    function KyberUniswapReserve(
        UniswapFactory _uniswapFactory,
        address _admin,
        address _kyberNetwork
    )
        public
    {
        require(address(_uniswapFactory) != 0);
        require(_admin != 0);
        require(_kyberNetwork != 0);

        uniswapFactory = _uniswapFactory;
        admin = _admin;
        kyberNetwork = _kyberNetwork;
    }

    function() public payable {
        // anyone can deposit ether
    }

    /**
        Returns dest quantity / source quantity.
    */
    function getConversionRate(
        ERC20 src,
        ERC20 dest,
        uint srcQty,
        uint blockNumber
    )
        public
        view
        returns(uint)
    {
        // This makes the UNUSED warning go away.
        blockNumber;

        require(isValidTokens(src, dest));

        if (!tradeEnabled) return 0;

        ERC20 token;
        if (src == ETH_TOKEN_ADDRESS) {
            token = dest;
        } else if (dest == ETH_TOKEN_ADDRESS) {
            token = src;
        } else {
            // Should never arrive here - isValidTokens requires one side to be ETH
            revert();
        }

        UniswapExchange exchange = UniswapExchange(tokenExchange[token]);

        uint convertedQuantity;
        if (src == ETH_TOKEN_ADDRESS) {
            uint quantity = srcQty * (10000 - feeBps) / 10000;
            convertedQuantity = exchange.getEthToTokenInputPrice(quantity);
        } else {
            convertedQuantity = exchange.getTokenToEthInputPrice(srcQty);
            convertedQuantity = convertedQuantity * (10000 - feeBps) / 10000;
        }

        return calcRateFromQty(
            srcQty, /* srcAmount */
            convertedQuantity, /* destAmount */
            getDecimals(src), /* srcDecimals */
            getDecimals(dest) /* dstDecimals */
        );
    }

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

    /**
      conversionRate: expected conversion rate should be >= this value.
     */
    function trade(
        ERC20 srcToken,
        uint srcAmount,
        ERC20 destToken,
        address destAddress,
        uint conversionRate,
        bool validate
    )
        public
        payable
        returns(bool)
    {
        // Not using this variable that is part of the interface.
        validate;

        require(tradeEnabled);
        require(msg.sender == kyberNetwork);
        require(isValidTokens(srcToken, destToken));

        uint expectedConversionRate = getConversionRate(
            srcToken,
            destToken,
            srcAmount,
            0 /* blockNumber */
        );
        require(expectedConversionRate >= conversionRate);

        uint destAmount;
        UniswapExchange exchange;
        if (srcToken == ETH_TOKEN_ADDRESS) {
            require(srcAmount == msg.value);

            // Fees in ETH
            uint quantity = srcAmount * (10000 - feeBps) / 10000;
            exchange = UniswapExchange(tokenExchange[destToken]);
            destAmount = exchange.ethToTokenSwapInput.value(quantity)(
                1, /* min_tokens: uniswap requires it to be > 0 */
                2 ** 255 /* deadline */
            );
            require(destToken.transfer(destAddress, destAmount));
        } else {
            require(msg.value == 0);
            require(srcToken.transferFrom(msg.sender, address(this), srcAmount));

            exchange = UniswapExchange(tokenExchange[srcToken]);
            destAmount = exchange.tokenToEthSwapInput(
                srcAmount,
                1, /* min_eth: uniswap requires it to be > 0 */
                2 ** 255 /* deadline */
            );
            // Fees in ETH
            destAmount = destAmount * (10000 - feeBps) / 10000;
            destAddress.transfer(destAmount);
        }

        TradeExecute(
            msg.sender, /* sender */
            srcToken, /* src */
            srcAmount, /* srcAmount */
            destToken, /* destToken */
            destAmount, /* destAmount */
            destAddress /* destAddress */
        );
        return true;
    }

    event FeeUpdated(
        uint bps
    );

    function setFee(
        uint bps
    )
        public
        onlyAdmin
    {
        require(bps <= 10000);

        feeBps = bps;

        FeeUpdated(bps);
    }

    event TokenListed(
        ERC20 token,
        UniswapExchange exchange
    );

    function listToken(ERC20 token)
        public
        onlyAdmin
    {
        require(address(token) != 0);

        UniswapExchange uniswapExchange = UniswapExchange(
            uniswapFactory.getExchange(token)
        );
        tokenExchange[token] = uniswapExchange;
        setDecimals(token);

        require(token.approve(uniswapExchange, 2**255));

        TokenListed(token, uniswapExchange);
    }

    event TokenDelisted(ERC20 token);

    function delistToken(ERC20 token)
        public
        onlyAdmin
    {
        require(tokenExchange[token] != 0);
        tokenExchange[token] = 0;


        TokenDelisted(token);
    }

    function isValidTokens(
        ERC20 src,
        ERC20 dest
    )
        public
        view
        returns(bool)
    {
        return (
            (src == ETH_TOKEN_ADDRESS && tokenExchange[dest] != 0) ||
            (tokenExchange[src] != 0 && dest == ETH_TOKEN_ADDRESS)
        );
    }

    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 KyberNetworkSet(
        address kyberNetwork
    );

    function setKyberNetwork(
        address _kyberNetwork
    )
        public
        onlyAdmin
    {
        require(_kyberNetwork != 0);
        kyberNetwork = _kyberNetwork;
        KyberNetworkSet(kyberNetwork);
    }
}

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":true,"inputs":[{"name":"","type":"address"}],"name":"tokenExchange","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"listToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":true,"inputs":[],"name":"DEFAULT_FEE_BPS","outputs":[{"name":"","type":"uint256"}],"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":false,"inputs":[{"name":"_kyberNetwork","type":"address"}],"name":"setKyberNetwork","outputs":[],"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":"bps","type":"uint256"}],"name":"setFee","outputs":[],"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":"src","type":"address"},{"name":"dest","type":"address"}],"name":"isValidTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","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":true,"inputs":[],"name":"uniswapFactory","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"delistToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"}],"name":"removeOperator","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":"token","type":"address"},{"name":"user","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"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":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_uniswapFactory","type":"address"},{"name":"_admin","type":"address"},{"name":"_kyberNetwork","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","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":"bps","type":"uint256"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"exchange","type":"address"}],"name":"TokenListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"}],"name":"TokenDelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enable","type":"bool"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"kyberNetwork","type":"address"}],"name":"KyberNetworkSet","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"}]

60606040526019600955600b805460ff19166001179055341561002157600080fd5b604051606080611d3483398101604052808051919060200180519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925084161515905061007557600080fd5b600160a060020a038216151561008a57600080fd5b600160a060020a038116151561009f57600080fd5b60078054600160a060020a03948516600160a060020a031991821617909155600080549385169382169390931790925560088054919093169116179055611c49806100eb6000396000f30060606040526004361061015a5763ffffffff60e060020a60003504166299d386811461015c57806301a12fd3146101835780630dd94b96146101a25780631fc1e25f146101dd57806324a9d853146101fc578063267822471461022157806327a099d81461023457806333d8262c1461029a5780633ccdbb28146102ad578063408ee7fe146102d657806354a325a6146102f55780636940030f1461031457806369fe0e2d146103275780636cf698111461033d57806375829def1461036957806377f50f97146103885780637acc86781461039b5780637be98598146103ba5780637c423f54146103df5780637cd44272146103f25780638bdb2afa1461041d5780639870d7fe14610430578063abffc9ac1461044f578063ac8a584a1461046e578063b78b842d1461048d578063ce56c454146104a0578063d4fac45d146104c2578063d621e813146104e7578063f851a440146104fa575b005b341561016757600080fd5b61016f61050d565b604051901515815260200160405180910390f35b341561018e57600080fd5b61015a600160a060020a0360043516610575565b34156101ad57600080fd5b6101c1600160a060020a03600435166106e5565b604051600160a060020a03909116815260200160405180910390f35b34156101e857600080fd5b61015a600160a060020a0360043516610700565b341561020757600080fd5b61020f6108af565b60405190815260200160405180910390f35b341561022c57600080fd5b6101c16108b5565b341561023f57600080fd5b6102476108c4565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561028657808201518382015260200161026e565b505050509050019250505060405180910390f35b34156102a557600080fd5b61020f61092c565b34156102b857600080fd5b61015a600160a060020a036004358116906024359060443516610931565b34156102e157600080fd5b61015a600160a060020a0360043516610a28565b341561030057600080fd5b61015a600160a060020a0360043516610b24565b341561031f57600080fd5b61016f610bb6565b341561033257600080fd5b61015a600435610c23565b61016f600160a060020a03600435811690602435906044358116906064351660843560a4351515610c88565b341561037457600080fd5b61015a600160a060020a0360043516611035565b341561039357600080fd5b61015a6110d0565b34156103a657600080fd5b61015a600160a060020a036004351661116a565b34156103c557600080fd5b61016f600160a060020a036004358116906024351661124c565b34156103ea57600080fd5b6102476112e7565b34156103fd57600080fd5b61020f600160a060020a036004358116906024351660443560643561134d565b341561042857600080fd5b6101c161153b565b341561043b57600080fd5b61015a600160a060020a036004351661154a565b341561045a57600080fd5b61015a600160a060020a036004351661161a565b341561047957600080fd5b61015a600160a060020a03600435166116c3565b341561049857600080fd5b6101c161182f565b34156104ab57600080fd5b61015a600435600160a060020a036024351661183e565b34156104cd57600080fd5b61020f600160a060020a03600435811690602435166118d1565b34156104f257600080fd5b61016f611982565b341561050557600080fd5b6101c161198b565b6000805433600160a060020a0390811691161461052957600080fd5b600b805460ff191660019081179091557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e73590604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461059157600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156105b857600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156106e15781600160a060020a03166005828154811015156105fd57fe5b600091825260209091200154600160a060020a031614156106d95760058054600019810190811061062a57fe5b60009182526020909120015460058054600160a060020a03909216918390811061065057fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061068c906000198301611bc4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16106e1565b6001016105da565b5050565b600a60205260009081526040902054600160a060020a031681565b6000805433600160a060020a0390811691161461071c57600080fd5b600160a060020a038216151561073157600080fd5b600754600160a060020a03166306f2bf628360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561078a57600080fd5b6102c65a03f1151561079b57600080fd5b5050506040518051600160a060020a038481166000908152600a602052604090208054600160a060020a03191691831691909117905591506107de90508261199a565b81600160a060020a031663095ea7b38260ff60020a60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561083f57600080fd5b6102c65a03f1151561085057600080fd5b50505060405180519050151561086557600080fd5b7f99d2b755eb38920131acb332adf086ea38d15009f223c21f3aa978d6ab2347868282604051600160a060020a039283168152911660208201526040908101905180910390a15050565b60095481565b600154600160a060020a031681565b6108cc611bed565b600480548060200260200160405190810160405280929190818152602001828054801561092257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610904575b5050505050905090565b601981565b60005433600160a060020a0390811691161461094c57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156109a957600080fd5b6102c65a03f115156109ba57600080fd5b5050506040518051905015156109cf57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a03908116911614610a4357600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610a6957600080fd5b60055460329010610a7957600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610af88382611bc4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610b3f57600080fd5b600160a060020a0381161515610b5457600080fd5b60088054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b600160a060020a03331660009081526003602052604081205460ff161515610bdd57600080fd5b600b805460ff191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60005433600160a060020a03908116911614610c3e57600080fd5b612710811115610c4d57600080fd5b60098190557f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c768160405190815260200160405180910390a150565b600b54600090819081908190819060ff161515610ca457600080fd5b60085433600160a060020a03908116911614610cbf57600080fd5b610cc98b8a61124c565b1515610cd457600080fd5b610ce18b8a8c600061134d565b935086841015610cf057600080fd5b600160a060020a038b1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610e4757348a14610d2157600080fd5b5050600954600160a060020a038881166000908152600a602052604080822054909216926127109081038c020491839163f39b5b9b91849160019160ff60020a9190516020015260405160e060020a63ffffffff8616028152600481019290925260248201526044016020604051808303818588803b1515610da257600080fd5b6125ee5a03f11515610db357600080fd5b505050506040518051935050600160a060020a03891663a9059cbb898560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e1c57600080fd5b6102c65a03f11515610e2d57600080fd5b505050604051805190501515610e4257600080fd5b610fb7565b3415610e5257600080fd5b8a600160a060020a03166323b872dd33308d60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610ebc57600080fd5b6102c65a03f11515610ecd57600080fd5b505050604051805190501515610ee257600080fd5b600160a060020a03808c166000908152600a602052604080822054909216935083916395e3c50b918d9160019160ff60020a91516020015260405160e060020a63ffffffff8616028152600481019390935260248301919091526044820152606401602060405180830381600087803b1515610f5d57600080fd5b6102c65a03f11515610f6e57600080fd5b505050604051805160095461271090810390910204935050600160a060020a0388166108fc84150284604051600060405180830381858888f193505050501515610fb757600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8c8c8c878d604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019a9950505050505050505050565b60005433600160a060020a0390811691161461105057600080fd5b600160a060020a038116151561106557600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146110eb57600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a0390811691161461118557600080fd5b600160a060020a038116151561119a57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480156112935750600160a060020a038083166000908152600a60205260409020541615155b806112de5750600160a060020a038084166000908152600a602052604090205416158015906112de5750600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b90505b92915050565b6112ef611bed565b600580548060200260200160405190810160405280929190818152602001828054801561092257602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610904575050505050905090565b600080600080600061135f898961124c565b151561136a57600080fd5b600b5460ff16151561137f576000945061152f565b600160a060020a03891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113ac578793506113de565b600160a060020a03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113d9578893506113de565b600080fd5b600160a060020a038085166000908152600a602052604090205481169350891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156114975750600954612710908103870204600160a060020a03831663cd7724c38260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561147557600080fd5b6102c65a03f1151561148657600080fd5b505050604051805190509150611510565b82600160a060020a03166395b68fe78860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156114e657600080fd5b6102c65a03f115156114f757600080fd5b5050506040518051600954612710908103909102049250505b61152c878361151e8c611a5d565b6115278c611a5d565b611b21565b94505b50505050949350505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461156557600080fd5b600160a060020a03811660009081526002602052604090205460ff161561158b57600080fd5b6004546032901061159b57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610af88382611bc4565b60005433600160a060020a0390811691161461163557600080fd5b600160a060020a038082166000908152600a602052604090205416151561165b57600080fd5b600160a060020a0381166000908152600a6020526040908190208054600160a060020a03191690557f6621c4efc5efa31320394260425b7d14cbb9d7e3754b2c98c04af66b1cbf315b90829051600160a060020a03909116815260200160405180910390a150565b6000805433600160a060020a039081169116146116df57600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561170657600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156106e15781600160a060020a031660048281548110151561174b57fe5b600091825260209091200154600160a060020a031614156118275760048054600019810190811061177857fe5b60009182526020909120015460048054600160a060020a03909216918390811061179e57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556004805460001901906117da9082611bc4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16106e1565b600101611728565b600854600160a060020a031681565b60005433600160a060020a0390811691161461185957600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f19350505050151561188a57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156119095750600160a060020a038116316112e1565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561196057600080fd5b6102c65a03f1151561197157600080fd5b5050506040518051905090506112e1565b600b5460ff1681565b600054600160a060020a031681565b600160a060020a03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156119e057600160a060020a038116600090815260066020526040902060129055611a5a565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a2657600080fd5b6102c65a03f11515611a3757600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611a8e5760129150611b1b565b50600160a060020a038216600090815260066020526040902054801515611b175782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611af557600080fd5b6102c65a03f11515611b0657600080fd5b505050604051805190509150611b1b565b8091505b50919050565b60006b204fce5e3e25026110000000851115611b3c57600080fd5b6b204fce5e3e25026110000000841115611b5557600080fd5b828210611b905760128383031115611b6c57600080fd5b84838303600a0a02670de0b6b3a76400008502811515611b8857fe5b049050611bbc565b60128284031115611ba057600080fd5b84828403600a0a670de0b6b3a7640000860202811515611b8857fe5b949350505050565b815481835581811511611be857600083815260209020611be8918101908301611bff565b505050565b60206040519081016040526000815290565b61057291905b80821115611c195760008155600101611c05565b50905600a165627a7a72305820eb8b3f7bc41e7750516728d944b272aae042b54ec58492bd307c01096ac6fb5b0029000000000000000000000000c0a47dfe034b400b47bdad5fecda2621de6c4d950000000000000000000000002259099897afaf3813fef3284b91d2b227b66ad400000000000000000000000065897adcba42dcca5dd162c647b1cc3e31238490

Deployed Bytecode

0x60606040526004361061015a5763ffffffff60e060020a60003504166299d386811461015c57806301a12fd3146101835780630dd94b96146101a25780631fc1e25f146101dd57806324a9d853146101fc578063267822471461022157806327a099d81461023457806333d8262c1461029a5780633ccdbb28146102ad578063408ee7fe146102d657806354a325a6146102f55780636940030f1461031457806369fe0e2d146103275780636cf698111461033d57806375829def1461036957806377f50f97146103885780637acc86781461039b5780637be98598146103ba5780637c423f54146103df5780637cd44272146103f25780638bdb2afa1461041d5780639870d7fe14610430578063abffc9ac1461044f578063ac8a584a1461046e578063b78b842d1461048d578063ce56c454146104a0578063d4fac45d146104c2578063d621e813146104e7578063f851a440146104fa575b005b341561016757600080fd5b61016f61050d565b604051901515815260200160405180910390f35b341561018e57600080fd5b61015a600160a060020a0360043516610575565b34156101ad57600080fd5b6101c1600160a060020a03600435166106e5565b604051600160a060020a03909116815260200160405180910390f35b34156101e857600080fd5b61015a600160a060020a0360043516610700565b341561020757600080fd5b61020f6108af565b60405190815260200160405180910390f35b341561022c57600080fd5b6101c16108b5565b341561023f57600080fd5b6102476108c4565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561028657808201518382015260200161026e565b505050509050019250505060405180910390f35b34156102a557600080fd5b61020f61092c565b34156102b857600080fd5b61015a600160a060020a036004358116906024359060443516610931565b34156102e157600080fd5b61015a600160a060020a0360043516610a28565b341561030057600080fd5b61015a600160a060020a0360043516610b24565b341561031f57600080fd5b61016f610bb6565b341561033257600080fd5b61015a600435610c23565b61016f600160a060020a03600435811690602435906044358116906064351660843560a4351515610c88565b341561037457600080fd5b61015a600160a060020a0360043516611035565b341561039357600080fd5b61015a6110d0565b34156103a657600080fd5b61015a600160a060020a036004351661116a565b34156103c557600080fd5b61016f600160a060020a036004358116906024351661124c565b34156103ea57600080fd5b6102476112e7565b34156103fd57600080fd5b61020f600160a060020a036004358116906024351660443560643561134d565b341561042857600080fd5b6101c161153b565b341561043b57600080fd5b61015a600160a060020a036004351661154a565b341561045a57600080fd5b61015a600160a060020a036004351661161a565b341561047957600080fd5b61015a600160a060020a03600435166116c3565b341561049857600080fd5b6101c161182f565b34156104ab57600080fd5b61015a600435600160a060020a036024351661183e565b34156104cd57600080fd5b61020f600160a060020a03600435811690602435166118d1565b34156104f257600080fd5b61016f611982565b341561050557600080fd5b6101c161198b565b6000805433600160a060020a0390811691161461052957600080fd5b600b805460ff191660019081179091557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e73590604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461059157600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156105b857600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156106e15781600160a060020a03166005828154811015156105fd57fe5b600091825260209091200154600160a060020a031614156106d95760058054600019810190811061062a57fe5b60009182526020909120015460058054600160a060020a03909216918390811061065057fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061068c906000198301611bc4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16106e1565b6001016105da565b5050565b600a60205260009081526040902054600160a060020a031681565b6000805433600160a060020a0390811691161461071c57600080fd5b600160a060020a038216151561073157600080fd5b600754600160a060020a03166306f2bf628360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561078a57600080fd5b6102c65a03f1151561079b57600080fd5b5050506040518051600160a060020a038481166000908152600a602052604090208054600160a060020a03191691831691909117905591506107de90508261199a565b81600160a060020a031663095ea7b38260ff60020a60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561083f57600080fd5b6102c65a03f1151561085057600080fd5b50505060405180519050151561086557600080fd5b7f99d2b755eb38920131acb332adf086ea38d15009f223c21f3aa978d6ab2347868282604051600160a060020a039283168152911660208201526040908101905180910390a15050565b60095481565b600154600160a060020a031681565b6108cc611bed565b600480548060200260200160405190810160405280929190818152602001828054801561092257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610904575b5050505050905090565b601981565b60005433600160a060020a0390811691161461094c57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156109a957600080fd5b6102c65a03f115156109ba57600080fd5b5050506040518051905015156109cf57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a03908116911614610a4357600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610a6957600080fd5b60055460329010610a7957600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610af88382611bc4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610b3f57600080fd5b600160a060020a0381161515610b5457600080fd5b60088054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b600160a060020a03331660009081526003602052604081205460ff161515610bdd57600080fd5b600b805460ff191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60005433600160a060020a03908116911614610c3e57600080fd5b612710811115610c4d57600080fd5b60098190557f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c768160405190815260200160405180910390a150565b600b54600090819081908190819060ff161515610ca457600080fd5b60085433600160a060020a03908116911614610cbf57600080fd5b610cc98b8a61124c565b1515610cd457600080fd5b610ce18b8a8c600061134d565b935086841015610cf057600080fd5b600160a060020a038b1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610e4757348a14610d2157600080fd5b5050600954600160a060020a038881166000908152600a602052604080822054909216926127109081038c020491839163f39b5b9b91849160019160ff60020a9190516020015260405160e060020a63ffffffff8616028152600481019290925260248201526044016020604051808303818588803b1515610da257600080fd5b6125ee5a03f11515610db357600080fd5b505050506040518051935050600160a060020a03891663a9059cbb898560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e1c57600080fd5b6102c65a03f11515610e2d57600080fd5b505050604051805190501515610e4257600080fd5b610fb7565b3415610e5257600080fd5b8a600160a060020a03166323b872dd33308d60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610ebc57600080fd5b6102c65a03f11515610ecd57600080fd5b505050604051805190501515610ee257600080fd5b600160a060020a03808c166000908152600a602052604080822054909216935083916395e3c50b918d9160019160ff60020a91516020015260405160e060020a63ffffffff8616028152600481019390935260248301919091526044820152606401602060405180830381600087803b1515610f5d57600080fd5b6102c65a03f11515610f6e57600080fd5b505050604051805160095461271090810390910204935050600160a060020a0388166108fc84150284604051600060405180830381858888f193505050501515610fb757600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8c8c8c878d604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019a9950505050505050505050565b60005433600160a060020a0390811691161461105057600080fd5b600160a060020a038116151561106557600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146110eb57600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a0390811691161461118557600080fd5b600160a060020a038116151561119a57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480156112935750600160a060020a038083166000908152600a60205260409020541615155b806112de5750600160a060020a038084166000908152600a602052604090205416158015906112de5750600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b90505b92915050565b6112ef611bed565b600580548060200260200160405190810160405280929190818152602001828054801561092257602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610904575050505050905090565b600080600080600061135f898961124c565b151561136a57600080fd5b600b5460ff16151561137f576000945061152f565b600160a060020a03891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113ac578793506113de565b600160a060020a03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113d9578893506113de565b600080fd5b600160a060020a038085166000908152600a602052604090205481169350891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156114975750600954612710908103870204600160a060020a03831663cd7724c38260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561147557600080fd5b6102c65a03f1151561148657600080fd5b505050604051805190509150611510565b82600160a060020a03166395b68fe78860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156114e657600080fd5b6102c65a03f115156114f757600080fd5b5050506040518051600954612710908103909102049250505b61152c878361151e8c611a5d565b6115278c611a5d565b611b21565b94505b50505050949350505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461156557600080fd5b600160a060020a03811660009081526002602052604090205460ff161561158b57600080fd5b6004546032901061159b57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610af88382611bc4565b60005433600160a060020a0390811691161461163557600080fd5b600160a060020a038082166000908152600a602052604090205416151561165b57600080fd5b600160a060020a0381166000908152600a6020526040908190208054600160a060020a03191690557f6621c4efc5efa31320394260425b7d14cbb9d7e3754b2c98c04af66b1cbf315b90829051600160a060020a03909116815260200160405180910390a150565b6000805433600160a060020a039081169116146116df57600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561170657600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156106e15781600160a060020a031660048281548110151561174b57fe5b600091825260209091200154600160a060020a031614156118275760048054600019810190811061177857fe5b60009182526020909120015460048054600160a060020a03909216918390811061179e57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556004805460001901906117da9082611bc4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16106e1565b600101611728565b600854600160a060020a031681565b60005433600160a060020a0390811691161461185957600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f19350505050151561188a57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156119095750600160a060020a038116316112e1565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561196057600080fd5b6102c65a03f1151561197157600080fd5b5050506040518051905090506112e1565b600b5460ff1681565b600054600160a060020a031681565b600160a060020a03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156119e057600160a060020a038116600090815260066020526040902060129055611a5a565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a2657600080fd5b6102c65a03f11515611a3757600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611a8e5760129150611b1b565b50600160a060020a038216600090815260066020526040902054801515611b175782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611af557600080fd5b6102c65a03f11515611b0657600080fd5b505050604051805190509150611b1b565b8091505b50919050565b60006b204fce5e3e25026110000000851115611b3c57600080fd5b6b204fce5e3e25026110000000841115611b5557600080fd5b828210611b905760128383031115611b6c57600080fd5b84838303600a0a02670de0b6b3a76400008502811515611b8857fe5b049050611bbc565b60128284031115611ba057600080fd5b84828403600a0a670de0b6b3a7640000860202811515611b8857fe5b949350505050565b815481835581811511611be857600083815260209020611be8918101908301611bff565b505050565b60206040519081016040526000815290565b61057291905b80821115611c195760008155600101611c05565b50905600a165627a7a72305820eb8b3f7bc41e7750516728d944b272aae042b54ec58492bd307c01096ac6fb5b0029

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

000000000000000000000000c0a47dfe034b400b47bdad5fecda2621de6c4d950000000000000000000000002259099897afaf3813fef3284b91d2b227b66ad400000000000000000000000065897adcba42dcca5dd162c647b1cc3e31238490

-----Decoded View---------------
Arg [0] : _uniswapFactory (address): 0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95
Arg [1] : _admin (address): 0x2259099897AfAf3813fef3284b91D2B227b66AD4
Arg [2] : _kyberNetwork (address): 0x65897aDCBa42dcCA5DD162c647b1cC3E31238490

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c0a47dfe034b400b47bdad5fecda2621de6c4d95
Arg [1] : 0000000000000000000000002259099897afaf3813fef3284b91d2b227b66ad4
Arg [2] : 00000000000000000000000065897adcba42dcca5dd162c647b1cc3e31238490


Swarm Source

bzzr://eb8b3f7bc41e7750516728d944b272aae042b54ec58492bd307c01096ac6fb5b

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.