ETH Price: $2,813.94 (+14.69%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Get Rate67918332018-11-29 2:53:082259 days ago1543459988IN
0x22222c19...2C4dB74E6
0 ETH0.000582119
Transfer To62063522018-08-24 17:41:172355 days ago1535132477IN
0x22222c19...2C4dB74E6
0 ETH0.000057942
Set Fallback62061982018-08-24 17:05:052355 days ago1535130305IN
0x22222c19...2C4dB74E6
0 ETH0.0004799311
Set Fallback62061292018-08-24 16:46:452355 days ago1535129205IN
0x22222c19...2C4dB74E6
0 ETH0.0001504211
Set Fallback62060912018-08-24 16:36:392355 days ago1535128599IN
0x22222c19...2C4dB74E6
0 ETH0.0004799311
Set Expiration T...61535822018-08-15 19:19:442364 days ago1534360784IN
0x22222c19...2C4dB74E6
0 ETH0.000164296
Set Url61168032018-08-09 14:20:082370 days ago1533824408IN
0x22222c19...2C4dB74E6
0 ETH0.001201560
Set Url61045382018-08-07 12:35:042372 days ago1533645304IN
0x22222c19...2C4dB74E6
0 ETH0.000097253
Set Url61045302018-08-07 12:33:142372 days ago1533645194IN
0x22222c19...2C4dB74E6
0 ETH0.000301562.8
Add Currency54757212018-04-20 19:02:562481 days ago1524250976IN
0x22222c19...2C4dB74E6
0 ETH0.00059587
Add Delegate54757132018-04-20 19:01:202481 days ago1524250880IN
0x22222c19...2C4dB74E6
0 ETH0.000308247

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RipioOracle

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-04-20
*/

pragma solidity ^0.4.19;

contract Ownable {
    address public owner;

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function Ownable() public {
        owner = msg.sender; 
    }

    /**
        @dev Transfers the ownership of the contract.

        @param _to Address of the new owner
    */
    function transferTo(address _to) public onlyOwner returns (bool) {
        require(_to != address(0));
        owner = _to;
        return true;
    } 
} 


contract Delegable is Ownable {
    mapping(address => DelegateLog) public delegates;

    struct DelegateLog {
        uint256 started;
        uint256 ended;
    }

    /**
        @dev Only allows current delegates.
    */
    modifier onlyDelegate() {
        DelegateLog memory delegateLog = delegates[msg.sender];
        require(delegateLog.started != 0 && delegateLog.ended == 0);
        _;
    }
    
    /**
        @dev Checks if a delegate existed at the timestamp.

        @param _address Address of the delegate
        @param timestamp Moment to check

        @return true if at the timestamp the delegate existed
    */
    function wasDelegate(address _address, uint256 timestamp) public view returns (bool) {
        DelegateLog memory delegateLog = delegates[_address];
        return timestamp >= delegateLog.started && delegateLog.started != 0 && (delegateLog.ended == 0 || timestamp < delegateLog.ended);
    }

    /**
        @dev Checks if a delegate is active

        @param _address Address of the delegate
        
        @return true if the delegate is active
    */
    function isDelegate(address _address) public view returns (bool) {
        DelegateLog memory delegateLog = delegates[_address];
        return delegateLog.started != 0 && delegateLog.ended == 0;
    }

    /**
        @dev Adds a new worker.

        @param _address Address of the worker
    */
    function addDelegate(address _address) public onlyOwner returns (bool) {
        DelegateLog storage delegateLog = delegates[_address];
        require(delegateLog.started == 0);
        delegateLog.started = block.timestamp;
        return true;
    }

    /**
        @dev Removes an existing worker, removed workers can't be added back.

        @param _address Address of the worker to remove
    */
    function removeDelegate(address _address) public onlyOwner returns (bool) {
        DelegateLog storage delegateLog = delegates[_address];
        require(delegateLog.started != 0 && delegateLog.ended == 0);
        delegateLog.ended = block.timestamp;
        return true;
    }
}

/**
    @dev Defines the interface of a standard RCN oracle.

    The oracle is an agent in the RCN network that supplies a convertion rate between RCN and any other currency,
    it's primarily used by the exchange but could be used by any other agent.
*/
contract Oracle is Ownable {
    uint256 public constant VERSION = 4;

    event NewSymbol(bytes32 _currency);

    mapping(bytes32 => bool) public supported;
    bytes32[] public currencies;

    /**
        @dev Returns the url where the oracle exposes a valid "oracleData" if needed
    */
    function url() public view returns (string);

    /**
        @dev Returns a valid convertion rate from the currency given to RCN

        @param symbol Symbol of the currency
        @param data Generic data field, could be used for off-chain signing
    */
    function getRate(bytes32 symbol, bytes data) public returns (uint256 rate, uint256 decimals);

    /**
        @dev Adds a currency to the oracle, once added it cannot be removed

        @param ticker Symbol of the currency

        @return if the creation was done successfully
    */
    function addCurrency(string ticker) public onlyOwner returns (bool) {
        bytes32 currency = encodeCurrency(ticker);
        NewSymbol(currency);
        supported[currency] = true;
        currencies.push(currency);
        return true;
    }

    /**
        @return the currency encoded as a bytes32
    */
    function encodeCurrency(string currency) public pure returns (bytes32 o) {
        require(bytes(currency).length <= 32);
        assembly {
            o := mload(add(currency, 32))
        }
    }
    
    /**
        @return the currency string from a encoded bytes32
    */
    function decodeCurrency(bytes32 b) public pure returns (string o) {
        uint256 ns = 256;
        while (true) { if (ns == 0 || (b<<ns-8) != 0) break; ns -= 8; }
        assembly {
            ns := div(ns, 8)
            o := mload(0x40)
            mstore(0x40, add(o, and(add(add(ns, 0x20), 0x1f), not(0x1f))))
            mstore(o, ns)
            mstore(add(o, 32), b)
        }
    }
}


contract RipioOracle is Oracle, Delegable {
    uint256 public expiration = 15 minutes;

    uint constant private INDEX_TIMESTAMP = 0;
    uint constant private INDEX_RATE = 1;
    uint constant private INDEX_DECIMALS = 2;
    uint constant private INDEX_V = 3;
    uint constant private INDEX_R = 4;
    uint constant private INDEX_S = 5;

    string private infoUrl;

    mapping(bytes32 => RateCache) private cache;

    address public fallback;

    struct RateCache {
        uint256 timestamp;
        uint256 rate;
        uint256 decimals;
    }

    function url() public view returns (string) {
        return infoUrl;
    }

    /**
        @notice Sets the time window of the validity of the signed rates.
        
        @param time Duration of the window

        @return true is the time was set correctly
    */
    function setExpirationTime(uint256 time) public onlyOwner returns (bool) {
        expiration = time;
        return true;
    }

    /**
        @notice Sets the URL where the oracleData can be retrieved

        @param _url The URL

        @return true if it was set correctly
    */
    function setUrl(string _url) public onlyOwner returns (bool) {
        infoUrl = _url;
        return true;
    }

    /**
        @notice Sets the address of another contract to handle the requests of this contract,
            it can be used to deprecate this Oracle

        @dev The fallback is only used if is not address(0)

        @param _fallback The address of the contract

        @return true if it was set correctly
    */
    function setFallback(address _fallback) public onlyOwner returns (bool) {
        fallback = _fallback;
        return true;
    }

    /**
        @notice Reads a bytes32 word of a bytes array

        @param data The bytes array
        @param index The index of the word, in chunks of 32 bytes

        @return o The bytes32 word readed, or 0x0 if index out of bounds
    */
    function readBytes32(bytes data, uint256 index) internal pure returns (bytes32 o) {
        if(data.length / 32 > index) {
            assembly {
                o := mload(add(data, add(32, mul(32, index))))
            }
        }
    }

    /**
        @notice Executes a transaction from this contract

        @dev It can be used to retrieve lost tokens or ETH

        @param to Address to call
        @param value Ethers to send
        @param data Data for the call

        @return true If the call didn't throw an exception
    */
    function sendTransaction(address to, uint256 value, bytes data) public onlyOwner returns (bool) {
        return to.call.value(value)(data);
    }


    /**
        @dev Retrieves the convertion rate of a given currency, the information of the rate is carried over the 
        data field. If there is a newer rate on the cache, that rate is delivered and the data field is ignored.

        If the data contains a more recent rate than the cache, the cache is updated.

        @param currency Hash of the currency
        @param data Data with the rate signed by a delegate

        @return the rate and decimals of the currency convertion
    */
    function getRate(bytes32 currency, bytes data) public returns (uint256, uint256) {
        if (fallback != address(0)) {
            return Oracle(fallback).getRate(currency, data);
        }

        uint256 timestamp = uint256(readBytes32(data, INDEX_TIMESTAMP));
        require(timestamp <= block.timestamp);

        uint256 expirationTime = block.timestamp - expiration;

        if (cache[currency].timestamp >= timestamp && cache[currency].timestamp >= expirationTime) {
            return (cache[currency].rate, cache[currency].decimals);
        } else {
            require(timestamp >= expirationTime);
            uint256 rate = uint256(readBytes32(data, INDEX_RATE));
            uint256 decimals = uint256(readBytes32(data, INDEX_DECIMALS));
            uint8 v = uint8(readBytes32(data, INDEX_V));
            bytes32 r = readBytes32(data, INDEX_R);
            bytes32 s = readBytes32(data, INDEX_S);
            
            bytes32 _hash = keccak256(this, currency, rate, decimals, timestamp);
            address signer = ecrecover(keccak256("\x19Ethereum Signed Message:\n32", _hash),v,r,s);

            require(isDelegate(signer));

            cache[currency] = RateCache(timestamp, rate, decimals);

            return (rate, decimals);
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isDelegate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"b","type":"bytes32"}],"name":"decodeCurrency","outputs":[{"name":"o","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_url","type":"string"}],"name":"setUrl","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_fallback","type":"address"}],"name":"setFallback","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"timestamp","type":"uint256"}],"name":"wasDelegate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"currency","type":"bytes32"},{"name":"data","type":"bytes"}],"name":"getRate","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"expiration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fallback","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"url","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"delegates","outputs":[{"name":"started","type":"uint256"},{"name":"ended","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"currency","type":"string"}],"name":"encodeCurrency","outputs":[{"name":"o","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeDelegate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"supported","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"}],"name":"transferTo","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"ticker","type":"string"}],"name":"addCurrency","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setExpirationTime","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"sendTransaction","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addDelegate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"currencies","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VERSION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_currency","type":"bytes32"}],"name":"NewSymbol","type":"event"}]

606060405261038460045560008054600160a060020a033316600160a060020a0319909116179055610f2e806100366000396000f30060606040526004361061011c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630777962781146101215780631b962c6514610154578063252498a2146101e157806332b12eac146102325780633a412849146102515780633ae26afa146102735780634665096d146102e1578063552079dc146103065780635600f04f14610335578063587cde1e146103485780635ee759e81461036757806367e7646f146103b85780637193f2f0146103d75780638da5cb5b146103ed578063a03fa7e314610400578063a1d0a48f1461041f578063c0cc365d14610470578063e5e288e514610486578063e71bdf41146104eb578063f6d1c2711461050a578063ffa1ad7414610520575b600080fd5b341561012c57600080fd5b610140600160a060020a0360043516610533565b604051901515815260200160405180910390f35b341561015f57600080fd5b61016a60043561058a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101a657808201518382015260200161018e565b50505050905090810190601f1680156101d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101ec57600080fd5b61014060046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506105e195505050505050565b341561023d57600080fd5b610140600160a060020a0360043516610619565b341561025c57600080fd5b610140600160a060020a0360043516602435610667565b341561027e57600080fd5b6102c9600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506106d995505050505050565b60405191825260208201526040908101905180910390f35b34156102ec57600080fd5b6102f4610a3f565b60405190815260200160405180910390f35b341561031157600080fd5b610319610a45565b604051600160a060020a03909116815260200160405180910390f35b341561034057600080fd5b61016a610a54565b341561035357600080fd5b6102c9600160a060020a0360043516610afd565b341561037257600080fd5b6102f460046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610b1695505050505050565b34156103c357600080fd5b610140600160a060020a0360043516610b32565b34156103e257600080fd5b610140600435610b93565b34156103f857600080fd5b610319610ba8565b341561040b57600080fd5b610140600160a060020a0360043516610bb7565b341561042a57600080fd5b61014060046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c1a95505050505050565b341561047b57600080fd5b610140600435610cb8565b341561049157600080fd5b61014060048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610cdd95505050505050565b34156104f657600080fd5b610140600160a060020a0360043516610d7c565b341561051557600080fd5b6102f4600435610dca565b341561052b57600080fd5b6102f4610de9565b600061053d610e18565b600160a060020a03831660009081526003602052604090819020908051908101604052815481526001909101546020820152905080511580159061058357508060200151155b9392505050565b610592610e2f565b6101005b8015806105ab5750600719810160020a830215155b156105b5576105be565b60071901610596565b60089004604051603f8201601f1916810160405290815260208101929092525090565b6000805433600160a060020a039081169116146105fd57600080fd5b6005828051610610929160200190610e41565b50600192915050565b6000805433600160a060020a0390811691161461063557600080fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b6000610671610e18565b600160a060020a038416600090815260036020526040908190209080519081016040528154815260019091015460208201529050805183101580156106b65750805115155b80156106d15750806020015115806106d15750806020015183105b949350505050565b6007546000908190819081908190819081908190819081908190600160a060020a03161561080257600754600160a060020a0316633ae26afa8e8e6000604051604001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815260048101838152604060248301908152909160440183818151815260200191508051906020019080838360005b8381101561078d578082015183820152602001610775565b50505050905090810190601f1680156107ba5780820380516001836020036101000a031916815260200191505b5093505050506040805180830381600087803b15156107d857600080fd5b6102c65a03f115156107e957600080fd5b505050604051805190602001805190509a509a50610a2f565b61080d8c6000610dee565b98504289111561081c57600080fd5b60045460008e81526006602052604090205442919091039850899010801590610854575060008d815260066020526040902054889010155b1561087c5760008d81526006602052604090206001810154600290910154909b509950610a2f565b8789101561088957600080fd5b6108948c6001610dee565b96506108a18c6002610dee565b95506108ae8c6003610dee565b94506108bb8c6004610dee565b93506108c88c6005610dee565b9250308d88888c604051600160a060020a03959095166c010000000000000000000000000285526014850193909352603484019190915260548301526074820152609401604051809103902091506001826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0160405180910390208686866040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156109b457600080fd5b50506020604051035190506109c881610533565b15156109d357600080fd5b6060604051908101604052808a815260200188815260200187815250600660008f6000191660001916815260200190815260200160002060008201518155602082015181600101556040820151816002015590505086869a509a505b5050505050505050509250929050565b60045481565b600754600160a060020a031681565b610a5c610e2f565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610af25780601f10610ac757610100808354040283529160200191610af2565b820191906000526020600020905b815481529060010190602001808311610ad557829003601f168201915b505050505090505b90565b6003602052600090815260409020805460019091015482565b6000602082511115610b2757600080fd5b602082015192915050565b60008054819033600160a060020a03908116911614610b5057600080fd5b50600160a060020a0382166000908152600360205260409020805415801590610b7b57506001810154155b1515610b8657600080fd5b4260019182015592915050565b60016020526000908152604090205460ff1681565b600054600160a060020a031681565b6000805433600160a060020a03908116911614610bd357600080fd5b600160a060020a0382161515610be857600080fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60008054819033600160a060020a03908116911614610c3857600080fd5b610c4183610b16565b90507fde8f94bbcb736cb3ffdbd45b3429e721dddb2889215c90bd0816ac212847317b8160405190815260200160405180910390a16000818152600160208190526040909120805460ff1916821790556002805490918101610ca38382610ebf565b50600091825260209091200155506001919050565b6000805433600160a060020a03908116911614610cd457600080fd5b50600455600190565b6000805433600160a060020a03908116911614610cf957600080fd5b83600160a060020a0316838360405180828051906020019080838360005b83811015610d2f578082015183820152602001610d17565b50505050905090810190601f168015610d5c5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f1979650505050505050565b60008054819033600160a060020a03908116911614610d9a57600080fd5b50600160a060020a0382166000908152600360205260409020805415610dbf57600080fd5b429055506001919050565b6002805482908110610dd857fe5b600091825260209091200154905081565b600481565b60008160208451811515610dfe57fe5b041115610e12578160200260200183015190505b92915050565b604080519081016040526000808252602082015290565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e8257805160ff1916838001178555610eaf565b82800160010185558215610eaf579182015b82811115610eaf578251825591602001919060010190610e94565b50610ebb929150610ee8565b5090565b815481835581811511610ee357600083815260209020610ee3918101908301610ee8565b505050565b610afa91905b80821115610ebb5760008155600101610eee5600a165627a7a723058209a20fc556a738dbfd7947b6903047cd04ea56bcfb4d8280680559d170c98478f0029

Deployed Bytecode

0x60606040526004361061011c5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630777962781146101215780631b962c6514610154578063252498a2146101e157806332b12eac146102325780633a412849146102515780633ae26afa146102735780634665096d146102e1578063552079dc146103065780635600f04f14610335578063587cde1e146103485780635ee759e81461036757806367e7646f146103b85780637193f2f0146103d75780638da5cb5b146103ed578063a03fa7e314610400578063a1d0a48f1461041f578063c0cc365d14610470578063e5e288e514610486578063e71bdf41146104eb578063f6d1c2711461050a578063ffa1ad7414610520575b600080fd5b341561012c57600080fd5b610140600160a060020a0360043516610533565b604051901515815260200160405180910390f35b341561015f57600080fd5b61016a60043561058a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101a657808201518382015260200161018e565b50505050905090810190601f1680156101d35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101ec57600080fd5b61014060046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506105e195505050505050565b341561023d57600080fd5b610140600160a060020a0360043516610619565b341561025c57600080fd5b610140600160a060020a0360043516602435610667565b341561027e57600080fd5b6102c9600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506106d995505050505050565b60405191825260208201526040908101905180910390f35b34156102ec57600080fd5b6102f4610a3f565b60405190815260200160405180910390f35b341561031157600080fd5b610319610a45565b604051600160a060020a03909116815260200160405180910390f35b341561034057600080fd5b61016a610a54565b341561035357600080fd5b6102c9600160a060020a0360043516610afd565b341561037257600080fd5b6102f460046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610b1695505050505050565b34156103c357600080fd5b610140600160a060020a0360043516610b32565b34156103e257600080fd5b610140600435610b93565b34156103f857600080fd5b610319610ba8565b341561040b57600080fd5b610140600160a060020a0360043516610bb7565b341561042a57600080fd5b61014060046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c1a95505050505050565b341561047b57600080fd5b610140600435610cb8565b341561049157600080fd5b61014060048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610cdd95505050505050565b34156104f657600080fd5b610140600160a060020a0360043516610d7c565b341561051557600080fd5b6102f4600435610dca565b341561052b57600080fd5b6102f4610de9565b600061053d610e18565b600160a060020a03831660009081526003602052604090819020908051908101604052815481526001909101546020820152905080511580159061058357508060200151155b9392505050565b610592610e2f565b6101005b8015806105ab5750600719810160020a830215155b156105b5576105be565b60071901610596565b60089004604051603f8201601f1916810160405290815260208101929092525090565b6000805433600160a060020a039081169116146105fd57600080fd5b6005828051610610929160200190610e41565b50600192915050565b6000805433600160a060020a0390811691161461063557600080fd5b5060078054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b6000610671610e18565b600160a060020a038416600090815260036020526040908190209080519081016040528154815260019091015460208201529050805183101580156106b65750805115155b80156106d15750806020015115806106d15750806020015183105b949350505050565b6007546000908190819081908190819081908190819081908190600160a060020a03161561080257600754600160a060020a0316633ae26afa8e8e6000604051604001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff851602815260048101838152604060248301908152909160440183818151815260200191508051906020019080838360005b8381101561078d578082015183820152602001610775565b50505050905090810190601f1680156107ba5780820380516001836020036101000a031916815260200191505b5093505050506040805180830381600087803b15156107d857600080fd5b6102c65a03f115156107e957600080fd5b505050604051805190602001805190509a509a50610a2f565b61080d8c6000610dee565b98504289111561081c57600080fd5b60045460008e81526006602052604090205442919091039850899010801590610854575060008d815260066020526040902054889010155b1561087c5760008d81526006602052604090206001810154600290910154909b509950610a2f565b8789101561088957600080fd5b6108948c6001610dee565b96506108a18c6002610dee565b95506108ae8c6003610dee565b94506108bb8c6004610dee565b93506108c88c6005610dee565b9250308d88888c604051600160a060020a03959095166c010000000000000000000000000285526014850193909352603484019190915260548301526074820152609401604051809103902091506001826040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0160405180910390208686866040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f115156109b457600080fd5b50506020604051035190506109c881610533565b15156109d357600080fd5b6060604051908101604052808a815260200188815260200187815250600660008f6000191660001916815260200190815260200160002060008201518155602082015181600101556040820151816002015590505086869a509a505b5050505050505050509250929050565b60045481565b600754600160a060020a031681565b610a5c610e2f565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610af25780601f10610ac757610100808354040283529160200191610af2565b820191906000526020600020905b815481529060010190602001808311610ad557829003601f168201915b505050505090505b90565b6003602052600090815260409020805460019091015482565b6000602082511115610b2757600080fd5b602082015192915050565b60008054819033600160a060020a03908116911614610b5057600080fd5b50600160a060020a0382166000908152600360205260409020805415801590610b7b57506001810154155b1515610b8657600080fd5b4260019182015592915050565b60016020526000908152604090205460ff1681565b600054600160a060020a031681565b6000805433600160a060020a03908116911614610bd357600080fd5b600160a060020a0382161515610be857600080fd5b5060008054600160a060020a03831673ffffffffffffffffffffffffffffffffffffffff199091161790556001919050565b60008054819033600160a060020a03908116911614610c3857600080fd5b610c4183610b16565b90507fde8f94bbcb736cb3ffdbd45b3429e721dddb2889215c90bd0816ac212847317b8160405190815260200160405180910390a16000818152600160208190526040909120805460ff1916821790556002805490918101610ca38382610ebf565b50600091825260209091200155506001919050565b6000805433600160a060020a03908116911614610cd457600080fd5b50600455600190565b6000805433600160a060020a03908116911614610cf957600080fd5b83600160a060020a0316838360405180828051906020019080838360005b83811015610d2f578082015183820152602001610d17565b50505050905090810190601f168015610d5c5780820380516001836020036101000a031916815260200191505b5091505060006040518083038185876187965a03f1979650505050505050565b60008054819033600160a060020a03908116911614610d9a57600080fd5b50600160a060020a0382166000908152600360205260409020805415610dbf57600080fd5b429055506001919050565b6002805482908110610dd857fe5b600091825260209091200154905081565b600481565b60008160208451811515610dfe57fe5b041115610e12578160200260200183015190505b92915050565b604080519081016040526000808252602082015290565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e8257805160ff1916838001178555610eaf565b82800160010185558215610eaf579182015b82811115610eaf578251825591602001919060010190610e94565b50610ebb929150610ee8565b5090565b815481835581811511610ee357600083815260209020610ee3918101908301610ee8565b505050565b610afa91905b80821115610ebb5760008155600101610eee5600a165627a7a723058209a20fc556a738dbfd7947b6903047cd04ea56bcfb4d8280680559d170c98478f0029

Swarm Source

bzzr://9a20fc556a738dbfd7947b6903047cd04ea56bcfb4d8280680559d170c98478f

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.