ETH Price: $1,922.46 (+1.30%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Sanity Rates106840692020-08-18 12:48:091669 days ago1597754889IN
0xdfc85C08...26ffb7B13
0 ETH0.0037993129
Set Sanity Rates106840612020-08-18 12:45:491669 days ago1597754749IN
0xdfc85C08...26ffb7B13
0 ETH0.00405295137.5
Set Sanity Rates106840242020-08-18 12:40:281669 days ago1597754428IN
0xdfc85C08...26ffb7B13
0 ETH0.00397278135.00000145
Set Sanity Rates106838632020-08-18 12:02:161669 days ago1597752136IN
0xdfc85C08...26ffb7B13
0 ETH0.00487547137.5
Set Sanity Rates106837722020-08-18 11:44:221669 days ago1597751062IN
0xdfc85C08...26ffb7B13
0 ETH0.00304409103.4
Set Sanity Rates106837482020-08-18 11:39:471669 days ago1597750787IN
0xdfc85C08...26ffb7B13
0 ETH0.00359314122
Set Sanity Rates106833802020-08-18 10:19:051670 days ago1597745945IN
0xdfc85C08...26ffb7B13
0 ETH0.00454281128.205
Set Sanity Rates106832902020-08-18 9:59:471670 days ago1597744787IN
0xdfc85C08...26ffb7B13
0 ETH0.0038272130
Set Sanity Rates106832222020-08-18 9:43:291670 days ago1597743809IN
0xdfc85C08...26ffb7B13
0 ETH0.00362112123
Set Sanity Rates106829782020-08-18 8:48:251670 days ago1597740505IN
0xdfc85C08...26ffb7B13
0 ETH0.00338698115
Set Sanity Rates106828772020-08-18 8:23:491670 days ago1597739029IN
0xdfc85C08...26ffb7B13
0 ETH0.00324104110.00000145
Set Sanity Rates106824952020-08-18 7:03:301670 days ago1597734210IN
0xdfc85C08...26ffb7B13
0 ETH0.00388924132
Set Sanity Rates106824232020-08-18 6:45:491670 days ago1597733149IN
0xdfc85C08...26ffb7B13
0 ETH0.00371095126
Set Sanity Rates106822872020-08-18 6:13:241670 days ago1597731204IN
0xdfc85C08...26ffb7B13
0 ETH0.00323708110
Set Sanity Rates106822782020-08-18 6:11:581670 days ago1597731118IN
0xdfc85C08...26ffb7B13
0 ETH0.00356369121
Set Sanity Rates106822512020-08-18 6:04:521670 days ago1597730692IN
0xdfc85C08...26ffb7B13
0 ETH0.0033856115
Set Sanity Rates106822362020-08-18 6:02:031670 days ago1597730523IN
0xdfc85C08...26ffb7B13
0 ETH0.00335889114
Set Sanity Rates106821962020-08-18 5:53:311670 days ago1597730011IN
0xdfc85C08...26ffb7B13
0 ETH0.00332536113
Set Sanity Rates106820622020-08-18 5:23:241670 days ago1597728204IN
0xdfc85C08...26ffb7B13
0 ETH0.0028285496
Set Sanity Rates106819292020-08-18 4:54:121670 days ago1597726452IN
0xdfc85C08...26ffb7B13
0 ETH0.00362259123
Set Sanity Rates106819122020-08-18 4:50:381670 days ago1597726238IN
0xdfc85C08...26ffb7B13
0 ETH0.00326696110.88
Set Sanity Rates106818702020-08-18 4:40:181670 days ago1597725618IN
0xdfc85C08...26ffb7B13
0 ETH0.00301171102.3
Set Sanity Rates106817832020-08-18 4:22:051670 days ago1597724525IN
0xdfc85C08...26ffb7B13
0 ETH0.00362407123
Set Sanity Rates106817742020-08-18 4:19:491670 days ago1597724389IN
0xdfc85C08...26ffb7B13
0 ETH0.0044677126
Set Sanity Rates106815302020-08-18 3:23:391670 days ago1597721019IN
0xdfc85C08...26ffb7B13
0 ETH0.00391846133.1
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SanityRates

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 2018-02-06
*/

pragma solidity 0.4.18;

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

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

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

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

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

contract SanityRates is SanityRatesInterface, Withdrawable, Utils {
    mapping(address=>uint) public tokenRate;
    mapping(address=>uint) public reasonableDiffInBps;

    function SanityRates(address _admin) public {
        require(_admin != address(0));
        admin = _admin;
    }

    function setReasonableDiff(ERC20[] srcs, uint[] diff) public onlyAdmin {
        require(srcs.length == diff.length);
        for (uint i = 0; i < srcs.length; i++) {
            require(diff[i] <= 100 * 100);
            reasonableDiffInBps[srcs[i]] = diff[i];
        }
    }

    function setSanityRates(ERC20[] srcs, uint[] rates) public onlyOperator {
        require(srcs.length == rates.length);

        for (uint i = 0; i < srcs.length; i++) {
            require(rates[i] <= MAX_RATE);
            tokenRate[srcs[i]] = rates[i];
        }
    }

    function getSanityRate(ERC20 src, ERC20 dest) public view returns(uint) {
        if (src != ETH_TOKEN_ADDRESS && dest != ETH_TOKEN_ADDRESS) return 0;

        uint rate;
        address token;
        if (src == ETH_TOKEN_ADDRESS) {
            rate = (PRECISION*PRECISION)/tokenRate[dest];
            token = dest;
        } else {
            rate = tokenRate[src];
            token = src;
        }

        return rate * (10000 + reasonableDiffInBps[token])/10000;
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"alerter","type":"address"}],"name":"removeAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getOperators","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"amount","type":"uint256"},{"name":"sendTo","type":"address"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAlerter","type":"address"}],"name":"addAlerter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"reasonableDiffInBps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"srcs","type":"address[]"},{"name":"diff","type":"uint256[]"}],"name":"setReasonableDiff","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newAdmin","type":"address"}],"name":"transferAdminQuickly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getAlerters","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"src","type":"address"},{"name":"dest","type":"address"}],"name":"getSanityRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"operator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenRate","outputs":[{"name":"","type":"uint256"}],"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":false,"inputs":[{"name":"srcs","type":"address[]"},{"name":"rates","type":"uint256[]"}],"name":"setSanityRates","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_admin","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"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"}]

6060604052341561000f57600080fd5b60405160208061115a8339810160405280805160008054600160a060020a03191633600160a060020a039081169190911790915590925082161515905061005557600080fd5b60008054600160a060020a03909216600160a060020a03199092169190911790556110d5806100856000396000f3006060604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301a12fd38114610100578063267822471461012157806327a099d8146101505780633ccdbb28146101b6578063408ee7fe146101df5780635463a2e4146101fe5780635c53ec591461022f57806375829def146102be57806377f50f97146102dd5780637acc8678146102f05780637c423f541461030f5780639870d7fe14610322578063a58092b714610341578063ac8a584a14610366578063c57fbf9014610385578063ce56c454146103a4578063f5db370f146103c6578063f851a44014610455575b600080fd5b341561010b57600080fd5b61011f600160a060020a0360043516610468565b005b341561012c57600080fd5b6101346105d8565b604051600160a060020a03909116815260200160405180910390f35b341561015b57600080fd5b6101636105e7565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156101a257808201518382015260200161018a565b505050509050019250505060405180910390f35b34156101c157600080fd5b61011f600160a060020a036004358116906024359060443516610650565b34156101ea57600080fd5b61011f600160a060020a0360043516610760565b341561020957600080fd5b61021d600160a060020a036004351661085c565b60405190815260200160405180910390f35b341561023a57600080fd5b61011f60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061086e95505050505050565b34156102c957600080fd5b61011f600160a060020a0360043516610920565b34156102e857600080fd5b61011f6109bb565b34156102fb57600080fd5b61011f600160a060020a0360043516610a55565b341561031a57600080fd5b610163610b37565b341561032d57600080fd5b61011f600160a060020a0360043516610b9d565b341561034c57600080fd5b61021d600160a060020a0360043581169060243516610c6d565b341561037157600080fd5b61011f600160a060020a0360043516610d75565b341561039057600080fd5b61021d600160a060020a0360043516610ee1565b34156103af57600080fd5b61011f600435600160a060020a0360243516610ef3565b34156103d157600080fd5b61011f600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610f8695505050505050565b341561046057600080fd5b610134611046565b6000805433600160a060020a0390811691161461048457600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156104ab57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156105d45781600160a060020a03166005828154811015156104f057fe5b600091825260209091200154600160a060020a031614156105cc5760058054600019810190811061051d57fe5b60009182526020909120015460058054600160a060020a03909216918390811061054357fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061057f906000198301611055565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16105d4565b6001016104cd565b5050565b600154600160a060020a031681565b6105ef611079565b600480548060200260200160405190810160405280929190818152602001828054801561064557602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610627575b505050505090505b90565b60005433600160a060020a0390811691161461066b57600080fd5b82600160a060020a031663a9059cbb82846000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156106e157600080fd5b6102c65a03f115156106f257600080fd5b50505060405180519050151561070757600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a0390811691161461077b57600080fd5b600160a060020a03811660009081526003602052604090205460ff16156107a157600080fd5b600554603290106107b157600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff1916600190811790915560058054909181016108308382611055565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60086020526000908152604090205481565b6000805433600160a060020a0390811691161461088a57600080fd5b815183511461089857600080fd5b5060005b825181101561091b576127108282815181106108b457fe5b9060200190602002015111156108c957600080fd5b8181815181106108d557fe5b90602001906020020151600860008584815181106108ef57fe5b90602001906020020151600160a060020a0316815260208101919091526040016000205560010161089c565b505050565b60005433600160a060020a0390811691161461093b57600080fd5b600160a060020a038116151561095057600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146109d657600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a03908116911614610a7057600080fd5b600160a060020a0381161515610a8557600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b610b3f611079565b600580548060200260200160405190810160405280929190818152602001828054801561064557602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610627575050505050905090565b60005433600160a060020a03908116911614610bb857600080fd5b600160a060020a03811660009081526002602052604090205460ff1615610bde57600080fd5b60045460329010610bee57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff1916600190811790915560048054909181016108308382611055565b60008080600160a060020a03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14801590610cbb5750600160a060020a03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b15610cc95760009250610d6d565b600160a060020a03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610d2b57600160a060020a0384166000908152600760205260409020546ec097ce7bc90715b34b9f1000000000811515610d2057fe5b049150839050610d48565b5050600160a060020a038316600090815260076020526040902054835b600160a060020a03811660009081526008602052604090205461271090810183020492505b505092915050565b6000805433600160a060020a03908116911614610d9157600080fd5b600160a060020a03821660009081526002602052604090205460ff161515610db857600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156105d45781600160a060020a0316600482815481101515610dfd57fe5b600091825260209091200154600160a060020a03161415610ed957600480546000198101908110610e2a57fe5b60009182526020909120015460048054600160a060020a039092169183908110610e5057fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600480546000190190610e8c9082611055565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16105d4565b600101610dda565b60076020526000908152604090205481565b60005433600160a060020a03908116911614610f0e57600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515610f3f57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600160a060020a03331660009081526002602052604081205460ff161515610fad57600080fd5b8151835114610fbb57600080fd5b5060005b825181101561091b5769d3c21bcecceda1000000828281518110610fdf57fe5b906020019060200201511115610ff457600080fd5b81818151811061100057fe5b906020019060200201516007600085848151811061101a57fe5b90602001906020020151600160a060020a03168152602081019190915260400160002055600101610fbf565b600054600160a060020a031681565b81548183558181151161091b5760008381526020902061091b91810190830161108b565b60206040519081016040526000815290565b61064d91905b808211156110a55760008155600101611091565b50905600a165627a7a723058204e50a8fa39a18734741cc84ff04a63a840c3655af3919ea3bcb549a91a9ecd9a002900000000000000000000000031fd060138ed4ce512afe0d93f127ad1f4799142

Deployed Bytecode

0x6060604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301a12fd38114610100578063267822471461012157806327a099d8146101505780633ccdbb28146101b6578063408ee7fe146101df5780635463a2e4146101fe5780635c53ec591461022f57806375829def146102be57806377f50f97146102dd5780637acc8678146102f05780637c423f541461030f5780639870d7fe14610322578063a58092b714610341578063ac8a584a14610366578063c57fbf9014610385578063ce56c454146103a4578063f5db370f146103c6578063f851a44014610455575b600080fd5b341561010b57600080fd5b61011f600160a060020a0360043516610468565b005b341561012c57600080fd5b6101346105d8565b604051600160a060020a03909116815260200160405180910390f35b341561015b57600080fd5b6101636105e7565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156101a257808201518382015260200161018a565b505050509050019250505060405180910390f35b34156101c157600080fd5b61011f600160a060020a036004358116906024359060443516610650565b34156101ea57600080fd5b61011f600160a060020a0360043516610760565b341561020957600080fd5b61021d600160a060020a036004351661085c565b60405190815260200160405180910390f35b341561023a57600080fd5b61011f60046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284375094965061086e95505050505050565b34156102c957600080fd5b61011f600160a060020a0360043516610920565b34156102e857600080fd5b61011f6109bb565b34156102fb57600080fd5b61011f600160a060020a0360043516610a55565b341561031a57600080fd5b610163610b37565b341561032d57600080fd5b61011f600160a060020a0360043516610b9d565b341561034c57600080fd5b61021d600160a060020a0360043581169060243516610c6d565b341561037157600080fd5b61011f600160a060020a0360043516610d75565b341561039057600080fd5b61021d600160a060020a0360043516610ee1565b34156103af57600080fd5b61011f600435600160a060020a0360243516610ef3565b34156103d157600080fd5b61011f600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610f8695505050505050565b341561046057600080fd5b610134611046565b6000805433600160a060020a0390811691161461048457600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156104ab57600080fd5b50600160a060020a0381166000908152600360205260408120805460ff191690555b6005548110156105d45781600160a060020a03166005828154811015156104f057fe5b600091825260209091200154600160a060020a031614156105cc5760058054600019810190811061051d57fe5b60009182526020909120015460058054600160a060020a03909216918390811061054357fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600580549061057f906000198301611055565b507f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762826000604051600160a060020a039092168252151560208201526040908101905180910390a16105d4565b6001016104cd565b5050565b600154600160a060020a031681565b6105ef611079565b600480548060200260200160405190810160405280929190818152602001828054801561064557602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610627575b505050505090505b90565b60005433600160a060020a0390811691161461066b57600080fd5b82600160a060020a031663a9059cbb82846000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156106e157600080fd5b6102c65a03f115156106f257600080fd5b50505060405180519050151561070757600080fd5b7f72cb8a894ddb372ceec3d2a7648d86f17d5a15caae0e986c53109b8a9a9385e6838383604051600160a060020a03938416815260208101929092529091166040808301919091526060909101905180910390a1505050565b60005433600160a060020a0390811691161461077b57600080fd5b600160a060020a03811660009081526003602052604090205460ff16156107a157600080fd5b600554603290106107b157600080fd5b7f5611bf3e417d124f97bf2c788843ea8bb502b66079fbee02158ef30b172cb762816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600360205260409020805460ff1916600190811790915560058054909181016108308382611055565b5060009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055565b60086020526000908152604090205481565b6000805433600160a060020a0390811691161461088a57600080fd5b815183511461089857600080fd5b5060005b825181101561091b576127108282815181106108b457fe5b9060200190602002015111156108c957600080fd5b8181815181106108d557fe5b90602001906020020151600860008584815181106108ef57fe5b90602001906020020151600160a060020a0316815260208101919091526040016000205560010161089c565b505050565b60005433600160a060020a0390811691161461093b57600080fd5b600160a060020a038116151561095057600080fd5b6001547f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4090600160a060020a0316604051600160a060020a03909116815260200160405180910390a160018054600160a060020a031916600160a060020a0392909216919091179055565b60015433600160a060020a039081169116146109d657600080fd5b6001546000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed91600160a060020a039081169116604051600160a060020a039283168152911660208201526040908101905180910390a16001805460008054600160a060020a0319908116600160a060020a03841617909155169055565b60005433600160a060020a03908116911614610a7057600080fd5b600160a060020a0381161515610a8557600080fd5b7f3b81caf78fa51ecbc8acb482fd7012a277b428d9b80f9d156e8a54107496cc4081604051600160a060020a03909116815260200160405180910390a16000547f65da1cfc2c2e81576ad96afb24a581f8e109b7a403b35cbd3243a1c99efdb9ed908290600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a160008054600160a060020a031916600160a060020a0392909216919091179055565b610b3f611079565b600580548060200260200160405190810160405280929190818152602001828054801561064557602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610627575050505050905090565b60005433600160a060020a03908116911614610bb857600080fd5b600160a060020a03811660009081526002602052604090205460ff1615610bde57600080fd5b60045460329010610bee57600080fd5b7f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b816001604051600160a060020a039092168252151560208201526040908101905180910390a1600160a060020a0381166000908152600260205260409020805460ff1916600190811790915560048054909181016108308382611055565b60008080600160a060020a03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14801590610cbb5750600160a060020a03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14155b15610cc95760009250610d6d565b600160a060020a03851673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415610d2b57600160a060020a0384166000908152600760205260409020546ec097ce7bc90715b34b9f1000000000811515610d2057fe5b049150839050610d48565b5050600160a060020a038316600090815260076020526040902054835b600160a060020a03811660009081526008602052604090205461271090810183020492505b505092915050565b6000805433600160a060020a03908116911614610d9157600080fd5b600160a060020a03821660009081526002602052604090205460ff161515610db857600080fd5b50600160a060020a0381166000908152600260205260408120805460ff191690555b6004548110156105d45781600160a060020a0316600482815481101515610dfd57fe5b600091825260209091200154600160a060020a03161415610ed957600480546000198101908110610e2a57fe5b60009182526020909120015460048054600160a060020a039092169183908110610e5057fe5b60009182526020909120018054600160a060020a031916600160a060020a0392909216919091179055600480546000190190610e8c9082611055565b507f091a7a4b85135fdd7e8dbc18b12fabe5cc191ea867aa3c2e1a24a102af61d58b826000604051600160a060020a039092168252151560208201526040908101905180910390a16105d4565b600101610dda565b60076020526000908152604090205481565b60005433600160a060020a03908116911614610f0e57600080fd5b600160a060020a03811682156108fc0283604051600060405180830381858888f193505050501515610f3f57600080fd5b7fec47e7ed86c86774d1a72c19f35c639911393fe7c1a34031fdbd260890da90de8282604051918252600160a060020a031660208201526040908101905180910390a15050565b600160a060020a03331660009081526002602052604081205460ff161515610fad57600080fd5b8151835114610fbb57600080fd5b5060005b825181101561091b5769d3c21bcecceda1000000828281518110610fdf57fe5b906020019060200201511115610ff457600080fd5b81818151811061100057fe5b906020019060200201516007600085848151811061101a57fe5b90602001906020020151600160a060020a03168152602081019190915260400160002055600101610fbf565b600054600160a060020a031681565b81548183558181151161091b5760008381526020902061091b91810190830161108b565b60206040519081016040526000815290565b61064d91905b808211156110a55760008155600101611091565b50905600a165627a7a723058204e50a8fa39a18734741cc84ff04a63a840c3655af3919ea3bcb549a91a9ecd9a0029

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

00000000000000000000000031fd060138ed4ce512afe0d93f127ad1f4799142

-----Decoded View---------------
Arg [0] : _admin (address): 0x31fD060138Ed4cE512AFE0d93f127AD1f4799142

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000031fd060138ed4ce512afe0d93f127ad1f4799142


Swarm Source

bzzr://4e50a8fa39a18734741cc84ff04a63a840c3655af3919ea3bcb549a91a9ecd9a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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