More Info
Private Name Tags
ContractCreator
Latest 11 from a total of 11 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
List Token | 7994114 | 2065 days ago | IN | 0 ETH | 0.00183156 | ||||
List Token | 7457031 | 2148 days ago | IN | 0 ETH | 0.00377249 | ||||
List Token | 7277829 | 2177 days ago | IN | 0 ETH | 0.00156758 | ||||
List Token | 7219287 | 2190 days ago | IN | 0 ETH | 0.00073796 | ||||
Set Kyber Networ... | 7215124 | 2191 days ago | IN | 0 ETH | 0.0003625 | ||||
Enable Trade | 7215066 | 2191 days ago | IN | 0 ETH | 0.00051669 | ||||
Transfer Admin Q... | 7215050 | 2191 days ago | IN | 0 ETH | 0.0001923 | ||||
Remove Operator | 7215050 | 2191 days ago | IN | 0 ETH | 0.00014932 | ||||
List Token | 7215050 | 2191 days ago | IN | 0 ETH | 0.0005523 | ||||
Add Operator | 7215050 | 2191 days ago | IN | 0 ETH | 0.00043366 | ||||
Add Operator | 7215050 | 2191 days ago | IN | 0 ETH | 0.00052366 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
8998043 | 1906 days ago | 0.29922007 ETH | ||||
8998043 | 1906 days ago | 0.29997 ETH | ||||
8994774 | 1907 days ago | 0.70888155 ETH | ||||
8994774 | 1907 days ago | 0.71065819 ETH | ||||
8990898 | 1908 days ago | 1.13439232 ETH | ||||
8990898 | 1908 days ago | 1.13723541 ETH | ||||
8986107 | 1908 days ago | 0.68571831 ETH | ||||
8986107 | 1908 days ago | 0.6874369 ETH | ||||
8982469 | 1909 days ago | 0.84739722 ETH | ||||
8982469 | 1909 days ago | 0.84952102 ETH | ||||
8816774 | 1936 days ago | 0.36907429 ETH | ||||
8816774 | 1936 days ago | 0.36999929 ETH | ||||
8805011 | 1938 days ago | 0.59785923 ETH | ||||
8805011 | 1938 days ago | 0.59935763 ETH | ||||
8804996 | 1938 days ago | 0.59236036 ETH | ||||
8804996 | 1938 days ago | 0.59384497 ETH | ||||
8667975 | 1960 days ago | 0.35235614 ETH | ||||
8667975 | 1960 days ago | 0.35323924 ETH | ||||
8577265 | 1974 days ago | 0.02378814 ETH | ||||
8577265 | 1974 days ago | 0.02384775 ETH | ||||
8522906 | 1982 days ago | 1.995 ETH | ||||
8522906 | 1982 days ago | 2 ETH | ||||
8498981 | 1986 days ago | 2.01625815 ETH | ||||
8498981 | 1986 days ago | 2.02131143 ETH | ||||
8495694 | 1987 days ago | 0.14940056 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
KyberDutchXReserve
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-02-13 */ 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/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/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/dutchX/KyberDutchXReserve.sol interface WETH9 { function approve(address spender, uint amount) public returns(bool); function withdraw(uint amount) public; function deposit() public payable; } interface DutchXExchange { // Two functions below are in fact: mapping (address => mapping (address => uint)) public sellVolumesCurrent; // Token => Token => amount function buyVolumes(address sellToken, address buyToken) public view returns (uint); function sellVolumesCurrent(address sellToken, address buyToken) public view returns (uint); function deposit(address tokenAddress,uint amount) public returns(uint); function postBuyOrder(address sellToken,address buyToken,uint auctionIndex,uint amount) public returns (uint); function claimBuyerFunds(address sellToken, address buyToken, address user, uint auctionIndex) public returns(uint returned, uint frtsIssued); function withdraw(address tokenAddress,uint amount) public returns (uint); function getAuctionIndex(address sellToken, address buyToken) public view returns(uint index); function getFeeRatio(address user) public view returns (uint num, uint den); // feeRatio < 10^4 function getCurrentAuctionPrice(address sellToken, address buyToken, uint auctionIndex) public view returns (uint num, uint den); } contract KyberDutchXReserve is KyberReserveInterface, Withdrawable, Utils2 { uint public constant BPS = 10000; uint public constant DEFAULT_KYBER_FEE_BPS = 25; uint public feeBps = DEFAULT_KYBER_FEE_BPS; uint public dutchXFeeNum; uint public dutchXFeeDen; DutchXExchange public dutchX; address public kyberNetwork; WETH9 public weth; mapping(address => bool) public listedTokens; bool public tradeEnabled; /** Constructor */ function KyberDutchXReserve( DutchXExchange _dutchX, address _admin, address _kyberNetwork, WETH9 _weth ) public { require(address(_dutchX) != address(0)); require(_admin != address(0)); require(_kyberNetwork != address(0)); require(_weth != WETH9(0)); dutchX = _dutchX; admin = _admin; kyberNetwork = _kyberNetwork; weth = _weth; setDutchXFee(); require(weth.approve(dutchX, 2 ** 255)); setDecimals(ETH_TOKEN_ADDRESS); } function() public payable { // anyone can deposit ether } struct AuctionData { uint index; ERC20 srcToken; ERC20 dstToken; uint priceNum; // numerator uint priceDen; // denominator } /** Returns rate = dest quantity / source quantity. */ function getConversionRate( ERC20 src, ERC20 dest, uint srcQty, uint blockNumber ) public view returns(uint) { blockNumber; if (!tradeEnabled) return 0; if (src == ETH_TOKEN_ADDRESS) { if (!listedTokens[dest]) return 0; } else if (dest == ETH_TOKEN_ADDRESS) { if (!listedTokens[src]) return 0; } else { return 0; } AuctionData memory auctionData = getAuctionData(src, dest); if (auctionData.index == 0) return 0; (auctionData.priceNum, auctionData.priceDen) = dutchX.getCurrentAuctionPrice( auctionData.dstToken, auctionData.srcToken, auctionData.index ); if (auctionData.priceNum == 0 || auctionData.priceDen == 0) return 0; if (!sufficientLiquidity(auctionData.srcToken, srcQty, auctionData.dstToken, auctionData.priceNum, auctionData.priceDen)) { return 0; } // if source is Eth, reduce kyber fee from source. uint actualSrcQty = (src == ETH_TOKEN_ADDRESS) ? srcQty * (BPS - feeBps) / BPS : srcQty; if (actualSrcQty == 0 || actualSrcQty * auctionData.priceDen < actualSrcQty) return 0; uint convertedQty = (actualSrcQty * auctionData.priceDen) / auctionData.priceNum; // reduce dutchX fees convertedQty = convertedQty * (dutchXFeeDen - dutchXFeeNum) / dutchXFeeDen; // if destination is Eth, reduce kyber fee from destination. convertedQty = (dest == ETH_TOKEN_ADDRESS) ? convertedQty * (BPS - feeBps) / BPS : convertedQty; // here use original srcQty, which will give the real rate (as seen by internal kyberNetwork) return calcRateFromQty( srcQty, /* srcAmount */ convertedQty, /* destAmount */ getDecimals(src), /* srcDecimals */ getDecimals(dest) /* dstDecimals */ ); } event TradeExecute( address indexed sender, address src, uint srcAmount, address destToken, uint destAmount, address destAddress, uint auctionIndex ); function trade( ERC20 srcToken, uint srcAmount, ERC20 destToken, address destAddress, uint conversionRate, bool validate ) public payable returns(bool) { validate; require(tradeEnabled); require(msg.sender == kyberNetwork); AuctionData memory auctionData = getAuctionData(srcToken, destToken); require(auctionData.index != 0); uint actualSrcQty; if (srcToken == ETH_TOKEN_ADDRESS){ require(srcAmount == msg.value); actualSrcQty = srcAmount * (BPS - feeBps) / BPS; weth.deposit.value(actualSrcQty)(); } else { require(msg.value == 0); require(srcToken.transferFrom(msg.sender, address(this), srcAmount)); actualSrcQty = srcAmount; } dutchX.deposit(auctionData.srcToken, actualSrcQty); dutchX.postBuyOrder(auctionData.dstToken, auctionData.srcToken, auctionData.index, actualSrcQty); uint destAmount; uint frtsIssued; (destAmount, frtsIssued) = dutchX.claimBuyerFunds( auctionData.dstToken, auctionData.srcToken, this, auctionData.index ); dutchX.withdraw(auctionData.dstToken, destAmount); if (destToken == ETH_TOKEN_ADDRESS) { weth.withdraw(destAmount); destAmount = destAmount * (BPS - feeBps) / BPS; destAddress.transfer(destAmount); } else { require(auctionData.dstToken.transfer(destAddress, destAmount)); } require(conversionRate <= calcRateFromQty( srcAmount, /* srcAmount */ destAmount, /* destAmount */ getDecimals(srcToken), /* srcDecimals */ getDecimals(destToken) /* dstDecimals */ )); TradeExecute( msg.sender, /* sender */ srcToken, /* src */ srcAmount, /* srcAmount */ destToken, /* destToken */ destAmount, /* destAmount */ destAddress, /* destAddress */ auctionData.index ); return true; } event FeeUpdated( uint bps ); function setFee(uint bps) public onlyAdmin { require(bps <= BPS); feeBps = bps; FeeUpdated(bps); } event TokenListed( ERC20 token ); function listToken(ERC20 token) public onlyAdmin { require(address(token) != address(0)); listedTokens[token] = true; setDecimals(token); require(token.approve(dutchX, 2**255)); TokenListed(token); } event TokenDelisted(ERC20 token); function delistToken(ERC20 token) public onlyAdmin { require(listedTokens[token]); listedTokens[token] = false; TokenDelisted(token); } event TradeEnabled( bool enable ); function setDutchXFee() public { (dutchXFeeNum, dutchXFeeDen) = dutchX.getFeeRatio(this); // can't use denominator 0 (EVM bad instruction) if (dutchXFeeDen == 0) { tradeEnabled = false; } TradeEnabled(tradeEnabled); } function disableTrade() public onlyAlerter returns(bool) { tradeEnabled = false; TradeEnabled(tradeEnabled); return true; } function enableTrade() public onlyAdmin returns(bool) { tradeEnabled = true; TradeEnabled(tradeEnabled); return true; } event KyberNetworkSet( address kyberNetwork ); function setKyberNetwork( address _kyberNetwork ) public onlyAdmin { require(_kyberNetwork != address(0)); kyberNetwork = _kyberNetwork; KyberNetworkSet(kyberNetwork); } event Execution(bool success, address caller, address destination, uint value, bytes data); function executeTransaction(address destination, uint value, bytes data) public onlyOperator { if (destination.call.value(value)(data)) { Execution(true, msg.sender, destination, value, data); } else { revert(); } } function sufficientLiquidity(ERC20 src, uint srcQty, ERC20 dest, uint priceNum, uint priceDen) internal view returns(bool) { uint buyVolume = dutchX.buyVolumes(dest, src); uint sellVolume = dutchX.sellVolumesCurrent(dest, src); // 10^30 * 10^37 = 10^67 if (sellVolume * priceNum < sellVolume) return false; int outstandingVolume = int((sellVolume * priceNum) / priceDen) - int(buyVolume); if (outstandingVolume >= int(srcQty)) return true; return false; } function getAuctionData(ERC20 src, ERC20 dst) internal view returns (AuctionData data) { data.srcToken = src == ETH_TOKEN_ADDRESS ? ERC20(weth) : src; data.dstToken = dst == ETH_TOKEN_ADDRESS ? ERC20(weth) : dst; data.index = dutchX.getAuctionIndex(data.dstToken, data.srcToken); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[],"name":"enableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"setDutchXFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"listToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"DEFAULT_KYBER_FEE_BPS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"BPS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feeBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dutchX","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dutchXFeeDen","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":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":"destination","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"executeTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weth","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","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":true,"inputs":[{"name":"","type":"address"}],"name":"listedTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"blockNumber","type":"uint256"}],"name":"getConversionRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":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":"dutchXFeeNum","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_dutchX","type":"address"},{"name":"_admin","type":"address"},{"name":"_kyberNetwork","type":"address"},{"name":"_weth","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"},{"indexed":false,"name":"auctionIndex","type":"uint256"}],"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"}],"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":"success","type":"bool"},{"indexed":false,"name":"caller","type":"address"},{"indexed":false,"name":"destination","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Execution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAdmin","type":"address"},{"indexed":false,"name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAlerter","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]
Contract Creation Code
6060604052601960075534156200001557600080fd5b604051608080620027b88339810160405280805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a03908116919091179091559092508516151590506200007257600080fd5b600160a060020a03831615156200008857600080fd5b600160a060020a03821615156200009e57600080fd5b600160a060020a0381161515620000b457600080fd5b600a8054600160a060020a03808716600160a060020a03199283161790925560008054868416908316179055600b8054858416908316179055600c80549284169290911691909117905562000116640100000000620007bd6200021582021704565b600c54600a54600160a060020a039182169163095ea7b391167f80000000000000000000000000000000000000000000000000000000000000006000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515620001b657600080fd5b6102c65a03f11515620001c857600080fd5b505050604051805190501515620001de57600080fd5b6200020b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee64010000000062001e886200030282021704565b50505050620003e2565b600a54600160a060020a031663edd0b5cb306000604051604001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a0390911660048201526024016040805180830381600087803b15156200028757600080fd5b6102c65a03f115156200029957600080fd5b50505060405180519060200180516009819055600892909255501515620002c557600e805460ff191690555b600e547f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359060ff16604051901515815260200160405180910390a1565b600160a060020a03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156200034a57600160a060020a038116600090815260066020526040902060129055620003df565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620003aa57600080fd5b6102c65a03f11515620003bc57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b6123c680620003f26000396000f3006060604052600436106101915763ffffffff60e060020a60003504166299d386811461019357806301a12fd3146101ba57806304fe3212146101d95780631fc1e25f146101ec5780631fe884031461020b578063249d39e91461023057806324a9d8531461024357806325071db014610256578063261542a414610285578063267822471461029857806327a099d8146102ab5780633ccdbb28146103115780633f579f421461033a5780633fc8cef31461039f578063408ee7fe146103b257806354a325a6146103d15780636940030f146103f057806369fe0e2d146104035780636cf69811146104195780637093f47f1461044557806375829def1461046457806377f50f97146104835780637acc8678146104965780637c423f54146104b55780637cd44272146104c85780639870d7fe146104f3578063abffc9ac14610512578063ac8a584a14610531578063b78b842d14610550578063ce56c45414610563578063d4fac45d14610585578063d621e813146105aa578063de05ef1a146105bd578063f851a440146105d0575b005b341561019e57600080fd5b6101a66105e3565b604051901515815260200160405180910390f35b34156101c557600080fd5b610191600160a060020a036004351661064d565b34156101e457600080fd5b6101916107bd565b34156101f757600080fd5b610191600160a060020a036004351661088e565b341561021657600080fd5b61021e6109d3565b60405190815260200160405180910390f35b341561023b57600080fd5b61021e6109d8565b341561024e57600080fd5b61021e6109de565b341561026157600080fd5b6102696109e4565b604051600160a060020a03909116815260200160405180910390f35b341561029057600080fd5b61021e6109f3565b34156102a357600080fd5b6102696109f9565b34156102b657600080fd5b6102be610a08565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102fd5780820151838201526020016102e5565b505050509050019250505060405180910390f35b341561031c57600080fd5b610191600160a060020a036004358116906024359060443516610a70565b341561034557600080fd5b61019160048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610b6795505050505050565b34156103aa57600080fd5b610269610ce5565b34156103bd57600080fd5b610191600160a060020a0360043516610cf4565b34156103dc57600080fd5b610191600160a060020a0360043516610df0565b34156103fb57600080fd5b6101a6610e82565b341561040e57600080fd5b610191600435610eef565b6101a6600160a060020a03600435811690602435906044358116906064351660843560a4351515610f54565b341561045057600080fd5b6101a6600160a060020a0360043516611503565b341561046f57600080fd5b610191600160a060020a0360043516611518565b341561048e57600080fd5b6101916115b3565b34156104a157600080fd5b610191600160a060020a036004351661164d565b34156104c057600080fd5b6102be61172f565b34156104d357600080fd5b61021e600160a060020a0360043581169060243516604435606435611795565b34156104fe57600080fd5b610191600160a060020a0360043516611a3c565b341561051d57600080fd5b610191600160a060020a0360043516611b0c565b341561053c57600080fd5b610191600160a060020a0360043516611bb0565b341561055b57600080fd5b610269611d1c565b341561056e57600080fd5b610191600435600160a060020a0360243516611d2b565b341561059057600080fd5b61021e600160a060020a0360043581169060243516611dbe565b34156105b557600080fd5b6101a6611e6a565b34156105c857600080fd5b61021e611e73565b34156105db57600080fd5b610269611e79565b6000805433600160a060020a039081169116146105ff57600080fd5b600e805460ff1916600117908190557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359060ff16604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461066957600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561069057600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156107b95781600160a060020a03166005828154811015156106d557fe5b600091825260209091200154600160a060020a031614156107b15760058054600019810190811061070257fe5b60009182526020909120015460058054600160a060020a03909216918390811061072857fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560058054906107649060001983016122f8565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16107b9565b6001016106b2565b5050565b600a54600160a060020a031663edd0b5cb3060006040516040015260405160e060020a63ffffffff8416028152600160a060020a0390911660048201526024016040805180830381600087803b151561081557600080fd5b6102c65a03f1151561082657600080fd5b5050506040518051906020018051600981905560089290925550151561085157600e805460ff191690555b600e547f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359060ff16604051901515815260200160405180910390a1565b60005433600160a060020a039081169116146108a957600080fd5b600160a060020a03811615156108be57600080fd5b600160a060020a0381166000908152600d60205260409020805460ff191660011790556108ea81611e88565b600a54600160a060020a038083169163095ea7b391167f800000000000000000000000000000000000000000000000000000000000000060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561096d57600080fd5b6102c65a03f1151561097e57600080fd5b50505060405180519050151561099357600080fd5b7f017664858438d89f547fee46da0bcfc5396ea13a9fb1490b8fdd76cfa979f1a981604051600160a060020a03909116815260200160405180910390a150565b601981565b61271081565b60075481565b600a54600160a060020a031681565b60095481565b600154600160a060020a031681565b610a1061231c565b6004805480602002602001604051908101604052809291908181526020018280548015610a6657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610a48575b5050505050905090565b60005433600160a060020a03908116911614610a8b57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ae857600080fd5b6102c65a03f11515610af957600080fd5b505050604051805190501515610b0e57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b600160a060020a03331660009081526002602052604090205460ff161515610b8e57600080fd5b82600160a060020a0316828260405180828051906020019080838360005b83811015610bc4578082015183820152602001610bac565b50505050905090810190601f168015610bf15780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f19250505015610cdb577f0c522140e9193f2aabe5087aa9816c5fdea5ba2e9e42a54acfe27ffdc98d91b06001338585856040518515158152600160a060020a038086166020830152841660408201526060810183905260a06080820181815290820183818151815260200191508051906020019080838360005b83811015610c98578082015183820152602001610c80565b50505050905090810190601f168015610cc55780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1610ce0565b600080fd5b505050565b600c54600160a060020a031681565b60005433600160a060020a03908116911614610d0f57600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610d3557600080fd5b60055460329010610d4557600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610dc483826122f8565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610e0b57600080fd5b600160a060020a0381161515610e2057600080fd5b600b8054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b600160a060020a03331660009081526003602052604081205460ff161515610ea957600080fd5b600e805460ff191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60005433600160a060020a03908116911614610f0a57600080fd5b612710811115610f1957600080fd5b60078190557f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c768160405190815260200160405180910390a150565b6000610f5e61232e565b600e546000908190819060ff161515610f7657600080fd5b600b5433600160a060020a03908116911614610f9157600080fd5b610f9b8b8a611f45565b935083511515610faa57600080fd5b600160a060020a038b1660008051602061237b833981519152141561103e57348a14610fd557600080fd5b6007546127109081038b02600c549190049350600160a060020a031663d0e30db0846040518263ffffffff1660e060020a0281526004016000604051808303818588803b151561102457600080fd5b6125ee5a03f1151561103557600080fd5b505050506110dd565b341561104957600080fd5b8a600160a060020a03166323b872dd33308d60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156110b357600080fd5b6102c65a03f115156110c457600080fd5b5050506040518051905015156110d957600080fd5b8992505b600a54600160a060020a03166347e7ef2460208601518560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561114057600080fd5b6102c65a03f1151561115157600080fd5b50505060405180515050600a54600160a060020a0316635e7f22c26040860151866020015187518760006040516020015260405160e060020a63ffffffff8716028152600160a060020a03948516600482015292909316602483015260448201526064810191909152608401602060405180830381600087803b15156111d657600080fd5b6102c65a03f115156111e757600080fd5b50505060405180515050600a54600160a060020a031663b02938506040860151866020015130885160006040516040015260405160e060020a63ffffffff8716028152600160a060020a03948516600482015292841660248401529216604482015260648101919091526084016040805180830381600087803b151561126c57600080fd5b6102c65a03f1151561127d57600080fd5b5050506040518051906020018051600a54929450925050600160a060020a031663f3fef3a360408601518460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156112f457600080fd5b6102c65a03f1151561130557600080fd5b50505060405180515050600160a060020a03891660008051602061237b83398151915214156113ce57600c54600160a060020a0316632e1a7d4d8360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561137657600080fd5b6102c65a03f1151561138757600080fd5b5050600754612710915081038302049150600160a060020a03881682156108fc0283604051600060405180830381858888f1935050505015156113c957600080fd5b611455565b8360400151600160a060020a031663a9059cbb898460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561142f57600080fd5b6102c65a03f1151561144057600080fd5b50505060405180519050151561145557600080fd5b6114718a836114638e61204c565b61146c8d61204c565b61210a565b87111561147d57600080fd5b600160a060020a0333167fd7dd4b527e22d0655c20ef5e9f1db6f8b4059d29617cc7584d2e32f6b4fbf8ae8c8c8c868d8a51604051600160a060020a03968716815260208101959095529285166040808601919091526060850192909252909316608083015260a082015260c001905180910390a25060019a9950505050505050505050565b600d6020526000908152604090205460ff1681565b60005433600160a060020a0390811691161461153357600080fd5b600160a060020a038116151561154857600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146115ce57600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a0390811691161461166857600080fd5b600160a060020a038116151561167d57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b61173761231c565b6005805480602002602001604051908101604052809291908181526020018280548015610a6657602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610a48575050505050905090565b600061179f61232e565b600e54600090819060ff1615156117b95760009350611a31565b600160a060020a03881660008051602061237b833981519152141561180857600160a060020a0387166000908152600d602052604090205460ff1615156118035760009350611a31565b61185b565b600160a060020a03871660008051602061237b833981519152141561185257600160a060020a0388166000908152600d602052604090205460ff1615156118035760009350611a31565b60009350611a31565b6118658888611f45565b9250825115156118785760009350611a31565b600a54600160a060020a031663fdab1b7b60408501518560200151865160006040516040015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015260448101919091526064016040805180830381600087803b15156118ec57600080fd5b6102c65a03f115156118fd57600080fd5b50505060405180519060200180516080860152506060840190815251158061192757508260800151155b156119355760009350611a31565b6119528360200151878560400151866060015187608001516121ad565b15156119615760009350611a31565b600160a060020a03881660008051602061237b833981519152146119855785611992565b6007546127109081038702045b91508115806119a657508183608001518302105b156119b45760009350611a31565b8260600151836080015183028115156119c957fe5b0490506009546008546009540382028115156119e157fe5b049050600160a060020a03871660008051602061237b83398151915214611a085780611a15565b6007546127109081038202045b9050611a2e8682611a258b61204c565b61146c8b61204c565b93505b505050949350505050565b60005433600160a060020a03908116911614611a5757600080fd5b600160a060020a03811660009081526002602052604090205460ff1615611a7d57600080fd5b60045460329010611a8d57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610dc483826122f8565b60005433600160a060020a03908116911614611b2757600080fd5b600160a060020a0381166000908152600d602052604090205460ff161515611b4e57600080fd5b600160a060020a0381166000908152600d602052604090819020805460ff191690557f6621c4efc5efa31320394260425b7d14cbb9d7e3754b2c98c04af66b1cbf315b90829051600160a060020a03909116815260200160405180910390a150565b6000805433600160a060020a03908116911614611bcc57600080fd5b600160a060020a03821660009081526002602052604090205460ff161515611bf357600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156107b95781600160a060020a0316600482815481101515611c3857fe5b600091825260209091200154600160a060020a03161415611d1457600480546000198101908110611c6557fe5b60009182526020909120015460048054600160a060020a039092169183908110611c8b57fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600480546000190190611cc790826122f8565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16107b9565b600101611c15565b600b54600160a060020a031681565b60005433600160a060020a03908116911614611d4657600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515611d7757600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831660008051602061237b8339815191521415611df05750600160a060020a03811631611e64565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611e4757600080fd5b6102c65a03f11515611e5857600080fd5b50505060405180519150505b92915050565b600e5460ff1681565b60085481565b600054600160a060020a031681565b600160a060020a03811660008051602061237b8339815191521415611ec857600160a060020a038116600090815260066020526040902060129055611f42565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611f0e57600080fd5b6102c65a03f11515611f1f57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b611f4d61232e565b600160a060020a03831660008051602061237b83398151915214611f715782611f7e565b600c54600160a060020a03165b600160a060020a039081166020830152821660008051602061237b83398151915214611faa5781611fb7565b600c54600160a060020a03165b600160a060020a0390811660408301908152600a54909116906314584a9d9051836020015160006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561202a57600080fd5b6102c65a03f1151561203b57600080fd5b505050604051805182525092915050565b600080600160a060020a03831660008051602061237b83398151915214156120775760129150612104565b50600160a060020a0382166000908152600660205260409020548015156121005782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156120de57600080fd5b6102c65a03f115156120ef57600080fd5b505050604051805190509150612104565b8091505b50919050565b60006b204fce5e3e2502611000000085111561212557600080fd5b6b204fce5e3e2502611000000084111561213e57600080fd5b828210612179576012838303111561215557600080fd5b84838303600a0a02670de0b6b3a7640000850281151561217157fe5b0490506121a5565b6012828403111561218957600080fd5b84828403600a0a670de0b6b3a764000086020281151561217157fe5b949350505050565b600a54600090819081908190600160a060020a031663b8beafd6888b846040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561221657600080fd5b6102c65a03f1151561222757600080fd5b5050506040518051600a54909450600160a060020a0316905063b64c4905888b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561229557600080fd5b6102c65a03f115156122a657600080fd5b5050506040518051905091508186830210156122c557600093506122ec565b82858784028115156122d357fe5b040390508781126122e757600193506122ec565b600093505b50505095945050505050565b815481835581811511610ce057600083815260209020610ce091810190830161235c565b60206040519081016040526000815290565b60a0604051908101604090815260008083526020830181905290820181905260608201819052608082015290565b61064a91905b808211156123765760008155600101612362565b50905600000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea165627a7a72305820d82e0158f764732f605978178c0d7ea42d43a5d4d6db4e8e7eb6bea013b546fa0029000000000000000000000000b9812e2fa995ec53b5b6df34d21f9304762c5497000000000000000000000000f069cb44739a913c16622edc31a066e38913d82500000000000000000000000065897adcba42dcca5dd162c647b1cc3e31238490000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x6060604052600436106101915763ffffffff60e060020a60003504166299d386811461019357806301a12fd3146101ba57806304fe3212146101d95780631fc1e25f146101ec5780631fe884031461020b578063249d39e91461023057806324a9d8531461024357806325071db014610256578063261542a414610285578063267822471461029857806327a099d8146102ab5780633ccdbb28146103115780633f579f421461033a5780633fc8cef31461039f578063408ee7fe146103b257806354a325a6146103d15780636940030f146103f057806369fe0e2d146104035780636cf69811146104195780637093f47f1461044557806375829def1461046457806377f50f97146104835780637acc8678146104965780637c423f54146104b55780637cd44272146104c85780639870d7fe146104f3578063abffc9ac14610512578063ac8a584a14610531578063b78b842d14610550578063ce56c45414610563578063d4fac45d14610585578063d621e813146105aa578063de05ef1a146105bd578063f851a440146105d0575b005b341561019e57600080fd5b6101a66105e3565b604051901515815260200160405180910390f35b34156101c557600080fd5b610191600160a060020a036004351661064d565b34156101e457600080fd5b6101916107bd565b34156101f757600080fd5b610191600160a060020a036004351661088e565b341561021657600080fd5b61021e6109d3565b60405190815260200160405180910390f35b341561023b57600080fd5b61021e6109d8565b341561024e57600080fd5b61021e6109de565b341561026157600080fd5b6102696109e4565b604051600160a060020a03909116815260200160405180910390f35b341561029057600080fd5b61021e6109f3565b34156102a357600080fd5b6102696109f9565b34156102b657600080fd5b6102be610a08565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156102fd5780820151838201526020016102e5565b505050509050019250505060405180910390f35b341561031c57600080fd5b610191600160a060020a036004358116906024359060443516610a70565b341561034557600080fd5b61019160048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610b6795505050505050565b34156103aa57600080fd5b610269610ce5565b34156103bd57600080fd5b610191600160a060020a0360043516610cf4565b34156103dc57600080fd5b610191600160a060020a0360043516610df0565b34156103fb57600080fd5b6101a6610e82565b341561040e57600080fd5b610191600435610eef565b6101a6600160a060020a03600435811690602435906044358116906064351660843560a4351515610f54565b341561045057600080fd5b6101a6600160a060020a0360043516611503565b341561046f57600080fd5b610191600160a060020a0360043516611518565b341561048e57600080fd5b6101916115b3565b34156104a157600080fd5b610191600160a060020a036004351661164d565b34156104c057600080fd5b6102be61172f565b34156104d357600080fd5b61021e600160a060020a0360043581169060243516604435606435611795565b34156104fe57600080fd5b610191600160a060020a0360043516611a3c565b341561051d57600080fd5b610191600160a060020a0360043516611b0c565b341561053c57600080fd5b610191600160a060020a0360043516611bb0565b341561055b57600080fd5b610269611d1c565b341561056e57600080fd5b610191600435600160a060020a0360243516611d2b565b341561059057600080fd5b61021e600160a060020a0360043581169060243516611dbe565b34156105b557600080fd5b6101a6611e6a565b34156105c857600080fd5b61021e611e73565b34156105db57600080fd5b610269611e79565b6000805433600160a060020a039081169116146105ff57600080fd5b600e805460ff1916600117908190557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359060ff16604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461066957600080fd5b600160a060020a03821660009081526003602052604090205460ff16151561069057600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156107b95781600160a060020a03166005828154811015156106d557fe5b600091825260209091200154600160a060020a031614156107b15760058054600019810190811061070257fe5b60009182526020909120015460058054600160a060020a03909216918390811061072857fe5b60009182526020909120018054600160a060020a031916600160a060020a039290921691909117905560058054906107649060001983016122f8565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16107b9565b6001016106b2565b5050565b600a54600160a060020a031663edd0b5cb3060006040516040015260405160e060020a63ffffffff8416028152600160a060020a0390911660048201526024016040805180830381600087803b151561081557600080fd5b6102c65a03f1151561082657600080fd5b5050506040518051906020018051600981905560089290925550151561085157600e805460ff191690555b600e547f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7359060ff16604051901515815260200160405180910390a1565b60005433600160a060020a039081169116146108a957600080fd5b600160a060020a03811615156108be57600080fd5b600160a060020a0381166000908152600d60205260409020805460ff191660011790556108ea81611e88565b600a54600160a060020a038083169163095ea7b391167f800000000000000000000000000000000000000000000000000000000000000060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561096d57600080fd5b6102c65a03f1151561097e57600080fd5b50505060405180519050151561099357600080fd5b7f017664858438d89f547fee46da0bcfc5396ea13a9fb1490b8fdd76cfa979f1a981604051600160a060020a03909116815260200160405180910390a150565b601981565b61271081565b60075481565b600a54600160a060020a031681565b60095481565b600154600160a060020a031681565b610a1061231c565b6004805480602002602001604051908101604052809291908181526020018280548015610a6657602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610a48575b5050505050905090565b60005433600160a060020a03908116911614610a8b57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610ae857600080fd5b6102c65a03f11515610af957600080fd5b505050604051805190501515610b0e57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b600160a060020a03331660009081526002602052604090205460ff161515610b8e57600080fd5b82600160a060020a0316828260405180828051906020019080838360005b83811015610bc4578082015183820152602001610bac565b50505050905090810190601f168015610bf15780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f19250505015610cdb577f0c522140e9193f2aabe5087aa9816c5fdea5ba2e9e42a54acfe27ffdc98d91b06001338585856040518515158152600160a060020a038086166020830152841660408201526060810183905260a06080820181815290820183818151815260200191508051906020019080838360005b83811015610c98578082015183820152602001610c80565b50505050905090810190601f168015610cc55780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1610ce0565b600080fd5b505050565b600c54600160a060020a031681565b60005433600160a060020a03908116911614610d0f57600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610d3557600080fd5b60055460329010610d4557600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610dc483826122f8565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610e0b57600080fd5b600160a060020a0381161515610e2057600080fd5b600b8054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b600160a060020a03331660009081526003602052604081205460ff161515610ea957600080fd5b600e805460ff191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60005433600160a060020a03908116911614610f0a57600080fd5b612710811115610f1957600080fd5b60078190557f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c768160405190815260200160405180910390a150565b6000610f5e61232e565b600e546000908190819060ff161515610f7657600080fd5b600b5433600160a060020a03908116911614610f9157600080fd5b610f9b8b8a611f45565b935083511515610faa57600080fd5b600160a060020a038b1660008051602061237b833981519152141561103e57348a14610fd557600080fd5b6007546127109081038b02600c549190049350600160a060020a031663d0e30db0846040518263ffffffff1660e060020a0281526004016000604051808303818588803b151561102457600080fd5b6125ee5a03f1151561103557600080fd5b505050506110dd565b341561104957600080fd5b8a600160a060020a03166323b872dd33308d60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b15156110b357600080fd5b6102c65a03f115156110c457600080fd5b5050506040518051905015156110d957600080fd5b8992505b600a54600160a060020a03166347e7ef2460208601518560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561114057600080fd5b6102c65a03f1151561115157600080fd5b50505060405180515050600a54600160a060020a0316635e7f22c26040860151866020015187518760006040516020015260405160e060020a63ffffffff8716028152600160a060020a03948516600482015292909316602483015260448201526064810191909152608401602060405180830381600087803b15156111d657600080fd5b6102c65a03f115156111e757600080fd5b50505060405180515050600a54600160a060020a031663b02938506040860151866020015130885160006040516040015260405160e060020a63ffffffff8716028152600160a060020a03948516600482015292841660248401529216604482015260648101919091526084016040805180830381600087803b151561126c57600080fd5b6102c65a03f1151561127d57600080fd5b5050506040518051906020018051600a54929450925050600160a060020a031663f3fef3a360408601518460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156112f457600080fd5b6102c65a03f1151561130557600080fd5b50505060405180515050600160a060020a03891660008051602061237b83398151915214156113ce57600c54600160a060020a0316632e1a7d4d8360405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b151561137657600080fd5b6102c65a03f1151561138757600080fd5b5050600754612710915081038302049150600160a060020a03881682156108fc0283604051600060405180830381858888f1935050505015156113c957600080fd5b611455565b8360400151600160a060020a031663a9059cbb898460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561142f57600080fd5b6102c65a03f1151561144057600080fd5b50505060405180519050151561145557600080fd5b6114718a836114638e61204c565b61146c8d61204c565b61210a565b87111561147d57600080fd5b600160a060020a0333167fd7dd4b527e22d0655c20ef5e9f1db6f8b4059d29617cc7584d2e32f6b4fbf8ae8c8c8c868d8a51604051600160a060020a03968716815260208101959095529285166040808601919091526060850192909252909316608083015260a082015260c001905180910390a25060019a9950505050505050505050565b600d6020526000908152604090205460ff1681565b60005433600160a060020a0390811691161461153357600080fd5b600160a060020a038116151561154857600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146115ce57600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a0390811691161461166857600080fd5b600160a060020a038116151561167d57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b61173761231c565b6005805480602002602001604051908101604052809291908181526020018280548015610a6657602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610a48575050505050905090565b600061179f61232e565b600e54600090819060ff1615156117b95760009350611a31565b600160a060020a03881660008051602061237b833981519152141561180857600160a060020a0387166000908152600d602052604090205460ff1615156118035760009350611a31565b61185b565b600160a060020a03871660008051602061237b833981519152141561185257600160a060020a0388166000908152600d602052604090205460ff1615156118035760009350611a31565b60009350611a31565b6118658888611f45565b9250825115156118785760009350611a31565b600a54600160a060020a031663fdab1b7b60408501518560200151865160006040516040015260405160e060020a63ffffffff8616028152600160a060020a03938416600482015291909216602482015260448101919091526064016040805180830381600087803b15156118ec57600080fd5b6102c65a03f115156118fd57600080fd5b50505060405180519060200180516080860152506060840190815251158061192757508260800151155b156119355760009350611a31565b6119528360200151878560400151866060015187608001516121ad565b15156119615760009350611a31565b600160a060020a03881660008051602061237b833981519152146119855785611992565b6007546127109081038702045b91508115806119a657508183608001518302105b156119b45760009350611a31565b8260600151836080015183028115156119c957fe5b0490506009546008546009540382028115156119e157fe5b049050600160a060020a03871660008051602061237b83398151915214611a085780611a15565b6007546127109081038202045b9050611a2e8682611a258b61204c565b61146c8b61204c565b93505b505050949350505050565b60005433600160a060020a03908116911614611a5757600080fd5b600160a060020a03811660009081526002602052604090205460ff1615611a7d57600080fd5b60045460329010611a8d57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610dc483826122f8565b60005433600160a060020a03908116911614611b2757600080fd5b600160a060020a0381166000908152600d602052604090205460ff161515611b4e57600080fd5b600160a060020a0381166000908152600d602052604090819020805460ff191690557f6621c4efc5efa31320394260425b7d14cbb9d7e3754b2c98c04af66b1cbf315b90829051600160a060020a03909116815260200160405180910390a150565b6000805433600160a060020a03908116911614611bcc57600080fd5b600160a060020a03821660009081526002602052604090205460ff161515611bf357600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156107b95781600160a060020a0316600482815481101515611c3857fe5b600091825260209091200154600160a060020a03161415611d1457600480546000198101908110611c6557fe5b60009182526020909120015460048054600160a060020a039092169183908110611c8b57fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600480546000190190611cc790826122f8565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16107b9565b600101611c15565b600b54600160a060020a031681565b60005433600160a060020a03908116911614611d4657600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515611d7757600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831660008051602061237b8339815191521415611df05750600160a060020a03811631611e64565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515611e4757600080fd5b6102c65a03f11515611e5857600080fd5b50505060405180519150505b92915050565b600e5460ff1681565b60085481565b600054600160a060020a031681565b600160a060020a03811660008051602061237b8339815191521415611ec857600160a060020a038116600090815260066020526040902060129055611f42565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611f0e57600080fd5b6102c65a03f11515611f1f57600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b611f4d61232e565b600160a060020a03831660008051602061237b83398151915214611f715782611f7e565b600c54600160a060020a03165b600160a060020a039081166020830152821660008051602061237b83398151915214611faa5781611fb7565b600c54600160a060020a03165b600160a060020a0390811660408301908152600a54909116906314584a9d9051836020015160006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561202a57600080fd5b6102c65a03f1151561203b57600080fd5b505050604051805182525092915050565b600080600160a060020a03831660008051602061237b83398151915214156120775760129150612104565b50600160a060020a0382166000908152600660205260409020548015156121005782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156120de57600080fd5b6102c65a03f115156120ef57600080fd5b505050604051805190509150612104565b8091505b50919050565b60006b204fce5e3e2502611000000085111561212557600080fd5b6b204fce5e3e2502611000000084111561213e57600080fd5b828210612179576012838303111561215557600080fd5b84838303600a0a02670de0b6b3a7640000850281151561217157fe5b0490506121a5565b6012828403111561218957600080fd5b84828403600a0a670de0b6b3a764000086020281151561217157fe5b949350505050565b600a54600090819081908190600160a060020a031663b8beafd6888b846040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561221657600080fd5b6102c65a03f1151561222757600080fd5b5050506040518051600a54909450600160a060020a0316905063b64c4905888b60006040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561229557600080fd5b6102c65a03f115156122a657600080fd5b5050506040518051905091508186830210156122c557600093506122ec565b82858784028115156122d357fe5b040390508781126122e757600193506122ec565b600093505b50505095945050505050565b815481835581811511610ce057600083815260209020610ce091810190830161235c565b60206040519081016040526000815290565b60a0604051908101604090815260008083526020830181905290820181905260608201819052608082015290565b61064a91905b808211156123765760008155600101612362565b50905600000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeea165627a7a72305820d82e0158f764732f605978178c0d7ea42d43a5d4d6db4e8e7eb6bea013b546fa0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b9812e2fa995ec53b5b6df34d21f9304762c5497000000000000000000000000f069cb44739a913c16622edc31a066e38913d82500000000000000000000000065897adcba42dcca5dd162c647b1cc3e31238490000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : _dutchX (address): 0xb9812E2fA995EC53B5b6DF34d21f9304762C5497
Arg [1] : _admin (address): 0xF069cb44739A913c16622EDC31A066e38913d825
Arg [2] : _kyberNetwork (address): 0x65897aDCBa42dcCA5DD162c647b1cC3E31238490
Arg [3] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000b9812e2fa995ec53b5b6df34d21f9304762c5497
Arg [1] : 000000000000000000000000f069cb44739a913c16622edc31a066e38913d825
Arg [2] : 00000000000000000000000065897adcba42dcca5dd162c647b1cc3e31238490
Arg [3] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Swarm Source
bzzr://d82e0158f764732f605978178c0d7ea42d43a5d4d6db4e8e7eb6bea013b546fa
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,679.1 | 1.8492 | $4,954.26 |
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.