Source Code
Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw Token | 10911772 | 1986 days ago | IN | 0 ETH | 0.00628136 | ||||
| Trade | 7098077 | 2597 days ago | IN | 0 ETH | 0.00081537 | ||||
| Trade | 7098050 | 2597 days ago | IN | 0.01 ETH | 0.00106106 | ||||
| Trade | 7097994 | 2597 days ago | IN | 0 ETH | 0.00158633 | ||||
| Trade | 7097984 | 2597 days ago | IN | 0 ETH | 0.00160469 | ||||
| Trade | 7097961 | 2597 days ago | IN | 0 ETH | 0.00123405 | ||||
| List Token | 7097938 | 2597 days ago | IN | 0 ETH | 0.00389204 | ||||
| Set Kyber Networ... | 7097886 | 2597 days ago | IN | 0 ETH | 0.00123405 |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
KyberUniswapReserve
Compiler Version
v0.4.18+commit.9cf6e910
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-01-20
*/
pragma solidity 0.4.18;
// File: contracts/ERC20Interface.sol
// https://github.com/ethereum/EIPs/issues/20
interface ERC20 {
function totalSupply() public view returns (uint supply);
function balanceOf(address _owner) public view returns (uint balance);
function transfer(address _to, uint _value) public returns (bool success);
function transferFrom(address _from, address _to, uint _value) public returns (bool success);
function approve(address _spender, uint _value) public returns (bool success);
function allowance(address _owner, address _spender) public view returns (uint remaining);
function decimals() public view returns(uint digits);
event Approval(address indexed _owner, address indexed _spender, uint _value);
}
// File: contracts/PermissionGroups.sol
contract PermissionGroups {
address public admin;
address public pendingAdmin;
mapping(address=>bool) internal operators;
mapping(address=>bool) internal alerters;
address[] internal operatorsGroup;
address[] internal alertersGroup;
uint constant internal MAX_GROUP_SIZE = 50;
function PermissionGroups() public {
admin = msg.sender;
}
modifier onlyAdmin() {
require(msg.sender == admin);
_;
}
modifier onlyOperator() {
require(operators[msg.sender]);
_;
}
modifier onlyAlerter() {
require(alerters[msg.sender]);
_;
}
function getOperators () external view returns(address[]) {
return operatorsGroup;
}
function getAlerters () external view returns(address[]) {
return alertersGroup;
}
event TransferAdminPending(address pendingAdmin);
/**
* @dev Allows the current admin to set the pendingAdmin address.
* @param newAdmin The address to transfer ownership to.
*/
function transferAdmin(address newAdmin) public onlyAdmin {
require(newAdmin != address(0));
TransferAdminPending(pendingAdmin);
pendingAdmin = newAdmin;
}
/**
* @dev Allows the current admin to set the admin in one tx. Useful initial deployment.
* @param newAdmin The address to transfer ownership to.
*/
function transferAdminQuickly(address newAdmin) public onlyAdmin {
require(newAdmin != address(0));
TransferAdminPending(newAdmin);
AdminClaimed(newAdmin, admin);
admin = newAdmin;
}
event AdminClaimed( address newAdmin, address previousAdmin);
/**
* @dev Allows the pendingAdmin address to finalize the change admin process.
*/
function claimAdmin() public {
require(pendingAdmin == msg.sender);
AdminClaimed(pendingAdmin, admin);
admin = pendingAdmin;
pendingAdmin = address(0);
}
event AlerterAdded (address newAlerter, bool isAdd);
function addAlerter(address newAlerter) public onlyAdmin {
require(!alerters[newAlerter]); // prevent duplicates.
require(alertersGroup.length < MAX_GROUP_SIZE);
AlerterAdded(newAlerter, true);
alerters[newAlerter] = true;
alertersGroup.push(newAlerter);
}
function removeAlerter (address alerter) public onlyAdmin {
require(alerters[alerter]);
alerters[alerter] = false;
for (uint i = 0; i < alertersGroup.length; ++i) {
if (alertersGroup[i] == alerter) {
alertersGroup[i] = alertersGroup[alertersGroup.length - 1];
alertersGroup.length--;
AlerterAdded(alerter, false);
break;
}
}
}
event OperatorAdded(address newOperator, bool isAdd);
function addOperator(address newOperator) public onlyAdmin {
require(!operators[newOperator]); // prevent duplicates.
require(operatorsGroup.length < MAX_GROUP_SIZE);
OperatorAdded(newOperator, true);
operators[newOperator] = true;
operatorsGroup.push(newOperator);
}
function removeOperator (address operator) public onlyAdmin {
require(operators[operator]);
operators[operator] = false;
for (uint i = 0; i < operatorsGroup.length; ++i) {
if (operatorsGroup[i] == operator) {
operatorsGroup[i] = operatorsGroup[operatorsGroup.length - 1];
operatorsGroup.length -= 1;
OperatorAdded(operator, false);
break;
}
}
}
}
// File: contracts/Withdrawable.sol
/**
* @title Contracts that should be able to recover tokens or ethers
* @author Ilan Doron
* @dev This allows to recover any tokens or Ethers received in a contract.
* This will prevent any accidental loss of tokens.
*/
contract Withdrawable is PermissionGroups {
event TokenWithdraw(ERC20 token, uint amount, address sendTo);
/**
* @dev Withdraw all ERC20 compatible tokens
* @param token ERC20 The address of the token contract
*/
function withdrawToken(ERC20 token, uint amount, address sendTo) external onlyAdmin {
require(token.transfer(sendTo, amount));
TokenWithdraw(token, amount, sendTo);
}
event EtherWithdraw(uint amount, address sendTo);
/**
* @dev Withdraw Ethers
*/
function withdrawEther(uint amount, address sendTo) external onlyAdmin {
sendTo.transfer(amount);
EtherWithdraw(amount, sendTo);
}
}
// File: contracts/KyberReserveInterface.sol
/// @title Kyber Reserve contract
interface KyberReserveInterface {
function trade(
ERC20 srcToken,
uint srcAmount,
ERC20 destToken,
address destAddress,
uint conversionRate,
bool validate
)
public
payable
returns(bool);
function getConversionRate(ERC20 src, ERC20 dest, uint srcQty, uint blockNumber) public view returns(uint);
}
// File: contracts/Utils.sol
/// @title Kyber constants contract
contract Utils {
ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);
uint constant internal PRECISION = (10**18);
uint constant internal MAX_QTY = (10**28); // 10B tokens
uint constant internal MAX_RATE = (PRECISION * 10**6); // up to 1M tokens per ETH
uint constant internal MAX_DECIMALS = 18;
uint constant internal ETH_DECIMALS = 18;
mapping(address=>uint) internal decimals;
function setDecimals(ERC20 token) internal {
if (token == ETH_TOKEN_ADDRESS) decimals[token] = ETH_DECIMALS;
else decimals[token] = token.decimals();
}
function getDecimals(ERC20 token) internal view returns(uint) {
if (token == ETH_TOKEN_ADDRESS) return ETH_DECIMALS; // save storage access
uint tokenDecimals = decimals[token];
// technically, there might be token with decimals 0
// moreover, very possible that old tokens have decimals 0
// these tokens will just have higher gas fees.
if(tokenDecimals == 0) return token.decimals();
return tokenDecimals;
}
function calcDstQty(uint srcQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
require(srcQty <= MAX_QTY);
require(rate <= MAX_RATE);
if (dstDecimals >= srcDecimals) {
require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
return (srcQty * rate * (10**(dstDecimals - srcDecimals))) / PRECISION;
} else {
require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
return (srcQty * rate) / (PRECISION * (10**(srcDecimals - dstDecimals)));
}
}
function calcSrcQty(uint dstQty, uint srcDecimals, uint dstDecimals, uint rate) internal pure returns(uint) {
require(dstQty <= MAX_QTY);
require(rate <= MAX_RATE);
//source quantity is rounded up. to avoid dest quantity being too low.
uint numerator;
uint denominator;
if (srcDecimals >= dstDecimals) {
require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
numerator = (PRECISION * dstQty * (10**(srcDecimals - dstDecimals)));
denominator = rate;
} else {
require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
numerator = (PRECISION * dstQty);
denominator = (rate * (10**(dstDecimals - srcDecimals)));
}
return (numerator + denominator - 1) / denominator; //avoid rounding down errors
}
}
// File: contracts/Utils2.sol
contract Utils2 is Utils {
/// @dev get the balance of a user.
/// @param token The token type
/// @return The balance
function getBalance(ERC20 token, address user) public view returns(uint) {
if (token == ETH_TOKEN_ADDRESS)
return user.balance;
else
return token.balanceOf(user);
}
function getDecimalsSafe(ERC20 token) internal returns(uint) {
if (decimals[token] == 0) {
setDecimals(token);
}
return decimals[token];
}
function calcDestAmount(ERC20 src, ERC20 dest, uint srcAmount, uint rate) internal view returns(uint) {
return calcDstQty(srcAmount, getDecimals(src), getDecimals(dest), rate);
}
function calcSrcAmount(ERC20 src, ERC20 dest, uint destAmount, uint rate) internal view returns(uint) {
return calcSrcQty(destAmount, getDecimals(src), getDecimals(dest), rate);
}
function calcRateFromQty(uint srcAmount, uint destAmount, uint srcDecimals, uint dstDecimals)
internal pure returns(uint)
{
require(srcAmount <= MAX_QTY);
require(destAmount <= MAX_QTY);
if (dstDecimals >= srcDecimals) {
require((dstDecimals - srcDecimals) <= MAX_DECIMALS);
return (destAmount * PRECISION / ((10 ** (dstDecimals - srcDecimals)) * srcAmount));
} else {
require((srcDecimals - dstDecimals) <= MAX_DECIMALS);
return (destAmount * PRECISION * (10 ** (srcDecimals - dstDecimals)) / srcAmount);
}
}
}
// File: contracts/uniswap/KyberUniswapReserve.sol
interface UniswapExchange {
function ethToTokenSwapInput(
uint256 min_tokens,
uint256 deadline
)
external
payable
returns (uint256 tokens_bought);
function tokenToEthSwapInput(
uint256 tokens_sold,
uint256 min_eth,
uint256 deadline
)
external
returns (uint256 eth_bought);
function getEthToTokenInputPrice(
uint256 eth_sold
)
external
view
returns (uint256 tokens_bought);
function getTokenToEthInputPrice(
uint256 tokens_sold
)
external
view
returns (uint256 eth_bought);
}
interface UniswapFactory {
function getExchange(address token) external view returns (address exchange);
}
contract KyberUniswapReserve is KyberReserveInterface, Withdrawable, Utils2 {
// Parts per 10000
uint public constant DEFAULT_FEE_BPS = 25;
UniswapFactory public uniswapFactory;
address public kyberNetwork;
uint public feeBps = DEFAULT_FEE_BPS;
// Uniswap exchange contract for every listed token
// token -> exchange
mapping (address => address) public tokenExchange;
bool public tradeEnabled = true;
/**
Constructor
*/
function KyberUniswapReserve(
UniswapFactory _uniswapFactory,
address _admin,
address _kyberNetwork
)
public
{
require(address(_uniswapFactory) != 0);
require(_admin != 0);
require(_kyberNetwork != 0);
uniswapFactory = _uniswapFactory;
admin = _admin;
kyberNetwork = _kyberNetwork;
}
function() public payable {
// anyone can deposit ether
}
/**
Returns dest quantity / source quantity.
*/
function getConversionRate(
ERC20 src,
ERC20 dest,
uint srcQty,
uint blockNumber
)
public
view
returns(uint)
{
// This makes the UNUSED warning go away.
blockNumber;
require(isValidTokens(src, dest));
if (!tradeEnabled) return 0;
ERC20 token;
if (src == ETH_TOKEN_ADDRESS) {
token = dest;
} else if (dest == ETH_TOKEN_ADDRESS) {
token = src;
} else {
// Should never arrive here - isValidTokens requires one side to be ETH
revert();
}
UniswapExchange exchange = UniswapExchange(tokenExchange[token]);
uint convertedQuantity;
if (src == ETH_TOKEN_ADDRESS) {
uint quantity = srcQty * (10000 - feeBps) / 10000;
convertedQuantity = exchange.getEthToTokenInputPrice(quantity);
} else {
convertedQuantity = exchange.getTokenToEthInputPrice(srcQty);
convertedQuantity = convertedQuantity * (10000 - feeBps) / 10000;
}
return calcRateFromQty(
srcQty, /* srcAmount */
convertedQuantity, /* destAmount */
getDecimals(src), /* srcDecimals */
getDecimals(dest) /* dstDecimals */
);
}
event TradeExecute(
address indexed sender,
address src,
uint srcAmount,
address destToken,
uint destAmount,
address destAddress
);
/**
conversionRate: expected conversion rate should be >= this value.
*/
function trade(
ERC20 srcToken,
uint srcAmount,
ERC20 destToken,
address destAddress,
uint conversionRate,
bool validate
)
public
payable
returns(bool)
{
// Not using this variable that is part of the interface.
validate;
require(tradeEnabled);
require(msg.sender == kyberNetwork);
require(isValidTokens(srcToken, destToken));
uint expectedConversionRate = getConversionRate(
srcToken,
destToken,
srcAmount,
0 /* blockNumber */
);
require(expectedConversionRate <= conversionRate);
uint destAmount;
UniswapExchange exchange;
if (srcToken == ETH_TOKEN_ADDRESS) {
require(srcAmount == msg.value);
// Fees in ETH
uint quantity = srcAmount * (10000 - feeBps) / 10000;
exchange = UniswapExchange(tokenExchange[destToken]);
destAmount = exchange.ethToTokenSwapInput.value(quantity)(
1, /* min_tokens: uniswap requires it to be > 0 */
2 ** 255 /* deadline */
);
require(destToken.transfer(destAddress, destAmount));
} else {
require(msg.value == 0);
require(srcToken.transferFrom(msg.sender, address(this), srcAmount));
exchange = UniswapExchange(tokenExchange[srcToken]);
destAmount = exchange.tokenToEthSwapInput(
srcAmount,
1, /* min_eth: uniswap requires it to be > 0 */
2 ** 255 /* deadline */
);
// Fees in ETH
destAmount = destAmount * (10000 - feeBps) / 10000;
destAddress.transfer(destAmount);
}
TradeExecute(
msg.sender, /* sender */
srcToken, /* src */
srcAmount, /* srcAmount */
destToken, /* destToken */
destAmount, /* destAmount */
destAddress /* destAddress */
);
return true;
}
event FeeUpdated(
uint bps
);
function setFee(
uint bps
)
public
onlyAdmin
{
require(bps <= 10000);
feeBps = bps;
FeeUpdated(bps);
}
event TokenListed(
ERC20 token,
UniswapExchange exchange
);
function listToken(ERC20 token)
public
onlyAdmin
{
require(address(token) != 0);
UniswapExchange uniswapExchange = UniswapExchange(
uniswapFactory.getExchange(token)
);
tokenExchange[token] = uniswapExchange;
setDecimals(token);
require(token.approve(uniswapExchange, 2**255));
TokenListed(token, uniswapExchange);
}
event TokenDelisted(ERC20 token);
function delistToken(ERC20 token)
public
onlyAdmin
{
require(tokenExchange[token] != 0);
tokenExchange[token] = 0;
TokenDelisted(token);
}
function isValidTokens(
ERC20 src,
ERC20 dest
)
public
view
returns(bool)
{
return (
(src == ETH_TOKEN_ADDRESS && tokenExchange[dest] != 0) ||
(tokenExchange[src] != 0 && dest == ETH_TOKEN_ADDRESS)
);
}
event TradeEnabled(
bool enable
);
function enableTrade()
public
onlyAdmin
returns(bool)
{
tradeEnabled = true;
TradeEnabled(true);
return true;
}
function disableTrade()
public
onlyAlerter
returns(bool)
{
tradeEnabled = false;
TradeEnabled(false);
return true;
}
event KyberNetworkSet(
address kyberNetwork
);
function setKyberNetwork(
address _kyberNetwork
)
public
onlyAdmin
{
require(_kyberNetwork != 0);
kyberNetwork = _kyberNetwork;
KyberNetworkSet(kyberNetwork);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"enableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenExchange","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"listToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"feeBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DEFAULT_FEE_BPS","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_kyberNetwork","type":"address"}],"name":"setKyberNetwork","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"disableTrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"bps","type":"uint256"}],"name":"setFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"srcToken","type":"address"},{"name":"srcAmount","type":"uint256"},{"name":"destToken","type":"address"},{"name":"destAddress","type":"address"},{"name":"conversionRate","type":"uint256"},{"name":"validate","type":"bool"}],"name":"trade","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"}],"name":"isValidTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"},{"name":"srcQty","type":"uint256"},{"name":"blockNumber","type":"uint256"}],"name":"getConversionRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"uniswapFactory","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"delistToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"kyberNetwork","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"},{"name":"user","type":"address"}],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tradeEnabled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_uniswapFactory","type":"address"},{"name":"_admin","type":"address"},{"name":"_kyberNetwork","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"sender","type":"address"},{"indexed":false,"name":"src","type":"address"},{"indexed":false,"name":"srcAmount","type":"uint256"},{"indexed":false,"name":"destToken","type":"address"},{"indexed":false,"name":"destAmount","type":"uint256"},{"indexed":false,"name":"destAddress","type":"address"}],"name":"TradeExecute","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"bps","type":"uint256"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"exchange","type":"address"}],"name":"TokenListed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"}],"name":"TokenDelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"enable","type":"bool"}],"name":"TradeEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"kyberNetwork","type":"address"}],"name":"KyberNetworkSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"TokenWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"sendTo","type":"address"}],"name":"EtherWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pendingAdmin","type":"address"}],"name":"TransferAdminPending","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAdmin","type":"address"},{"indexed":false,"name":"previousAdmin","type":"address"}],"name":"AdminClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAlerter","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"AlerterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newOperator","type":"address"},{"indexed":false,"name":"isAdd","type":"bool"}],"name":"OperatorAdded","type":"event"}]Contract Creation Code
60606040526019600955600b805460ff19166001179055341561002157600080fd5b604051606080611d3483398101604052808051919060200180519190602001805160008054600160a060020a03191633600160a060020a039081169190911790915590925084161515905061007557600080fd5b600160a060020a038216151561008a57600080fd5b600160a060020a038116151561009f57600080fd5b60078054600160a060020a03948516600160a060020a031991821617909155600080549385169382169390931790925560088054919093169116179055611c49806100eb6000396000f30060606040526004361061015a5763ffffffff60e060020a60003504166299d386811461015c57806301a12fd3146101835780630dd94b96146101a25780631fc1e25f146101dd57806324a9d853146101fc578063267822471461022157806327a099d81461023457806333d8262c1461029a5780633ccdbb28146102ad578063408ee7fe146102d657806354a325a6146102f55780636940030f1461031457806369fe0e2d146103275780636cf698111461033d57806375829def1461036957806377f50f97146103885780637acc86781461039b5780637be98598146103ba5780637c423f54146103df5780637cd44272146103f25780638bdb2afa1461041d5780639870d7fe14610430578063abffc9ac1461044f578063ac8a584a1461046e578063b78b842d1461048d578063ce56c454146104a0578063d4fac45d146104c2578063d621e813146104e7578063f851a440146104fa575b005b341561016757600080fd5b61016f61050d565b604051901515815260200160405180910390f35b341561018e57600080fd5b61015a600160a060020a0360043516610575565b34156101ad57600080fd5b6101c1600160a060020a03600435166106e5565b604051600160a060020a03909116815260200160405180910390f35b34156101e857600080fd5b61015a600160a060020a0360043516610700565b341561020757600080fd5b61020f6108af565b60405190815260200160405180910390f35b341561022c57600080fd5b6101c16108b5565b341561023f57600080fd5b6102476108c4565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561028657808201518382015260200161026e565b505050509050019250505060405180910390f35b34156102a557600080fd5b61020f61092c565b34156102b857600080fd5b61015a600160a060020a036004358116906024359060443516610931565b34156102e157600080fd5b61015a600160a060020a0360043516610a28565b341561030057600080fd5b61015a600160a060020a0360043516610b24565b341561031f57600080fd5b61016f610bb6565b341561033257600080fd5b61015a600435610c23565b61016f600160a060020a03600435811690602435906044358116906064351660843560a4351515610c88565b341561037457600080fd5b61015a600160a060020a0360043516611035565b341561039357600080fd5b61015a6110d0565b34156103a657600080fd5b61015a600160a060020a036004351661116a565b34156103c557600080fd5b61016f600160a060020a036004358116906024351661124c565b34156103ea57600080fd5b6102476112e7565b34156103fd57600080fd5b61020f600160a060020a036004358116906024351660443560643561134d565b341561042857600080fd5b6101c161153b565b341561043b57600080fd5b61015a600160a060020a036004351661154a565b341561045a57600080fd5b61015a600160a060020a036004351661161a565b341561047957600080fd5b61015a600160a060020a03600435166116c3565b341561049857600080fd5b6101c161182f565b34156104ab57600080fd5b61015a600435600160a060020a036024351661183e565b34156104cd57600080fd5b61020f600160a060020a03600435811690602435166118d1565b34156104f257600080fd5b61016f611982565b341561050557600080fd5b6101c161198b565b6000805433600160a060020a0390811691161461052957600080fd5b600b805460ff191660019081179091557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e73590604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461059157600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156105b857600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156106e15781600160a060020a03166005828154811015156105fd57fe5b600091825260209091200154600160a060020a031614156106d95760058054600019810190811061062a57fe5b60009182526020909120015460058054600160a060020a03909216918390811061065057fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061068c906000198301611bc4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16106e1565b6001016105da565b5050565b600a60205260009081526040902054600160a060020a031681565b6000805433600160a060020a0390811691161461071c57600080fd5b600160a060020a038216151561073157600080fd5b600754600160a060020a03166306f2bf628360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561078a57600080fd5b6102c65a03f1151561079b57600080fd5b5050506040518051600160a060020a038481166000908152600a602052604090208054600160a060020a03191691831691909117905591506107de90508261199a565b81600160a060020a031663095ea7b38260ff60020a60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561083f57600080fd5b6102c65a03f1151561085057600080fd5b50505060405180519050151561086557600080fd5b7f99d2b755eb38920131acb332adf086ea38d15009f223c21f3aa978d6ab2347868282604051600160a060020a039283168152911660208201526040908101905180910390a15050565b60095481565b600154600160a060020a031681565b6108cc611bed565b600480548060200260200160405190810160405280929190818152602001828054801561092257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610904575b5050505050905090565b601981565b60005433600160a060020a0390811691161461094c57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156109a957600080fd5b6102c65a03f115156109ba57600080fd5b5050506040518051905015156109cf57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a03908116911614610a4357600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610a6957600080fd5b60055460329010610a7957600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610af88382611bc4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610b3f57600080fd5b600160a060020a0381161515610b5457600080fd5b60088054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b600160a060020a03331660009081526003602052604081205460ff161515610bdd57600080fd5b600b805460ff191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60005433600160a060020a03908116911614610c3e57600080fd5b612710811115610c4d57600080fd5b60098190557f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c768160405190815260200160405180910390a150565b600b54600090819081908190819060ff161515610ca457600080fd5b60085433600160a060020a03908116911614610cbf57600080fd5b610cc98b8a61124c565b1515610cd457600080fd5b610ce18b8a8c600061134d565b935086841115610cf057600080fd5b600160a060020a038b1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610e4757348a14610d2157600080fd5b5050600954600160a060020a038881166000908152600a602052604080822054909216926127109081038c020491839163f39b5b9b91849160019160ff60020a9190516020015260405160e060020a63ffffffff8616028152600481019290925260248201526044016020604051808303818588803b1515610da257600080fd5b6125ee5a03f11515610db357600080fd5b505050506040518051935050600160a060020a03891663a9059cbb898560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e1c57600080fd5b6102c65a03f11515610e2d57600080fd5b505050604051805190501515610e4257600080fd5b610fb7565b3415610e5257600080fd5b8a600160a060020a03166323b872dd33308d60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610ebc57600080fd5b6102c65a03f11515610ecd57600080fd5b505050604051805190501515610ee257600080fd5b600160a060020a03808c166000908152600a602052604080822054909216935083916395e3c50b918d9160019160ff60020a91516020015260405160e060020a63ffffffff8616028152600481019390935260248301919091526044820152606401602060405180830381600087803b1515610f5d57600080fd5b6102c65a03f11515610f6e57600080fd5b505050604051805160095461271090810390910204935050600160a060020a0388166108fc84150284604051600060405180830381858888f193505050501515610fb757600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8c8c8c878d604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019a9950505050505050505050565b60005433600160a060020a0390811691161461105057600080fd5b600160a060020a038116151561106557600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146110eb57600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a0390811691161461118557600080fd5b600160a060020a038116151561119a57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480156112935750600160a060020a038083166000908152600a60205260409020541615155b806112de5750600160a060020a038084166000908152600a602052604090205416158015906112de5750600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b90505b92915050565b6112ef611bed565b600580548060200260200160405190810160405280929190818152602001828054801561092257602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610904575050505050905090565b600080600080600061135f898961124c565b151561136a57600080fd5b600b5460ff16151561137f576000945061152f565b600160a060020a03891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113ac578793506113de565b600160a060020a03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113d9578893506113de565b600080fd5b600160a060020a038085166000908152600a602052604090205481169350891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156114975750600954612710908103870204600160a060020a03831663cd7724c38260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561147557600080fd5b6102c65a03f1151561148657600080fd5b505050604051805190509150611510565b82600160a060020a03166395b68fe78860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156114e657600080fd5b6102c65a03f115156114f757600080fd5b5050506040518051600954612710908103909102049250505b61152c878361151e8c611a5d565b6115278c611a5d565b611b21565b94505b50505050949350505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461156557600080fd5b600160a060020a03811660009081526002602052604090205460ff161561158b57600080fd5b6004546032901061159b57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610af88382611bc4565b60005433600160a060020a0390811691161461163557600080fd5b600160a060020a038082166000908152600a602052604090205416151561165b57600080fd5b600160a060020a0381166000908152600a6020526040908190208054600160a060020a03191690557f6621c4efc5efa31320394260425b7d14cbb9d7e3754b2c98c04af66b1cbf315b90829051600160a060020a03909116815260200160405180910390a150565b6000805433600160a060020a039081169116146116df57600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561170657600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156106e15781600160a060020a031660048281548110151561174b57fe5b600091825260209091200154600160a060020a031614156118275760048054600019810190811061177857fe5b60009182526020909120015460048054600160a060020a03909216918390811061179e57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556004805460001901906117da9082611bc4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16106e1565b600101611728565b600854600160a060020a031681565b60005433600160a060020a0390811691161461185957600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f19350505050151561188a57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156119095750600160a060020a038116316112e1565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561196057600080fd5b6102c65a03f1151561197157600080fd5b5050506040518051905090506112e1565b600b5460ff1681565b600054600160a060020a031681565b600160a060020a03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156119e057600160a060020a038116600090815260066020526040902060129055611a5a565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a2657600080fd5b6102c65a03f11515611a3757600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611a8e5760129150611b1b565b50600160a060020a038216600090815260066020526040902054801515611b175782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611af557600080fd5b6102c65a03f11515611b0657600080fd5b505050604051805190509150611b1b565b8091505b50919050565b60006b204fce5e3e25026110000000851115611b3c57600080fd5b6b204fce5e3e25026110000000841115611b5557600080fd5b828210611b905760128383031115611b6c57600080fd5b84838303600a0a02670de0b6b3a76400008502811515611b8857fe5b049050611bbc565b60128284031115611ba057600080fd5b84828403600a0a670de0b6b3a7640000860202811515611b8857fe5b949350505050565b815481835581811511611be857600083815260209020611be8918101908301611bff565b505050565b60206040519081016040526000815290565b61057291905b80821115611c195760008155600101611c05565b50905600a165627a7a723058201517c441fcd549d3564d6dbb0b6b75cf2e0c063149931f74eab2a44a813ece4e0029000000000000000000000000c0a47dfe034b400b47bdad5fecda2621de6c4d950000000000000000000000002259099897afaf3813fef3284b91d2b227b66ad400000000000000000000000065897adcba42dcca5dd162c647b1cc3e31238490
Deployed Bytecode
0x60606040526004361061015a5763ffffffff60e060020a60003504166299d386811461015c57806301a12fd3146101835780630dd94b96146101a25780631fc1e25f146101dd57806324a9d853146101fc578063267822471461022157806327a099d81461023457806333d8262c1461029a5780633ccdbb28146102ad578063408ee7fe146102d657806354a325a6146102f55780636940030f1461031457806369fe0e2d146103275780636cf698111461033d57806375829def1461036957806377f50f97146103885780637acc86781461039b5780637be98598146103ba5780637c423f54146103df5780637cd44272146103f25780638bdb2afa1461041d5780639870d7fe14610430578063abffc9ac1461044f578063ac8a584a1461046e578063b78b842d1461048d578063ce56c454146104a0578063d4fac45d146104c2578063d621e813146104e7578063f851a440146104fa575b005b341561016757600080fd5b61016f61050d565b604051901515815260200160405180910390f35b341561018e57600080fd5b61015a600160a060020a0360043516610575565b34156101ad57600080fd5b6101c1600160a060020a03600435166106e5565b604051600160a060020a03909116815260200160405180910390f35b34156101e857600080fd5b61015a600160a060020a0360043516610700565b341561020757600080fd5b61020f6108af565b60405190815260200160405180910390f35b341561022c57600080fd5b6101c16108b5565b341561023f57600080fd5b6102476108c4565b60405160208082528190810183818151815260200191508051906020019060200280838360005b8381101561028657808201518382015260200161026e565b505050509050019250505060405180910390f35b34156102a557600080fd5b61020f61092c565b34156102b857600080fd5b61015a600160a060020a036004358116906024359060443516610931565b34156102e157600080fd5b61015a600160a060020a0360043516610a28565b341561030057600080fd5b61015a600160a060020a0360043516610b24565b341561031f57600080fd5b61016f610bb6565b341561033257600080fd5b61015a600435610c23565b61016f600160a060020a03600435811690602435906044358116906064351660843560a4351515610c88565b341561037457600080fd5b61015a600160a060020a0360043516611035565b341561039357600080fd5b61015a6110d0565b34156103a657600080fd5b61015a600160a060020a036004351661116a565b34156103c557600080fd5b61016f600160a060020a036004358116906024351661124c565b34156103ea57600080fd5b6102476112e7565b34156103fd57600080fd5b61020f600160a060020a036004358116906024351660443560643561134d565b341561042857600080fd5b6101c161153b565b341561043b57600080fd5b61015a600160a060020a036004351661154a565b341561045a57600080fd5b61015a600160a060020a036004351661161a565b341561047957600080fd5b61015a600160a060020a03600435166116c3565b341561049857600080fd5b6101c161182f565b34156104ab57600080fd5b61015a600435600160a060020a036024351661183e565b34156104cd57600080fd5b61020f600160a060020a03600435811690602435166118d1565b34156104f257600080fd5b61016f611982565b341561050557600080fd5b6101c161198b565b6000805433600160a060020a0390811691161461052957600080fd5b600b805460ff191660019081179091557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e73590604051901515815260200160405180910390a15060015b90565b6000805433600160a060020a0390811691161461059157600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156105b857600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156106e15781600160a060020a03166005828154811015156105fd57fe5b600091825260209091200154600160a060020a031614156106d95760058054600019810190811061062a57fe5b60009182526020909120015460058054600160a060020a03909216918390811061065057fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061068c906000198301611bc4565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16106e1565b6001016105da565b5050565b600a60205260009081526040902054600160a060020a031681565b6000805433600160a060020a0390811691161461071c57600080fd5b600160a060020a038216151561073157600080fd5b600754600160a060020a03166306f2bf628360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561078a57600080fd5b6102c65a03f1151561079b57600080fd5b5050506040518051600160a060020a038481166000908152600a602052604090208054600160a060020a03191691831691909117905591506107de90508261199a565b81600160a060020a031663095ea7b38260ff60020a60006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561083f57600080fd5b6102c65a03f1151561085057600080fd5b50505060405180519050151561086557600080fd5b7f99d2b755eb38920131acb332adf086ea38d15009f223c21f3aa978d6ab2347868282604051600160a060020a039283168152911660208201526040908101905180910390a15050565b60095481565b600154600160a060020a031681565b6108cc611bed565b600480548060200260200160405190810160405280929190818152602001828054801561092257602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610904575b5050505050905090565b601981565b60005433600160a060020a0390811691161461094c57600080fd5b82600160a060020a031663a9059cbb828460006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156109a957600080fd5b6102c65a03f115156109ba57600080fd5b5050506040518051905015156109cf57600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a03908116911614610a4357600080fd5b600160a060020a03811660009081526003602052604090205460ff1615610a6957600080fd5b60055460329010610a7957600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff191660019081179091556005805490918101610af88382611bc4565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610b3f57600080fd5b600160a060020a0381161515610b5457600080fd5b60088054600160a060020a031916600160a060020a0383811691909117918290557f38622430bb6defd4452b087e8d0b4a6d1c4d35c179c2d7d875d4abb272b9d88b9116604051600160a060020a03909116815260200160405180910390a150565b600160a060020a03331660009081526003602052604081205460ff161515610bdd57600080fd5b600b805460ff191690557f7d7f00509dd73ac4449f698ae75ccc797895eff5fa9d446d3df387598a26e7356000604051901515815260200160405180910390a150600190565b60005433600160a060020a03908116911614610c3e57600080fd5b612710811115610c4d57600080fd5b60098190557f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c768160405190815260200160405180910390a150565b600b54600090819081908190819060ff161515610ca457600080fd5b60085433600160a060020a03908116911614610cbf57600080fd5b610cc98b8a61124c565b1515610cd457600080fd5b610ce18b8a8c600061134d565b935086841115610cf057600080fd5b600160a060020a038b1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610e4757348a14610d2157600080fd5b5050600954600160a060020a038881166000908152600a602052604080822054909216926127109081038c020491839163f39b5b9b91849160019160ff60020a9190516020015260405160e060020a63ffffffff8616028152600481019290925260248201526044016020604051808303818588803b1515610da257600080fd5b6125ee5a03f11515610db357600080fd5b505050506040518051935050600160a060020a03891663a9059cbb898560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e1c57600080fd5b6102c65a03f11515610e2d57600080fd5b505050604051805190501515610e4257600080fd5b610fb7565b3415610e5257600080fd5b8a600160a060020a03166323b872dd33308d60006040516020015260405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401602060405180830381600087803b1515610ebc57600080fd5b6102c65a03f11515610ecd57600080fd5b505050604051805190501515610ee257600080fd5b600160a060020a03808c166000908152600a602052604080822054909216935083916395e3c50b918d9160019160ff60020a91516020015260405160e060020a63ffffffff8616028152600481019390935260248301919091526044820152606401602060405180830381600087803b1515610f5d57600080fd5b6102c65a03f11515610f6e57600080fd5b505050604051805160095461271090810390910204935050600160a060020a0388166108fc84150284604051600060405180830381858888f193505050501515610fb757600080fd5b33600160a060020a03167fea9415385bae08fe9f6dc457b02577166790cde83bb18cc340aac6cb81b824de8c8c8c878d604051600160a060020a039586168152602081019490945291841660408085019190915260608401919091529216608082015260a001905180910390a25060019a9950505050505050505050565b60005433600160a060020a0390811691161461105057600080fd5b600160a060020a038116151561106557600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146110eb57600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a0390811691161461118557600080fd5b600160a060020a038116151561119a57600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480156112935750600160a060020a038083166000908152600a60205260409020541615155b806112de5750600160a060020a038084166000908152600a602052604090205416158015906112de5750600160a060020a03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee145b90505b92915050565b6112ef611bed565b600580548060200260200160405190810160405280929190818152602001828054801561092257602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610904575050505050905090565b600080600080600061135f898961124c565b151561136a57600080fd5b600b5460ff16151561137f576000945061152f565b600160a060020a03891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113ac578793506113de565b600160a060020a03881673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113d9578893506113de565b600080fd5b600160a060020a038085166000908152600a602052604090205481169350891673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156114975750600954612710908103870204600160a060020a03831663cd7724c38260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561147557600080fd5b6102c65a03f1151561148657600080fd5b505050604051805190509150611510565b82600160a060020a03166395b68fe78860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156114e657600080fd5b6102c65a03f115156114f757600080fd5b5050506040518051600954612710908103909102049250505b61152c878361151e8c611a5d565b6115278c611a5d565b611b21565b94505b50505050949350505050565b600754600160a060020a031681565b60005433600160a060020a0390811691161461156557600080fd5b600160a060020a03811660009081526002602052604090205460ff161561158b57600080fd5b6004546032901061159b57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff191660019081179091556004805490918101610af88382611bc4565b60005433600160a060020a0390811691161461163557600080fd5b600160a060020a038082166000908152600a602052604090205416151561165b57600080fd5b600160a060020a0381166000908152600a6020526040908190208054600160a060020a03191690557f6621c4efc5efa31320394260425b7d14cbb9d7e3754b2c98c04af66b1cbf315b90829051600160a060020a03909116815260200160405180910390a150565b6000805433600160a060020a039081169116146116df57600080fd5b600160a060020a03821660009081526002602052604090205460ff16151561170657600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156106e15781600160a060020a031660048281548110151561174b57fe5b600091825260209091200154600160a060020a031614156118275760048054600019810190811061177857fe5b60009182526020909120015460048054600160a060020a03909216918390811061179e57fe5b60009182526020909120018054600160a060020a031916600160a060020a03929092169190911790556004805460001901906117da9082611bc4565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16106e1565b600101611728565b600854600160a060020a031681565b60005433600160a060020a0390811691161461185957600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f19350505050151561188a57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b6000600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156119095750600160a060020a038116316112e1565b82600160a060020a03166370a082318360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561196057600080fd5b6102c65a03f1151561197157600080fd5b5050506040518051905090506112e1565b600b5460ff1681565b600054600160a060020a031681565b600160a060020a03811673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156119e057600160a060020a038116600090815260066020526040902060129055611a5a565b80600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611a2657600080fd5b6102c65a03f11515611a3757600080fd5b5050506040518051600160a060020a038316600090815260066020526040902055505b50565b600080600160a060020a03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611a8e5760129150611b1b565b50600160a060020a038216600090815260066020526040902054801515611b175782600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611af557600080fd5b6102c65a03f11515611b0657600080fd5b505050604051805190509150611b1b565b8091505b50919050565b60006b204fce5e3e25026110000000851115611b3c57600080fd5b6b204fce5e3e25026110000000841115611b5557600080fd5b828210611b905760128383031115611b6c57600080fd5b84838303600a0a02670de0b6b3a76400008502811515611b8857fe5b049050611bbc565b60128284031115611ba057600080fd5b84828403600a0a670de0b6b3a7640000860202811515611b8857fe5b949350505050565b815481835581811511611be857600083815260209020611be8918101908301611bff565b505050565b60206040519081016040526000815290565b61057291905b80821115611c195760008155600101611c05565b50905600a165627a7a723058201517c441fcd549d3564d6dbb0b6b75cf2e0c063149931f74eab2a44a813ece4e0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c0a47dfe034b400b47bdad5fecda2621de6c4d950000000000000000000000002259099897afaf3813fef3284b91d2b227b66ad400000000000000000000000065897adcba42dcca5dd162c647b1cc3e31238490
-----Decoded View---------------
Arg [0] : _uniswapFactory (address): 0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95
Arg [1] : _admin (address): 0x2259099897AfAf3813fef3284b91D2B227b66AD4
Arg [2] : _kyberNetwork (address): 0x65897aDCBa42dcCA5DD162c647b1cC3E31238490
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c0a47dfe034b400b47bdad5fecda2621de6c4d95
Arg [1] : 0000000000000000000000002259099897afaf3813fef3284b91d2b227b66ad4
Arg [2] : 00000000000000000000000065897adcba42dcca5dd162c647b1cc3e31238490
Swarm Source
bzzr://1517c441fcd549d3564d6dbb0b6b75cf2e0c063149931f74eab2a44a813ece4e
Loading...
Loading
Loading...
Loading
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.