ETH Price: $1,866.18 (-2.26%)

Contract

0x52166528FCC12681aF996e409Ee3a421a4e128A3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set KNC Rate93766082020-01-29 10:57:191886 days ago1580295439IN
0x52166528...1a4e128A3
0 ETH0.004642018
Set KNC Rate92978892020-01-17 9:20:511898 days ago1579252851IN
0x52166528...1a4e128A3
0 ETH0.00464478
Set KNC Rate92715822020-01-13 8:42:231902 days ago1578904943IN
0x52166528...1a4e128A3
0 ETH0.004642018
Send Fee To Wall...92713662020-01-13 7:52:301902 days ago1578901950IN
0x52166528...1a4e128A3
0 ETH0.000143062.3
Send Fee To Wall...92713632020-01-13 7:52:021902 days ago1578901922IN
0x52166528...1a4e128A3
0 ETH0.000105741.7
Send Fee To Wall...92713572020-01-13 7:50:571902 days ago1578901857IN
0x52166528...1a4e128A3
0 ETH0.000143062.3
Send Fee To Wall...92713552020-01-13 7:50:021902 days ago1578901802IN
0x52166528...1a4e128A3
0 ETH0.00012442
Send Fee To Wall...92713532020-01-13 7:49:461902 days ago1578901786IN
0x52166528...1a4e128A3
0 ETH0.000105741.7
Send Fee To Wall...92713522020-01-13 7:49:321902 days ago1578901772IN
0x52166528...1a4e128A3
0 ETH0.000143062.3
Send Fee To Wall...92713502020-01-13 7:49:071902 days ago1578901747IN
0x52166528...1a4e128A3
0 ETH0.000105711.7
Send Fee To Wall...92713372020-01-13 7:46:151902 days ago1578901575IN
0x52166528...1a4e128A3
0 ETH0.000105741.7
Send Fee To Wall...92713352020-01-13 7:46:021902 days ago1578901562IN
0x52166528...1a4e128A3
0 ETH0.000105741.7
Send Fee To Wall...92713272020-01-13 7:43:301902 days ago1578901410IN
0x52166528...1a4e128A3
0 ETH0.000105741.7
Send Fee To Wall...92713252020-01-13 7:43:051902 days ago1578901385IN
0x52166528...1a4e128A3
0 ETH0.000105741.7
Send Fee To Wall...92713232020-01-13 7:42:331902 days ago1578901353IN
0x52166528...1a4e128A3
0 ETH0.000105741.7
Burn Reserve Fee...92713192020-01-13 7:41:491902 days ago1578901309IN
0x52166528...1a4e128A3
0 ETH0.000121691.7
Send Fee To Wall...90980582019-12-13 3:58:081933 days ago1576209488IN
0x52166528...1a4e128A3
0 ETH0.000311065
Send Fee To Wall...90980572019-12-13 3:58:001933 days ago1576209480IN
0x52166528...1a4e128A3
0 ETH0.000311065
Send Fee To Wall...90980542019-12-13 3:57:411933 days ago1576209461IN
0x52166528...1a4e128A3
0 ETH0.000311065
Send Fee To Wall...90980522019-12-13 3:57:091933 days ago1576209429IN
0x52166528...1a4e128A3
0 ETH0.000386065
Send Fee To Wall...90980492019-12-13 3:56:561933 days ago1576209416IN
0x52166528...1a4e128A3
0 ETH0.000311065
Send Fee To Wall...90980422019-12-13 3:55:201933 days ago1576209320IN
0x52166528...1a4e128A3
0 ETH0.000311065
Send Fee To Wall...90980382019-12-13 3:54:311933 days ago1576209271IN
0x52166528...1a4e128A3
0 ETH0.000311065
Send Fee To Wall...90980352019-12-13 3:54:081933 days ago1576209248IN
0x52166528...1a4e128A3
0 ETH0.000311065
Send Fee To Wall...90980212019-12-13 3:50:021933 days ago1576209002IN
0x52166528...1a4e128A3
0 ETH0.000311065
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FeeBurner

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

pragma solidity 0.4.18;

// File: contracts/FeeBurnerInterface.sol

interface FeeBurnerInterface {
    function handleFees (uint tradeWeiAmount, address reserve, address wallet) public returns(bool);
    function setReserveData(address reserve, uint feesInBps, address kncWallet) public;
}

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

/// @title Kyber Network interface
interface KyberNetworkInterface {
    function maxGasPrice() public view returns(uint);
    function getUserCapInWei(address user) public view returns(uint);
    function getUserCapInTokenWei(address user, ERC20 token) public view returns(uint);
    function enabled() public view returns(bool);
    function info(bytes32 id) public view returns(uint);

    function getExpectedRate(ERC20 src, ERC20 dest, uint srcQty) public view
        returns (uint expectedRate, uint slippageRate);

    function tradeWithHint(address trader, ERC20 src, uint srcAmount, ERC20 dest, address destAddress,
        uint maxDestAmount, uint minConversionRate, address walletId, bytes hint) public payable returns(uint);
}

// File: contracts/FeeBurner.sol

interface BurnableToken {
    function transferFrom(address _from, address _to, uint _value) public returns (bool);
    function burnFrom(address _from, uint256 _value) public returns (bool);
}


contract FeeBurner is Withdrawable, FeeBurnerInterface, Utils2 {

    mapping(address=>uint) public reserveFeesInBps;
    mapping(address=>address) public reserveKNCWallet; //wallet holding knc per reserve. from here burn and send fees.
    mapping(address=>uint) public walletFeesInBps; // wallet that is the source of tx is entitled so some fees.
    mapping(address=>uint) public reserveFeeToBurn;
    mapping(address=>uint) public feePayedPerReserve; // track burned fees and sent wallet fees per reserve.
    mapping(address=>mapping(address=>uint)) public reserveFeeToWallet;
    address public taxWallet;
    uint public taxFeeBps = 0; // burned fees are taxed. % out of burned fees.

    BurnableToken public knc;
    KyberNetworkInterface public kyberNetwork;
    uint public kncPerEthRatePrecision = 600 * PRECISION; //--> 1 ether = 600 knc tokens

    function FeeBurner(
        address _admin,
        BurnableToken _kncToken,
        KyberNetworkInterface _kyberNetwork,
        uint _initialKncToEthRatePrecision
    )
        public
    {
        require(_admin != address(0));
        require(_kncToken != address(0));
        require(_kyberNetwork != address(0));
        require(_initialKncToEthRatePrecision != 0);

        kyberNetwork = _kyberNetwork;
        admin = _admin;
        knc = _kncToken;
        kncPerEthRatePrecision = _initialKncToEthRatePrecision;
    }

    event ReserveDataSet(address reserve, uint feeInBps, address kncWallet);

    function setReserveData(address reserve, uint feesInBps, address kncWallet) public onlyOperator {
        require(feesInBps < 100); // make sure it is always < 1%
        require(kncWallet != address(0));
        reserveFeesInBps[reserve] = feesInBps;
        reserveKNCWallet[reserve] = kncWallet;
        ReserveDataSet(reserve, feesInBps, kncWallet);
    }

    event WalletFeesSet(address wallet, uint feesInBps);

    function setWalletFees(address wallet, uint feesInBps) public onlyAdmin {
        require(feesInBps < 10000); // under 100%
        walletFeesInBps[wallet] = feesInBps;
        WalletFeesSet(wallet, feesInBps);
    }

    event TaxFeesSet(uint feesInBps);

    function setTaxInBps(uint _taxFeeBps) public onlyAdmin {
        require(_taxFeeBps < 10000); // under 100%
        taxFeeBps = _taxFeeBps;
        TaxFeesSet(_taxFeeBps);
    }

    event TaxWalletSet(address taxWallet);

    function setTaxWallet(address _taxWallet) public onlyAdmin {
        require(_taxWallet != address(0));
        taxWallet = _taxWallet;
        TaxWalletSet(_taxWallet);
    }

    event KNCRateSet(uint ethToKncRatePrecision, uint kyberEthKnc, uint kyberKncEth, address updater);

    function setKNCRate() public {
        //query kyber for knc rate sell and buy
        uint kyberEthKncRate;
        uint kyberKncEthRate;
        (kyberEthKncRate, ) = kyberNetwork.getExpectedRate(ETH_TOKEN_ADDRESS, ERC20(knc), (10 ** 18));
        (kyberKncEthRate, ) = kyberNetwork.getExpectedRate(ERC20(knc), ETH_TOKEN_ADDRESS, (10 ** 18));

        //check "reasonable" spread == diff not too big. rate wasn't tampered.
        require(kyberEthKncRate * kyberKncEthRate < PRECISION ** 2 * 2);
        require(kyberEthKncRate * kyberKncEthRate > PRECISION ** 2 / 2);

        require(kyberEthKncRate <= MAX_RATE);
        kncPerEthRatePrecision = kyberEthKncRate;
        KNCRateSet(kncPerEthRatePrecision, kyberEthKncRate, kyberKncEthRate, msg.sender);
    }

    event AssignFeeToWallet(address reserve, address wallet, uint walletFee);
    event AssignBurnFees(address reserve, uint burnFee);

    function handleFees(uint tradeWeiAmount, address reserve, address wallet) public returns(bool) {
        require(msg.sender == address(kyberNetwork));
        require(tradeWeiAmount <= MAX_QTY);

        uint kncAmount = calcDestAmount(ETH_TOKEN_ADDRESS, ERC20(knc), tradeWeiAmount, kncPerEthRatePrecision);
        uint fee = kncAmount * reserveFeesInBps[reserve] / 10000;

        uint walletFee = fee * walletFeesInBps[wallet] / 10000;
        require(fee >= walletFee);
        uint feeToBurn = fee - walletFee;

        if (walletFee > 0) {
            reserveFeeToWallet[reserve][wallet] += walletFee;
            AssignFeeToWallet(reserve, wallet, walletFee);
        }

        if (feeToBurn > 0) {
            AssignBurnFees(reserve, feeToBurn);
            reserveFeeToBurn[reserve] += feeToBurn;
        }

        return true;
    }

    event BurnAssignedFees(address indexed reserve, address sender, uint quantity);

    event SendTaxFee(address indexed reserve, address sender, address taxWallet, uint quantity);

    // this function is callable by anyone
    function burnReserveFees(address reserve) public {
        uint burnAmount = reserveFeeToBurn[reserve];
        uint taxToSend = 0;
        require(burnAmount > 2);
        reserveFeeToBurn[reserve] = 1; // leave 1 twei to avoid spikes in gas fee
        if (taxWallet != address(0) && taxFeeBps != 0) {
            taxToSend = (burnAmount - 1) * taxFeeBps / 10000;
            require(burnAmount - 1 > taxToSend);
            burnAmount -= taxToSend;
            if (taxToSend > 0) {
                require(knc.transferFrom(reserveKNCWallet[reserve], taxWallet, taxToSend));
                SendTaxFee(reserve, msg.sender, taxWallet, taxToSend);
            }
        }
        require(knc.burnFrom(reserveKNCWallet[reserve], burnAmount - 1));

        //update reserve "payments" so far
        feePayedPerReserve[reserve] += (taxToSend + burnAmount - 1);

        BurnAssignedFees(reserve, msg.sender, (burnAmount - 1));
    }

    event SendWalletFees(address indexed wallet, address reserve, address sender);

    // this function is callable by anyone
    function sendFeeToWallet(address wallet, address reserve) public {
        uint feeAmount = reserveFeeToWallet[reserve][wallet];
        require(feeAmount > 1);
        reserveFeeToWallet[reserve][wallet] = 1; // leave 1 twei to avoid spikes in gas fee
        require(knc.transferFrom(reserveKNCWallet[reserve], wallet, feeAmount - 1));

        feePayedPerReserve[reserve] += (feeAmount - 1);
        SendWalletFees(wallet, reserve, msg.sender);
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"reserveKNCWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"reserveFeeToWallet","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":"","type":"address"}],"name":"reserveFeeToBurn","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"taxWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"kncPerEthRatePrecision","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"reserveFeesInBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"taxFeeBps","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":true,"inputs":[{"name":"","type":"address"}],"name":"walletFeesInBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"reserve","type":"address"},{"name":"feesInBps","type":"uint256"},{"name":"kncWallet","type":"address"}],"name":"setReserveData","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"wallet","type":"address"},{"name":"feesInBps","type":"uint256"}],"name":"setWalletFees","outputs":[],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[],"name":"setKNCRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_taxFeeBps","type":"uint256"}],"name":"setTaxInBps","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":"","type":"address"}],"name":"feePayedPerReserve","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"wallet","type":"address"},{"name":"reserve","type":"address"}],"name":"sendFeeToWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"knc","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_taxWallet","type":"address"}],"name":"setTaxWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"reserve","type":"address"}],"name":"burnReserveFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tradeWeiAmount","type":"uint256"},{"name":"reserve","type":"address"},{"name":"wallet","type":"address"}],"name":"handleFees","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_admin","type":"address"},{"name":"_kncToken","type":"address"},{"name":"_kyberNetwork","type":"address"},{"name":"_initialKncToEthRatePrecision","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"reserve","type":"address"},{"indexed":false,"name":"feeInBps","type":"uint256"},{"indexed":false,"name":"kncWallet","type":"address"}],"name":"ReserveDataSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"wallet","type":"address"},{"indexed":false,"name":"feesInBps","type":"uint256"}],"name":"WalletFeesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"feesInBps","type":"uint256"}],"name":"TaxFeesSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"taxWallet","type":"address"}],"name":"TaxWalletSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"ethToKncRatePrecision","type":"uint256"},{"indexed":false,"name":"kyberEthKnc","type":"uint256"},{"indexed":false,"name":"kyberKncEth","type":"uint256"},{"indexed":false,"name":"updater","type":"address"}],"name":"KNCRateSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"reserve","type":"address"},{"indexed":false,"name":"wallet","type":"address"},{"indexed":false,"name":"walletFee","type":"uint256"}],"name":"AssignFeeToWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"reserve","type":"address"},{"indexed":false,"name":"burnFee","type":"uint256"}],"name":"AssignBurnFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"reserve","type":"address"},{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"quantity","type":"uint256"}],"name":"BurnAssignedFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"reserve","type":"address"},{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"taxWallet","type":"address"},{"indexed":false,"name":"quantity","type":"uint256"}],"name":"SendTaxFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"wallet","type":"address"},{"indexed":false,"name":"reserve","type":"address"},{"indexed":false,"name":"sender","type":"address"}],"name":"SendWalletFees","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"}]

60606040526000600e55682086ac351052600000601155341561002157600080fd5b604051608080611dd78339810160405280805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925085161515905061007c57600080fd5b600160a060020a038316151561009157600080fd5b600160a060020a03821615156100a657600080fd5b8015156100b257600080fd5b60108054600160a060020a0319908116600160a060020a0394851617909155600080548216958416959095178555600f805490911693909216929092179055601155611cd390819061010490396000f3006060604052600436106101875763ffffffff60e060020a60003504166301a12fd3811461018c5780630a377f3a146101ad57806322dbf6d2146101e8578063267822471461021f57806327a099d8146102325780632b84fe83146102985780632dc0562d146102b757806330125416146102ca578063384c4d2f146102dd5780633b215823146102fc5780633ccdbb281461030f578063408ee7fe1461033857806345ab63b91461035757806346b8c49e1461037657806365dfc20f1461039f57806375829def146103c157806377f50f97146103e05780637acc8678146103f35780637c423f54146104125780637f3681f6146104255780639870d7fe146104385780639fad2dcb14610457578063ac8a584a1461046d578063b78b842d1461048c578063ce56c4541461049f578063d4fac45d146104c1578063dc93f7c9146104e6578063dd3ff4f614610505578063e61387e01461052a578063ea414b281461053d578063f6486cad1461055c578063f851a4401461057b578063fd062d3b1461058e575b600080fd5b341561019757600080fd5b6101ab600160a060020a03600435166105ca565b005b34156101b857600080fd5b6101cc600160a060020a036004351661073a565b604051600160a060020a03909116815260200160405180910390f35b34156101f357600080fd5b61020d600160a060020a0360043581169060243516610755565b60405190815260200160405180910390f35b341561022a57600080fd5b6101cc610772565b341561023d57600080fd5b610245610781565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561028457808201518382015260200161026c565b505050509050019250505060405180910390f35b34156102a357600080fd5b61020d600160a060020a03600435166107ea565b34156102c257600080fd5b6101cc6107fc565b34156102d557600080fd5b61020d61080b565b34156102e857600080fd5b61020d600160a060020a0360043516610811565b341561030757600080fd5b61020d610823565b341561031a57600080fd5b6101ab600160a060020a036004358116906024359060443516610829565b341561034357600080fd5b6101ab600160a060020a0360043516610920565b341561036257600080fd5b61020d600160a060020a0360043516610a1c565b341561038157600080fd5b6101ab600160a060020a036004358116906024359060443516610a2e565b34156103aa57600080fd5b6101ab600160a060020a0360043516602435610b10565b34156103cc57600080fd5b6101ab600160a060020a0360043516610b9f565b34156103eb57600080fd5b6101ab610c3a565b34156103fe57600080fd5b6101ab600160a060020a0360043516610cd4565b341561041d57600080fd5b610245610db6565b341561043057600080fd5b6101ab610e1c565b341561044357600080fd5b6101ab600160a060020a0360043516611038565b341561046257600080fd5b6101ab600435611108565b341561047857600080fd5b6101ab600160a060020a036004351661116c565b341561049757600080fd5b6101cc6112d8565b34156104aa57600080fd5b6101ab600435600160a060020a03602435166112e7565b34156104cc57600080fd5b61020d600160a060020a036004358116906024351661137a565b34156104f157600080fd5b61020d600160a060020a036004351661142c565b341561051057600080fd5b6101ab600160a060020a036004358116906024351661143e565b341561053557600080fd5b6101cc6115ae565b341561054857600080fd5b6101ab600160a060020a03600435166115bd565b341561056757600080fd5b6101ab600160a060020a0360043516611648565b341561058657600080fd5b6101cc6118f2565b341561059957600080fd5b6105b6600435600160a060020a0360243581169060443516611901565b604051901515815260200160405180910390f35b6000805433600160a060020a039081169116146105e657600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561060d57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156107365781600160a060020a031660058281548110151561065257fe5b600091825260209091200154600160a060020a0316141561072e5760058054600019810190811061067f57fe5b60009182526020909120015460058054600160a060020a0390921691839081106106a557fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560058054906106e1906000198301611c4e565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a1610736565b60010161062f565b5050565b600860205260009081526040902054600160a060020a031681565b600c60209081526000928352604080842090915290825290205481565b600154600160a060020a031681565b610789611c77565b60048054806020026020016040519081016040528092919081815260200182805480156107df57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116107c1575b505050505090505b90565b600a6020526000908152604090205481565b600d54600160a060020a031681565b60115481565b60076020526000908152604090205481565b600e5481565b60005433600160a060020a0390811691161461084457600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156108a157600080fd5b6102c65a03f115156108b257600080fd5b5050506040518051905015156108c757600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a0390811691161461093b57600080fd5b600160a060020a03811660009081526003602052604090205460ff161561096157600080fd5b6005546032901061097157600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff1916600190811790915560058054909181016109f08382611c4e565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60096020526000908152604090205481565b600160a060020a03331660009081526002602052604090205460ff161515610a5557600080fd5b60648210610a6257600080fd5b600160a060020a0381161515610a7757600080fd5b600160a060020a0383811660009081526007602090815260408083208690556008909152908190208054600160a060020a031916928416929092179091557f999efec8241b9b7a1d9c2d2e207cde178cb3a02ca6a94d070eecb369674ead6f9084908490849051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a03908116911614610b2b57600080fd5b6127108110610b3957600080fd5b600160a060020a038216600090815260096020526040908190208290557f19f0c31fd2313f709ad6b9f15595720ff5765b72b394025288ac4f355fee0952908390839051600160a060020a03909216825260208201526040908101905180910390a15050565b60005433600160a060020a03908116911614610bba57600080fd5b600160a060020a0381161515610bcf57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610c5557600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a03908116911614610cef57600080fd5b600160a060020a0381161515610d0457600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b610dbe611c77565b60058054806020026020016040519081016040528092919081815260200182805480156107df57602002820191906000526020600020908154600160a060020a031681526001909101906020018083116107c1575050505050905090565b601054600f546000918291600160a060020a039182169163809a9e559173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9116670de0b6b3a7640000856040516040015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015260448101919091526064016040805180830381600087803b1515610eaf57600080fd5b6102c65a03f11515610ec057600080fd5b50505060405180519060200180515050601054600f54919350600160a060020a039081169163809a9e55911673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee670de0b6b3a764000060006040516040015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015260448101919091526064016040805180830381600087803b1515610f6157600080fd5b6102c65a03f11515610f7257600080fd5b505050604051805190602001805150909150506f01812f9cf7920e2b66973e200000000082820210610fa357600080fd5b6e604be73de4838ad9a5cf880000000081830211610fc057600080fd5b69d3c21bcecceda1000000821115610fd757600080fd5b60118290557fe55ada78a782c5b59f55b44255857da4f2ed737a5a94b83e9275ee710d0d48c4828083336040519384526020840192909252604080840191909152600160a060020a0390911660608301526080909101905180910390a15050565b60005433600160a060020a0390811691161461105357600080fd5b600160a060020a03811660009081526002602052604090205460ff161561107957600080fd5b6004546032901061108957600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff1916600190811790915560048054909181016109f08382611c4e565b60005433600160a060020a0390811691161461112357600080fd5b612710811061113157600080fd5b600e8190557f560f2dab6b3f89e548b63a9eabb6e43ec0e70bb81bdc69e5dc578c72bab629f58160405190815260200160405180910390a150565b6000805433600160a060020a0390811691161461118857600080fd5b600160a060020a03821660009081526002602052604090205460ff1615156111af57600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156107365781600160a060020a03166004828154811015156111f457fe5b600091825260209091200154600160a060020a031614156112d05760048054600019810190811061122157fe5b60009182526020909120015460048054600160a060020a03909216918390811061124757fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556004805460001901906112839082611c4e565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a1610736565b6001016111d1565b601054600160a060020a031681565b60005433600160a060020a0390811691161461130257600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f19350505050151561133357600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113b25750600160a060020a03811631611426565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561140957600080fd5b6102c65a03f1151561141a57600080fd5b50505060405180519150505b92915050565b600b6020526000908152604090205481565b600160a060020a038082166000908152600c60209081526040808320938616835292905220546001811161147157600080fd5b600160a060020a038083166000818152600c602090815260408083208886168452825280832060019055600f54938352600890915280822054928416936323b872dd931691879160001987019190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561151357600080fd5b6102c65a03f1151561152457600080fd5b50505060405180519050151561153957600080fd5b600160a060020a038083166000908152600b60205260409081902080548401600019019055908416907fb3f3e7375c0c0c4f7dd94069a5a4e68667827491318da786c818b8c7a794924e908490339051600160a060020a039283168152911660208201526040908101905180910390a2505050565b600f54600160a060020a031681565b60005433600160a060020a039081169116146115d857600080fd5b600160a060020a03811615156115ed57600080fd5b600d8054600160a060020a031916600160a060020a0383161790557f847d0f7f2b16c8dd0b72c0606e65e8bf1b624633d37905b0e08145a295ab875881604051600160a060020a03909116815260200160405180910390a150565b600160a060020a0381166000908152600a6020526040812054906002821161166f57600080fd5b600160a060020a038084166000908152600a6020526040902060019055600d54161580159061169f5750600e5415155b156117e05750600e54612710600019830191820204908190116116c157600080fd5b808203915060008111156117e057600f54600160a060020a0384811660009081526008602052604080822054600d54948416946323b872dd9491821693911691869190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561175857600080fd5b6102c65a03f1151561176957600080fd5b50505060405180519050151561177e57600080fd5b600d54600160a060020a03808516917f540d888e67a7f36992e365be9fddab5e2fd60e27b220d330c18f04650fd562e09133911684604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a25b600f54600160a060020a0384811660009081526008602052604080822054938316936379cc6790931691600019870191516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561185857600080fd5b6102c65a03f1151561186957600080fd5b50505060405180519050151561187e57600080fd5b600160a060020a0383166000818152600b6020526040908190208054848601016000199081019091557f2f8d2d194cbe1816411754a2fc9478a11f0707da481b11cff7c69791eb877ee191339186019051600160a060020a03909216825260208201526040908101905180910390a2505050565b600054600160a060020a031681565b601054600090819081908190819033600160a060020a0390811691161461192757600080fd5b6b204fce5e3e2502611000000088111561194057600080fd5b600f546011546119739173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee91600160a060020a03909116908b90611ad0565b600160a060020a038816600090815260076020526040902054909450612710908502600160a060020a0388166000908152600960205260409020549190049350612710908402049150818310156119c957600080fd5b508082036000821115611a5657600160a060020a038088166000908152600c60209081526040808320938a1683529290528190208054840190557f366bc34352215bf0bd3b527cfd6718605e1f5938777e42bcd8ed92f578368f529088908890859051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15b6000811115611ac2577ff838f6ddc89706878e3c3e698e9b5cbfbf2c0e3d3dcd0bd2e00f1ccf313e01858782604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a0387166000908152600a602052604090208054820190555b506001979650505050505050565b6000611aee83611adf87611af9565b611ae887611af9565b85611bbd565b90505b949350505050565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611b2a5760129150611bb7565b50600160a060020a038216600090815260066020526040902054801515611bb35782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b9157600080fd5b6102c65a03f11515611ba257600080fd5b505050604051805190509150611bb7565b8091505b50919050565b60006b204fce5e3e25026110000000851115611bd857600080fd5b69d3c21bcecceda1000000821115611bef57600080fd5b838310611c225760128484031115611c0657600080fd5b670de0b6b3a7640000858302858503600a0a025b049050611af1565b60128385031115611c3257600080fd5b828403600a0a670de0b6b3a764000002828602811515611c1a57fe5b815481835581811511611c7257600083815260209020611c72918101908301611c89565b505050565b60206040519081016040526000815290565b6107e791905b80821115611ca35760008155600101611c8f565b50905600a165627a7a72305820f5f2bea9ace551bb341b76e02cdbb17a0b71c4cbad5d961be00b8c8e3bca179e0029000000000000000000000000abbbcdba6b65c429dc7bb90a65d6ded9b74e15a6000000000000000000000000dd974d5c2e2928dea5f71b9825b8b646686bd2000000000000000000000000009ae49c0d7f8f9ef4b864e004fe86ac8294e209500000000000000000000000000000000000000000000000000000000000900e18

Deployed Bytecode

0x6060604052600436106101875763ffffffff60e060020a60003504166301a12fd3811461018c5780630a377f3a146101ad57806322dbf6d2146101e8578063267822471461021f57806327a099d8146102325780632b84fe83146102985780632dc0562d146102b757806330125416146102ca578063384c4d2f146102dd5780633b215823146102fc5780633ccdbb281461030f578063408ee7fe1461033857806345ab63b91461035757806346b8c49e1461037657806365dfc20f1461039f57806375829def146103c157806377f50f97146103e05780637acc8678146103f35780637c423f54146104125780637f3681f6146104255780639870d7fe146104385780639fad2dcb14610457578063ac8a584a1461046d578063b78b842d1461048c578063ce56c4541461049f578063d4fac45d146104c1578063dc93f7c9146104e6578063dd3ff4f614610505578063e61387e01461052a578063ea414b281461053d578063f6486cad1461055c578063f851a4401461057b578063fd062d3b1461058e575b600080fd5b341561019757600080fd5b6101ab600160a060020a03600435166105ca565b005b34156101b857600080fd5b6101cc600160a060020a036004351661073a565b604051600160a060020a03909116815260200160405180910390f35b34156101f357600080fd5b61020d600160a060020a0360043581169060243516610755565b60405190815260200160405180910390f35b341561022a57600080fd5b6101cc610772565b341561023d57600080fd5b610245610781565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561028457808201518382015260200161026c565b505050509050019250505060405180910390f35b34156102a357600080fd5b61020d600160a060020a03600435166107ea565b34156102c257600080fd5b6101cc6107fc565b34156102d557600080fd5b61020d61080b565b34156102e857600080fd5b61020d600160a060020a0360043516610811565b341561030757600080fd5b61020d610823565b341561031a57600080fd5b6101ab600160a060020a036004358116906024359060443516610829565b341561034357600080fd5b6101ab600160a060020a0360043516610920565b341561036257600080fd5b61020d600160a060020a0360043516610a1c565b341561038157600080fd5b6101ab600160a060020a036004358116906024359060443516610a2e565b34156103aa57600080fd5b6101ab600160a060020a0360043516602435610b10565b34156103cc57600080fd5b6101ab600160a060020a0360043516610b9f565b34156103eb57600080fd5b6101ab610c3a565b34156103fe57600080fd5b6101ab600160a060020a0360043516610cd4565b341561041d57600080fd5b610245610db6565b341561043057600080fd5b6101ab610e1c565b341561044357600080fd5b6101ab600160a060020a0360043516611038565b341561046257600080fd5b6101ab600435611108565b341561047857600080fd5b6101ab600160a060020a036004351661116c565b341561049757600080fd5b6101cc6112d8565b34156104aa57600080fd5b6101ab600435600160a060020a03602435166112e7565b34156104cc57600080fd5b61020d600160a060020a036004358116906024351661137a565b34156104f157600080fd5b61020d600160a060020a036004351661142c565b341561051057600080fd5b6101ab600160a060020a036004358116906024351661143e565b341561053557600080fd5b6101cc6115ae565b341561054857600080fd5b6101ab600160a060020a03600435166115bd565b341561056757600080fd5b6101ab600160a060020a0360043516611648565b341561058657600080fd5b6101cc6118f2565b341561059957600080fd5b6105b6600435600160a060020a0360243581169060443516611901565b604051901515815260200160405180910390f35b6000805433600160a060020a039081169116146105e657600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561060d57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156107365781600160a060020a031660058281548110151561065257fe5b600091825260209091200154600160a060020a0316141561072e5760058054600019810190811061067f57fe5b60009182526020909120015460058054600160a060020a0390921691839081106106a557fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560058054906106e1906000198301611c4e565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a1610736565b60010161062f565b5050565b600860205260009081526040902054600160a060020a031681565b600c60209081526000928352604080842090915290825290205481565b600154600160a060020a031681565b610789611c77565b60048054806020026020016040519081016040528092919081815260200182805480156107df57602002820191906000526020600020905b8154600160a060020a031681526001909101906020018083116107c1575b505050505090505b90565b600a6020526000908152604090205481565b600d54600160a060020a031681565b60115481565b60076020526000908152604090205481565b600e5481565b60005433600160a060020a0390811691161461084457600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156108a157600080fd5b6102c65a03f115156108b257600080fd5b5050506040518051905015156108c757600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a0390811691161461093b57600080fd5b600160a060020a03811660009081526003602052604090205460ff161561096157600080fd5b6005546032901061097157600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff1916600190811790915560058054909181016109f08382611c4e565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60096020526000908152604090205481565b600160a060020a03331660009081526002602052604090205460ff161515610a5557600080fd5b60648210610a6257600080fd5b600160a060020a0381161515610a7757600080fd5b600160a060020a0383811660009081526007602090815260408083208690556008909152908190208054600160a060020a031916928416929092179091557f999efec8241b9b7a1d9c2d2e207cde178cb3a02ca6a94d070eecb369674ead6f9084908490849051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a03908116911614610b2b57600080fd5b6127108110610b3957600080fd5b600160a060020a038216600090815260096020526040908190208290557f19f0c31fd2313f709ad6b9f15595720ff5765b72b394025288ac4f355fee0952908390839051600160a060020a03909216825260208201526040908101905180910390a15050565b60005433600160a060020a03908116911614610bba57600080fd5b600160a060020a0381161515610bcf57600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a03908116911614610c5557600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a03908116911614610cef57600080fd5b600160a060020a0381161515610d0457600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b610dbe611c77565b60058054806020026020016040519081016040528092919081815260200182805480156107df57602002820191906000526020600020908154600160a060020a031681526001909101906020018083116107c1575050505050905090565b601054600f546000918291600160a060020a039182169163809a9e559173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9116670de0b6b3a7640000856040516040015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015260448101919091526064016040805180830381600087803b1515610eaf57600080fd5b6102c65a03f11515610ec057600080fd5b50505060405180519060200180515050601054600f54919350600160a060020a039081169163809a9e55911673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee670de0b6b3a764000060006040516040015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015260448101919091526064016040805180830381600087803b1515610f6157600080fd5b6102c65a03f11515610f7257600080fd5b505050604051805190602001805150909150506f01812f9cf7920e2b66973e200000000082820210610fa357600080fd5b6e604be73de4838ad9a5cf880000000081830211610fc057600080fd5b69d3c21bcecceda1000000821115610fd757600080fd5b60118290557fe55ada78a782c5b59f55b44255857da4f2ed737a5a94b83e9275ee710d0d48c4828083336040519384526020840192909252604080840191909152600160a060020a0390911660608301526080909101905180910390a15050565b60005433600160a060020a0390811691161461105357600080fd5b600160a060020a03811660009081526002602052604090205460ff161561107957600080fd5b6004546032901061108957600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff1916600190811790915560048054909181016109f08382611c4e565b60005433600160a060020a0390811691161461112357600080fd5b612710811061113157600080fd5b600e8190557f560f2dab6b3f89e548b63a9eabb6e43ec0e70bb81bdc69e5dc578c72bab629f58160405190815260200160405180910390a150565b6000805433600160a060020a0390811691161461118857600080fd5b600160a060020a03821660009081526002602052604090205460ff1615156111af57600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156107365781600160a060020a03166004828154811015156111f457fe5b600091825260209091200154600160a060020a031614156112d05760048054600019810190811061122157fe5b60009182526020909120015460048054600160a060020a03909216918390811061124757fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556004805460001901906112839082611c4e565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a1610736565b6001016111d1565b601054600160a060020a031681565b60005433600160a060020a0390811691161461130257600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f19350505050151561133357600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113b25750600160a060020a03811631611426565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561140957600080fd5b6102c65a03f1151561141a57600080fd5b50505060405180519150505b92915050565b600b6020526000908152604090205481565b600160a060020a038082166000908152600c60209081526040808320938616835292905220546001811161147157600080fd5b600160a060020a038083166000818152600c602090815260408083208886168452825280832060019055600f54938352600890915280822054928416936323b872dd931691879160001987019190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561151357600080fd5b6102c65a03f1151561152457600080fd5b50505060405180519050151561153957600080fd5b600160a060020a038083166000908152600b60205260409081902080548401600019019055908416907fb3f3e7375c0c0c4f7dd94069a5a4e68667827491318da786c818b8c7a794924e908490339051600160a060020a039283168152911660208201526040908101905180910390a2505050565b600f54600160a060020a031681565b60005433600160a060020a039081169116146115d857600080fd5b600160a060020a03811615156115ed57600080fd5b600d8054600160a060020a031916600160a060020a0383161790557f847d0f7f2b16c8dd0b72c0606e65e8bf1b624633d37905b0e08145a295ab875881604051600160a060020a03909116815260200160405180910390a150565b600160a060020a0381166000908152600a6020526040812054906002821161166f57600080fd5b600160a060020a038084166000908152600a6020526040902060019055600d54161580159061169f5750600e5415155b156117e05750600e54612710600019830191820204908190116116c157600080fd5b808203915060008111156117e057600f54600160a060020a0384811660009081526008602052604080822054600d54948416946323b872dd9491821693911691869190516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b151561175857600080fd5b6102c65a03f1151561176957600080fd5b50505060405180519050151561177e57600080fd5b600d54600160a060020a03808516917f540d888e67a7f36992e365be9fddab5e2fd60e27b220d330c18f04650fd562e09133911684604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a25b600f54600160a060020a0384811660009081526008602052604080822054938316936379cc6790931691600019870191516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561185857600080fd5b6102c65a03f1151561186957600080fd5b50505060405180519050151561187e57600080fd5b600160a060020a0383166000818152600b6020526040908190208054848601016000199081019091557f2f8d2d194cbe1816411754a2fc9478a11f0707da481b11cff7c69791eb877ee191339186019051600160a060020a03909216825260208201526040908101905180910390a2505050565b600054600160a060020a031681565b601054600090819081908190819033600160a060020a0390811691161461192757600080fd5b6b204fce5e3e2502611000000088111561194057600080fd5b600f546011546119739173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee91600160a060020a03909116908b90611ad0565b600160a060020a038816600090815260076020526040902054909450612710908502600160a060020a0388166000908152600960205260409020549190049350612710908402049150818310156119c957600080fd5b508082036000821115611a5657600160a060020a038088166000908152600c60209081526040808320938a1683529290528190208054840190557f366bc34352215bf0bd3b527cfd6718605e1f5938777e42bcd8ed92f578368f529088908890859051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15b6000811115611ac2577ff838f6ddc89706878e3c3e698e9b5cbfbf2c0e3d3dcd0bd2e00f1ccf313e01858782604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a0387166000908152600a602052604090208054820190555b506001979650505050505050565b6000611aee83611adf87611af9565b611ae887611af9565b85611bbd565b90505b949350505050565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611b2a5760129150611bb7565b50600160a060020a038216600090815260066020526040902054801515611bb35782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611b9157600080fd5b6102c65a03f11515611ba257600080fd5b505050604051805190509150611bb7565b8091505b50919050565b60006b204fce5e3e25026110000000851115611bd857600080fd5b69d3c21bcecceda1000000821115611bef57600080fd5b838310611c225760128484031115611c0657600080fd5b670de0b6b3a7640000858302858503600a0a025b049050611af1565b60128385031115611c3257600080fd5b828403600a0a670de0b6b3a764000002828602811515611c1a57fe5b815481835581811511611c7257600083815260209020611c72918101908301611c89565b505050565b60206040519081016040526000815290565b6107e791905b80821115611ca35760008155600101611c8f565b50905600a165627a7a72305820f5f2bea9ace551bb341b76e02cdbb17a0b71c4cbad5d961be00b8c8e3bca179e0029

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

000000000000000000000000abbbcdba6b65c429dc7bb90a65d6ded9b74e15a6000000000000000000000000dd974d5c2e2928dea5f71b9825b8b646686bd2000000000000000000000000009ae49c0d7f8f9ef4b864e004fe86ac8294e209500000000000000000000000000000000000000000000000000000000000900e18

-----Decoded View---------------
Arg [0] : _admin (address): 0xabBBcdBA6B65C429dC7bB90A65D6dED9B74e15A6
Arg [1] : _kncToken (address): 0xdd974D5C2e2928deA5F71b9825b8b646686BD200
Arg [2] : _kyberNetwork (address): 0x9ae49C0d7F8F9EF4B864e004FE86Ac8294E20950
Arg [3] : _initialKncToEthRatePrecision (uint256): 9440792

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000abbbcdba6b65c429dc7bb90a65d6ded9b74e15a6
Arg [1] : 000000000000000000000000dd974d5c2e2928dea5f71b9825b8b646686bd200
Arg [2] : 0000000000000000000000009ae49c0d7f8f9ef4b864e004fe86ac8294e20950
Arg [3] : 0000000000000000000000000000000000000000000000000000000000900e18


Swarm Source

bzzr://f5f2bea9ace551bb341b76e02cdbb17a0b71c4cbad5d961be00b8c8e3bca179e

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  ]

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.