Contract Overview
Balance: 0 Ether
Transactions: 194697 txns
 Latest 25 txns from a total Of 194697 transactions (+1 PendingTxn)

TxHash Age From To Value [TxFee]
0xb55f29699463b24c8ae99beb838cd47772dea88098930c8bd6a30f61c2c8b1da(pending)0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN  0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether(pending)
0xcc2a6b144c2e262b8db0a6f021272660e59e9f0611ccd122ff5a1c2a8ae7e208 54 secs ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001373383678
0x956a1167c304cbef63f935fd8f420547275ebdf718fdacb7f3217b71dfc20bc12 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001373383678
0x8f0f5472b1ac147dfca9f9376a9014ec287ebc9af34257479d670910ec9e4df32 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001373383678
0x5be2a4893cae69d6a07ef9708c6d2b3a8348b03ecb0ada5884d151fa317dc34e3 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001372329219
0x2697e328262d4936dabab89cfa241697ef451c4e854fa16da80e53a3ca5c42f65 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001372329219
0xdcb140e5d8d89f732ebfe17c9c084633c363db69ab6aa484f226cfdc1ea9a6285 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001245102928
0xbf72b3afd937e4c47444d23c6d4a27fede8e958de8d80be9c7495f71de1e36db6 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001246060366
0x94c4f2a2cea2608a70064725076d045859663803519eb354cd0fda157f47589a8 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001247017803
0x65bb48126386e9e3e79e1b3529e7f533beca8e4894a122b3e8827b888ecf426d8 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001247017803
0xf39850a162e8f959dbdaac9e288f831fa9ad3202ddf58678c5ab7ee3eccc9a239 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001247017803
0x2d499503cd4f1bdafefe9bbe4eadccf8318831b696672fdb01798c88f1938baa11 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001126403141
0xcc7e4cdc9b242a2a38c25beec480bafcd4eaf7426387919d7e5418959e4634d211 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.000916927
0x7d88e6d28b09814308245e9875d726f6324019d61e794cf36bf020863d83116c12 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.000916927
0x69fa340cc87707d3f193e11c43b29cbae2a5eda5c6a9f6e67a76974f8eadc3a714 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.000916927
0x14e2a2be87f63549af16414113455591fa32ed4d89e8856bf5197e9c4ac0b47614 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.000916927
0x271b32fabd312a746749f50fc4b985115d6c7c4acfca1ec9d0428cbdda16606c15 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.000916927
0x85dcef370b635cf2f13ab50ad6f6d55560819e88f019b6bc57946f0e3aad75a417 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.000916927
0x9cab92a6af896581eb90f39b138acc436f63f78f3f96aed2881352b1a3db3bed17 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.000916927
0xf217a9c06c5887ed8b434e9667914e4a509c5c4b71c20e26fa4fc2b4d5023e4d18 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.000916927
0x155da572f618d73303a9f7915a57fa3e8eb0394e01495d55646694f04bb6874620 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001126403141
0x5e0b3279ea5ff19c3ff1f004ddb7c997c1dc9ec29438b4c27005f8e1060245d320 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.001126403141
0xf16887b214f267b58ed076b1f4ef5213e7065e348d62b3c14706dce8351f0b7a21 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.00166586
0x7f48b905f23a9f7f101510b47ff9ab3465f96b0abcf9275f5f7dfe5acdd8d56b23 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.00250071
0xf9602c75ed4b3b687251a26e20d858923905f3559bbbe6b52bb23b8d2e727de323 mins ago0x00360d2b7d240ec0643b6d819ba81a09e40e5bcd  IN   0x288a9fb92921472d29ab0b3c3e420a8e4bd4f4520 Ether0.00250071
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Exact match)
Contract Name: PriceFeed
Compiler Version: v0.4.19+commit.c4cbbb05
Optimization Enabled: Yes
Runs (Optimiser):  0



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.13;

contract DBC {

    // MODIFIERS

    modifier pre_cond(bool condition) {
        require(condition);
        _;
    }

    modifier post_cond(bool condition) {
        _;
        assert(condition);
    }

    modifier invariant(bool condition) {
        require(condition);
        _;
        assert(condition);
    }
}

contract Owned is DBC {

    // FIELDS

    address public owner;

    // NON-CONSTANT METHODS

    function Owned() { owner = msg.sender; }

    function changeOwner(address ofNewOwner) pre_cond(isOwner()) { owner = ofNewOwner; }

    // PRE, POST, INVARIANT CONDITIONS

    function isOwner() internal returns (bool) { return msg.sender == owner; }

}

contract AssetRegistrar is DBC, Owned {

    // TYPES

    struct Asset {
        address breakIn; // Break in contract on destination chain
        address breakOut; // Break out contract on this chain; A way to leave
        bytes32 chainId; // On which chain this asset resides
        uint decimal; // Decimal, order of magnitude of precision, of the Asset as in ERC223 token standard
        bool exists; // Is this asset registered
        string ipfsHash; // Same as url but for ipfs
        string name; // Human-readable name of the Asset as in ERC223 token standard
        uint price; // Price of asset quoted against `QUOTE_ASSET` * 10 ** decimals
        string symbol; // Human-readable symbol of the Asset as in ERC223 token standard
        uint timestamp; // Timestamp of last price update of this asset
        string url; // URL for additional information of Asset
    }

    // FIELDS

    // Methods fields
    mapping (address => Asset) public information;

    // METHODS

    // PUBLIC METHODS

    /// @notice Registers an Asset residing in a chain
    /// @dev Pre: Only registrar owner should be able to register
    /// @dev Post: Address ofAsset is registered
    /// @param ofAsset Address of asset to be registered
    /// @param name Human-readable name of the Asset as in ERC223 token standard
    /// @param symbol Human-readable symbol of the Asset as in ERC223 token standard
    /// @param decimal Human-readable symbol of the Asset as in ERC223 token standard
    /// @param url Url for extended information of the asset
    /// @param ipfsHash Same as url but for ipfs
    /// @param chainId Chain where the asset resides
    /// @param breakIn Address of break in contract on destination chain
    /// @param breakOut Address of break out contract on this chain
    function register(
        address ofAsset,
        string name,
        string symbol,
        uint decimal,
        string url,
        string ipfsHash,
        bytes32 chainId,
        address breakIn,
        address breakOut
    )
        pre_cond(isOwner())
        pre_cond(!information[ofAsset].exists)
    {
        Asset asset = information[ofAsset];
        asset.name = name;
        asset.symbol = symbol;
        asset.decimal = decimal;
        asset.url = url;
        asset.ipfsHash = ipfsHash;
        asset.breakIn = breakIn;
        asset.breakOut = breakOut;
        asset.exists = true;
        assert(information[ofAsset].exists);
    }

    /// @notice Updates description information of a registered Asset
    /// @dev Pre: Owner can change an existing entry
    /// @dev Post: Changed Name, Symbol, URL and/or IPFSHash
    /// @param ofAsset Address of the asset to be updated
    /// @param name Human-readable name of the Asset as in ERC223 token standard
    /// @param symbol Human-readable symbol of the Asset as in ERC223 token standard
    /// @param url Url for extended information of the asset
    /// @param ipfsHash Same as url but for ipfs
    function updateDescriptiveInformation(
        address ofAsset,
        string name,
        string symbol,
        string url,
        string ipfsHash
    )
        pre_cond(isOwner())
        pre_cond(information[ofAsset].exists)
    {
        Asset asset = information[ofAsset];
        asset.name = name;
        asset.symbol = symbol;
        asset.url = url;
        asset.ipfsHash = ipfsHash;
    }

    /// @notice Deletes an existing entry
    /// @dev Owner can delete an existing entry
    /// @param ofAsset address for which specific information is requested
    function remove(
        address ofAsset
    )
        pre_cond(isOwner())
        pre_cond(information[ofAsset].exists)
    {
        delete information[ofAsset]; // Sets exists boolean to false
        assert(!information[ofAsset].exists);
    }

    // PUBLIC VIEW METHODS

    // Get asset specific information
    function getName(address ofAsset) view returns (string) { return information[ofAsset].name; }
    function getSymbol(address ofAsset) view returns (string) { return information[ofAsset].symbol; }
    function getDecimals(address ofAsset) view returns (uint) { return information[ofAsset].decimal; }

}

interface PriceFeedInterface {

    // EVENTS

    event PriceUpdated(uint timestamp);

    // PUBLIC METHODS

    function update(address[] ofAssets, uint[] newPrices);

    // PUBLIC VIEW METHODS

    // Get asset specific information
    function getName(address ofAsset) view returns (string);
    function getSymbol(address ofAsset) view returns (string);
    function getDecimals(address ofAsset) view returns (uint);
    // Get price feed operation specific information
    function getQuoteAsset() view returns (address);
    function getInterval() view returns (uint);
    function getValidity() view returns (uint);
    function getLastUpdateId() view returns (uint);
    // Get asset specific information as updated in price feed
    function hasRecentPrice(address ofAsset) view returns (bool isRecent);
    function hasRecentPrices(address[] ofAssets) view returns (bool areRecent);
    function getPrice(address ofAsset) view returns (bool isRecent, uint price, uint decimal);
    function getPrices(address[] ofAssets) view returns (bool areRecent, uint[] prices, uint[] decimals);
    function getInvertedPrice(address ofAsset) view returns (bool isRecent, uint invertedPrice, uint decimal);
    function getReferencePrice(address ofBase, address ofQuote) view returns (bool isRecent, uint referencePrice, uint decimal);
    function getOrderPrice(
        address sellAsset,
        address buyAsset,
        uint sellQuantity,
        uint buyQuantity
    ) view returns (uint orderPrice);
    function existsPriceOnAssetPair(address sellAsset, address buyAsset) view returns (bool isExistent);
}

contract DSMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x);
    }
    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x);
    }
    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x);
    }

    function min(uint x, uint y) internal pure returns (uint z) {
        return x <= y ? x : y;
    }
    function max(uint x, uint y) internal pure returns (uint z) {
        return x >= y ? x : y;
    }
    function imin(int x, int y) internal pure returns (int z) {
        return x <= y ? x : y;
    }
    function imax(int x, int y) internal pure returns (int z) {
        return x >= y ? x : y;
    }

    uint constant WAD = 10 ** 18;
    uint constant RAY = 10 ** 27;

    function wmul(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, y), WAD / 2) / WAD;
    }
    function rmul(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, y), RAY / 2) / RAY;
    }
    function wdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, WAD), y / 2) / y;
    }
    function rdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, RAY), y / 2) / y;
    }

    // This famous algorithm is called "exponentiation by squaring"
    // and calculates x^n with x as fixed-point and n as regular unsigned.
    //
    // It's O(log n), instead of O(n) for naive repeated multiplication.
    //
    // These facts are why it works:
    //
    //  If n is even, then x^n = (x^2)^(n/2).
    //  If n is odd,  then x^n = x * x^(n-1),
    //   and applying the equation for even x gives
    //    x^n = x * (x^2)^((n-1) / 2).
    //
    //  Also, EVM division is flooring and
    //    floor[(n-1) / 2] = floor[n / 2].
    //
    function rpow(uint x, uint n) internal pure returns (uint z) {
        z = n % 2 != 0 ? x : RAY;

        for (n /= 2; n != 0; n /= 2) {
            x = rmul(x, x);

            if (n % 2 != 0) {
                z = rmul(z, x);
            }
        }
    }
}

contract PriceFeed is PriceFeedInterface, AssetRegistrar, DSMath {

    // FIELDS

    // Constructor fields
    address public QUOTE_ASSET; // Asset of a portfolio against which all other assets are priced
    /// Note: Interval is purely self imposed and for information purposes only
    uint public INTERVAL; // Frequency of updates in seconds
    uint public VALIDITY; // Time in seconds for which data is considered recent
    uint updateId;        // Update counter for this pricefeed; used as a check during investment

    // METHODS

    // CONSTRUCTOR

    /// @dev Define and register a quote asset against which all prices are measured/based against
    /// @param ofQuoteAsset Address of quote asset
    /// @param quoteAssetName Name of quote asset
    /// @param quoteAssetSymbol Symbol for quote asset
    /// @param quoteAssetDecimals Decimal places for quote asset
    /// @param quoteAssetUrl URL related to quote asset
    /// @param quoteAssetIpfsHash IPFS hash associated with quote asset
    /// @param quoteAssetChainId Chain ID associated with quote asset (e.g. "1" for main Ethereum network)
    /// @param quoteAssetBreakIn Break-in address for the quote asset
    /// @param quoteAssetBreakOut Break-out address for the quote asset
    /// @param interval Number of seconds between pricefeed updates (this interval is not enforced on-chain, but should be followed by the datafeed maintainer)
    /// @param validity Number of seconds that datafeed update information is valid for
    function PriceFeed(
        address ofQuoteAsset, // Inital entry in asset registrar contract is Melon (QUOTE_ASSET)
        string quoteAssetName,
        string quoteAssetSymbol,
        uint quoteAssetDecimals,
        string quoteAssetUrl,
        string quoteAssetIpfsHash,
        bytes32 quoteAssetChainId,
        address quoteAssetBreakIn,
        address quoteAssetBreakOut,
        uint interval,
        uint validity
    ) {
        QUOTE_ASSET = ofQuoteAsset;
        register(
            QUOTE_ASSET,
            quoteAssetName,
            quoteAssetSymbol,
            quoteAssetDecimals,
            quoteAssetUrl,
            quoteAssetIpfsHash,
            quoteAssetChainId,
            quoteAssetBreakIn,
            quoteAssetBreakOut
        );
        INTERVAL = interval;
        VALIDITY = validity;
    }

    // PUBLIC METHODS

    /// @dev Only Owner; Same sized input arrays
    /// @dev Updates price of asset relative to QUOTE_ASSET
    /** Ex:
     *  Let QUOTE_ASSET == MLN (base units), let asset == EUR-T,
     *  let Value of 1 EUR-T := 1 EUR == 0.080456789 MLN, hence price 0.080456789 MLN / EUR-T
     *  and let EUR-T decimals == 8.
     *  Input would be: information[EUR-T].price = 8045678 [MLN/ (EUR-T * 10**8)]
     */
    /// @param ofAssets list of asset addresses
    /// @param newPrices list of prices for each of the assets
    function update(address[] ofAssets, uint[] newPrices)
        pre_cond(isOwner())
        pre_cond(ofAssets.length == newPrices.length)
    {
        updateId += 1;
        for (uint i = 0; i < ofAssets.length; ++i) {
            require(information[ofAssets[i]].timestamp != now); // prevent two updates in one block
            require(information[ofAssets[i]].exists);
            information[ofAssets[i]].timestamp = now;
            information[ofAssets[i]].price = newPrices[i];
        }
        PriceUpdated(now);
    }

    // PUBLIC VIEW METHODS

    // Get pricefeed specific information
    function getQuoteAsset() view returns (address) { return QUOTE_ASSET; }
    function getInterval() view returns (uint) { return INTERVAL; }
    function getValidity() view returns (uint) { return VALIDITY; }
    function getLastUpdateId() view returns (uint) { return updateId; }

    /// @notice Whether price of asset has been updated less than VALIDITY seconds ago
    /// @param ofAsset Existend asset in AssetRegistrar
    /// @return isRecent Price information ofAsset is recent
    function hasRecentPrice(address ofAsset)
        view
        pre_cond(information[ofAsset].exists)
        returns (bool isRecent)
    {
        return sub(now, information[ofAsset].timestamp) <= VALIDITY;
    }

    /// @notice Whether prices of assets have been updated less than VALIDITY seconds ago
    /// @param ofAssets All asstes existend in AssetRegistrar
    /// @return isRecent Price information ofAssets array is recent
    function hasRecentPrices(address[] ofAssets)
        view
        returns (bool areRecent)
    {
        for (uint i; i < ofAssets.length; i++) {
            if (!hasRecentPrice(ofAssets[i])) {
                return false;
            }
        }
        return true;
    }

    /**
    @notice Gets price of an asset multiplied by ten to the power of assetDecimals
    @dev Asset has been registered
    @param ofAsset Asset for which price should be returned
    @return {
      "isRecent": "Whether the returned price is valid (as defined by VALIDITY)",
      "price": "Price formatting: mul(exchangePrice, 10 ** decimal), to avoid floating numbers",
      "decimal": "Decimal, order of magnitude of precision, of the Asset as in ERC223 token standard",
    }
    */
    function getPrice(address ofAsset)
        view
        returns (bool isRecent, uint price, uint decimal)
    {
        return (
            hasRecentPrice(ofAsset),
            information[ofAsset].price,
            information[ofAsset].decimal
        );
    }

    /**
    @notice Price of a registered asset in format (bool areRecent, uint[] prices, uint[] decimals)
    @dev Convention for price formatting: mul(price, 10 ** decimal), to avoid floating numbers
    @param ofAssets Assets for which prices should be returned
    @return {
        "areRecent":    "Whether all of the prices are fresh, given VALIDITY interval",
        "prices":       "Array of prices",
        "decimals":     "Array of decimal places for returned assets"
    }
    */
    function getPrices(address[] ofAssets)
        view
        returns (bool areRecent, uint[] prices, uint[] decimals)
    {
        areRecent = true;
        for (uint i; i < ofAssets.length; i++) {
            var (isRecent, price, decimal) = getPrice(ofAssets[i]);
            if (!isRecent) {
                areRecent = false;
            }
            prices[i] = price;
            decimals[i] = decimal;
        }
    }

    /**
    @notice Gets inverted price of an asset
    @dev Asset has been initialised and its price is non-zero
    @dev Existing price ofAssets quoted in QUOTE_ASSET (convention)
    @param ofAsset Asset for which inverted price should be return
    @return {
        "isRecent": "Whether the price is fresh, given VALIDITY interval",
        "invertedPrice": "Price based (instead of quoted) against QUOTE_ASSET",
        "decimal": "Decimal places for this asset"
    }
    */
    function getInvertedPrice(address ofAsset)
        view
        returns (bool isRecent, uint invertedPrice, uint decimal)
    {
        // inputPrice quoted in QUOTE_ASSET and multiplied by 10 ** assetDecimal
        var (isInvertedRecent, inputPrice, assetDecimal) = getPrice(ofAsset);

        // outputPrice based in QUOTE_ASSET and multiplied by 10 ** quoteDecimal
        uint quoteDecimal = getDecimals(QUOTE_ASSET);

        return (
            isInvertedRecent,
            mul(10 ** uint(quoteDecimal), 10 ** uint(assetDecimal)) / inputPrice,
            quoteDecimal
        );
    }

    /**
    @notice Gets reference price of an asset pair
    @dev One of the address is equal to quote asset
    @dev either ofBase == QUOTE_ASSET or ofQuote == QUOTE_ASSET
    @param ofBase Address of base asset
    @param ofQuote Address of quote asset
    @return {
        "isRecent": "Whether the price is fresh, given VALIDITY interval",
        "referencePrice": "Reference price",
        "decimal": "Decimal places for this asset"
    }
    */
    function getReferencePrice(address ofBase, address ofQuote)
        view
        returns (bool isRecent, uint referencePrice, uint decimal)
    {
        if (getQuoteAsset() == ofQuote) {
            (isRecent, referencePrice, decimal) = getPrice(ofBase);
        } else if (getQuoteAsset() == ofBase) {
            (isRecent, referencePrice, decimal) = getInvertedPrice(ofQuote);
        } else {
            revert(); // no suitable reference price available
        }
    }

    /// @notice Gets price of Order
    /// @param sellAsset Address of the asset to be sold
    /// @param buyAsset Address of the asset to be bought
    /// @param sellQuantity Quantity in base units being sold of sellAsset
    /// @param buyQuantity Quantity in base units being bought of buyAsset
    /// @return orderPrice Price as determined by an order
    function getOrderPrice(
        address sellAsset,
        address buyAsset,
        uint sellQuantity,
        uint buyQuantity
    )
        view
        returns (uint orderPrice)
    {
        return mul(buyQuantity, 10 ** uint(getDecimals(sellAsset))) / sellQuantity;
    }

    /// @notice Checks whether data exists for a given asset pair
    /// @dev Prices are only upated against QUOTE_ASSET
    /// @param sellAsset Asset for which check to be done if data exists
    /// @param buyAsset Asset for which check to be done if data exists
    /// @return Whether assets exist for given asset pair
    function existsPriceOnAssetPair(address sellAsset, address buyAsset)
        view
        returns (bool isExistent)
    {
        return
            hasRecentPrice(sellAsset) && // Is tradable asset (TODO cleaner) and datafeed delivering data
            hasRecentPrice(buyAsset) && // Is tradable asset (TODO cleaner) and datafeed delivering data
            (buyAsset == QUOTE_ASSET || sellAsset == QUOTE_ASSET) && // One asset must be QUOTE_ASSET
            (buyAsset != QUOTE_ASSET || sellAsset != QUOTE_ASSET); // Pair must consists of diffrent assets
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"sellAsset","type":"address"},{"name":"buyAsset","type":"address"},{"name":"sellQuantity","type":"uint256"},{"name":"buyQuantity","type":"uint256"}],"name":"getOrderPrice","outputs":[{"name":"orderPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ofAssets","type":"address[]"}],"name":"hasRecentPrices","outputs":[{"name":"areRecent","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ofAsset","type":"address"}],"name":"getInvertedPrice","outputs":[{"name":"isRecent","type":"bool"},{"name":"invertedPrice","type":"uint256"},{"name":"decimal","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getLastUpdateId","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ofAsset","type":"address"}],"name":"remove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"ofAssets","type":"address[]"},{"name":"newPrices","type":"uint256[]"}],"name":"update","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getValidity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"VALIDITY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ofAsset","type":"address"}],"name":"getPrice","outputs":[{"name":"isRecent","type":"bool"},{"name":"price","type":"uint256"},{"name":"decimal","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ofAsset","type":"address"}],"name":"getName","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INTERVAL","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ofAssets","type":"address[]"}],"name":"getPrices","outputs":[{"name":"areRecent","type":"bool"},{"name":"prices","type":"uint256[]"},{"name":"decimals","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInterval","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ofAsset","type":"address"},{"name":"name","type":"string"},{"name":"symbol","type":"string"},{"name":"url","type":"string"},{"name":"ipfsHash","type":"string"}],"name":"updateDescriptiveInformation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"information","outputs":[{"name":"breakIn","type":"address"},{"name":"breakOut","type":"address"},{"name":"chainId","type":"bytes32"},{"name":"decimal","type":"uint256"},{"name":"exists","type":"bool"},{"name":"ipfsHash","type":"string"},{"name":"name","type":"string"},{"name":"price","type":"uint256"},{"name":"symbol","type":"string"},{"name":"timestamp","type":"uint256"},{"name":"url","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ofNewOwner","type":"address"}],"name":"changeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"ofBase","type":"address"},{"name":"ofQuote","type":"address"}],"name":"getReferencePrice","outputs":[{"name":"isRecent","type":"bool"},{"name":"referencePrice","type":"uint256"},{"name":"decimal","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ofAsset","type":"address"}],"name":"hasRecentPrice","outputs":[{"name":"isRecent","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ofAsset","type":"address"}],"name":"getSymbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"ofAsset","type":"address"}],"name":"getDecimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getQuoteAsset","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"ofAsset","type":"address"},{"name":"name","type":"string"},{"name":"symbol","type":"string"},{"name":"decimal","type":"uint256"},{"name":"url","type":"string"},{"name":"ipfsHash","type":"string"},{"name":"chainId","type":"bytes32"},{"name":"breakIn","type":"address"},{"name":"breakOut","type":"address"}],"name":"register","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"sellAsset","type":"address"},{"name":"buyAsset","type":"address"}],"name":"existsPriceOnAssetPair","outputs":[{"name":"isExistent","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"QUOTE_ASSET","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"ofQuoteAsset","type":"address"},{"name":"quoteAssetName","type":"string"},{"name":"quoteAssetSymbol","type":"string"},{"name":"quoteAssetDecimals","type":"uint256"},{"name":"quoteAssetUrl","type":"string"},{"name":"quoteAssetIpfsHash","type":"string"},{"name":"quoteAssetChainId","type":"bytes32"},{"name":"quoteAssetBreakIn","type":"address"},{"name":"quoteAssetBreakOut","type":"address"},{"name":"interval","type":"uint256"},{"name":"validity","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"PriceUpdated","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405234156200001057600080fd5b604051620019203803806200192083398101604052808051919060200180518201919060200180518201919060200180519190602001805182019190602001805182019190602001805191906020018051919060200180519190602001805191906020018051906020019091905050336000806101000a815481600160a060020a030219169083600160a060020a031602179055508a600260006101000a815481600160a060020a030219169083600160a060020a0316021790555062000108600260009054906101000a9004600160a060020a03168b8b8b8b8b8b8b8b6200012164010000000002620012d3176401000000009004565b6003919091556004555062000319975050505050505050565b60006200013b640100000000620014b56200026182021704565b8015156200014857600080fd5b600160a060020a038b1660009081526001602052604090206004015460ff1615806200017357600080fd5b600160a060020a038c1660009081526001602052604090209250600683018b8051620001a492916020019062000277565b50600883018a8051620001bc92916020019062000277565b5060038301899055600a8301888051620001db92916020019062000277565b5060058301878051620001f392916020019062000277565b508254600160a060020a03808716600160a060020a0319928316178555600180860180548884169416939093179092556004808601805460ff191684179055908e1660009081526020929092526040909120015460ff1615156200025357fe5b505050505050505050505050565b60005433600160a060020a039081169116145b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002ba57805160ff1916838001178555620002ea565b82800160010185558215620002ea579182015b82811115620002ea578251825591602001919060010190620002cd565b50620002f8929150620002fc565b5090565b6200027491905b80821115620002f8576000815560010162000303565b6115f780620003296000396000f30060606040526004361061012f5763ffffffff60e060020a6000350416630b5d94f6811461013457806316c519ee146101715780631d21f252146101d45780631f4b8e411461021957806329092d0e1461022c5780632c10e90c1461024d5780633b7f7cfa146102dc5780633f97d995146102ef57806341976e09146103025780635fd4b08a1461032157806389facb20146103b75780638da5cb5b146103ca5780638fb5a482146103f957806391ad27b4146104ea5780639b2b0031146104fd578063a30ab2d014610622578063a6f9dae114610881578063b84c743b146108a0578063bea10370146108c5578063c9b2e522146108e4578063cf54aaa014610903578063cfba99dc14610922578063d88a3af914610935578063e0fe42be14610a7d578063f06a1e1314610aa2575b600080fd5b341561013f57600080fd5b61015f600160a060020a0360043581169060243516604435606435610ab5565b60405190815260200160405180910390f35b341561017c57600080fd5b6101c06004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610ae095505050505050565b604051901515815260200160405180910390f35b34156101df57600080fd5b6101f3600160a060020a0360043516610b2d565b604051921515835260208301919091526040808301919091526060909101905180910390f35b341561022457600080fd5b61015f610b8f565b341561023757600080fd5b61024b600160a060020a0360043516610b96565b005b341561025857600080fd5b61024b600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610c9d95505050505050565b34156102e757600080fd5b61015f610e2b565b34156102fa57600080fd5b61015f610e31565b341561030d57600080fd5b6101f3600160a060020a0360043516610e37565b341561032c57600080fd5b610340600160a060020a0360043516610e75565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561037c578082015183820152602001610364565b50505050905090810190601f1680156103a95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103c257600080fd5b61015f610f45565b34156103d557600080fd5b6103dd610f4b565b604051600160a060020a03909116815260200160405180910390f35b341561040457600080fd5b6104486004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610f5a95505050505050565b6040518315158152606060208201818152906040830190830185818151815260200191508051906020019060200280838360005b8381101561049457808201518382015260200161047c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156104d35780820151838201526020016104bb565b505050509050019550505050505060405180910390f35b34156104f557600080fd5b61015f610fe9565b341561050857600080fd5b61024b60048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528181529291906020840183838082843750949650610fef95505050505050565b341561062d57600080fd5b610641600160a060020a03600435166110ac565b604051600160a060020a03808d1682528b166020820152604081018a905260608101899052871515608082015260e08101859052610120810183905261016060a082018181528854600260018216156101009081026000190190921604928401839052909160c08401918401906101408501906101808601908c9080156107095780601f106106de57610100808354040283529160200191610709565b820191906000526020600020905b8154815290600101906020018083116106ec57829003601f168201915b505085810384528a54600260001961010060018416150201909116048082526020909101908b90801561077d5780601f106107525761010080835404028352916020019161077d565b820191906000526020600020905b81548152906001019060200180831161076057829003601f168201915b50508581038352885460026000196101006001841615020190911604808252602090910190899080156107f15780601f106107c6576101008083540402835291602001916107f1565b820191906000526020600020905b8154815290600101906020018083116107d457829003601f168201915b50508581038252865460026000196101006001841615020190911604808252602090910190879080156108655780601f1061083a57610100808354040283529160200191610865565b820191906000526020600020905b81548152906001019060200180831161084857829003601f168201915b50509f5050505050505050505050505050505060405180910390f35b341561088c57600080fd5b61024b600160a060020a036004351661110c565b34156108ab57600080fd5b6101f3600160a060020a0360043581169060243516611143565b34156108d057600080fd5b6101c0600160a060020a03600435166111af565b34156108ef57600080fd5b610340600160a060020a036004351661120d565b341561090e57600080fd5b61015f600160a060020a03600435166112a6565b341561092d57600080fd5b6103dd6112c4565b341561094057600080fd5b61024b60048035600160a060020a03169060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052818152929190602084018383808284375094965050843594600160a060020a036020820135811695506040909101351692506112d3915050565b3415610a8857600080fd5b6101c0600160a060020a03600435811690602435166113f8565b3415610aad57600080fd5b6103dd61147e565b600082610acd83610ac5886112a6565b600a0a61148d565b811515610ad657fe5b0495945050505050565b6000805b8251811015610b2257610b0b838281518110610afc57fe5b906020019060200201516111af565b1515610b1a5760009150610b27565b600101610ae4565b600191505b50919050565b6000806000806000806000610b4188610e37565b6002549296509094509250610b5e90600160a060020a03166112a6565b90508383610b7283600a0a85600a0a61148d565b811515610b7b57fe5b04829650965096505b505050509193909250565b6005545b90565b610b9e6114b5565b801515610baa57600080fd5b600160a060020a03821660009081526001602052604090206004015460ff16801515610bd557600080fd5b600160a060020a038316600090815260016020819052604082208054600160a060020a031990811682559181018054909216909155600281018290556003810182905560048101805460ff1916905590610c3260058301826114da565b610c406006830160006114da565b6007820160009055600882016000610c5891906114da565b6009820160009055600a82016000610c7091906114da565b5050600160a060020a03831660009081526001602052604090206004015460ff1615610c9857fe5b505050565b6000610ca76114b5565b801515610cb357600080fd5b825184511480610cc257600080fd5b600580546001019055600092505b8451831015610df1574260016000878681518110610cea57fe5b90602001906020020151600160a060020a031681526020810191909152604001600020600901541415610d1c57600080fd5b60016000868581518110610d2c57fe5b90602001906020020151600160a060020a0316815260208101919091526040016000206004015460ff161515610d6157600080fd5b4260016000878681518110610d7257fe5b90602001906020020151600160a060020a03168152602081019190915260400160002060090155838381518110610da557fe5b9060200190602002015160016000878681518110610dbf57fe5b90602001906020020151600160a060020a03168152602081019190915260400160002060070155600190920191610cd0565b7f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe04260405190815260200160405180910390a15050505050565b60045490565b60045481565b6000806000610e45846111af565b600160a060020a039490941660009081526001602052604090206007810154600390910154949590949350915050565b610e7d611521565b6001600083600160a060020a0316600160a060020a031681526020019081526020016000206006018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f395780601f10610f0e57610100808354040283529160200191610f39565b820191906000526020600020905b815481529060010190602001808311610f1c57829003601f168201915b50505050509050919050565b60035481565b600054600160a060020a031681565b6000610f64611521565b610f6c611521565b600080600080600196505b8751841015610b8457610f9e888581518110610f8f57fe5b90602001906020020151610e37565b925092509250821515610fb057600096505b81868581518110610fbd57fe5b6020908102909101015280858581518110610fd457fe5b60209081029091010152600190930192610f77565b60035490565b6000610ff96114b5565b80151561100557600080fd5b600160a060020a03871660009081526001602052604090206004015460ff1680151561103057600080fd5b600160a060020a038816600090815260016020526040902092506006830187805161105f929160200190611533565b5060088301868051611075929160200190611533565b50600a830185805161108b929160200190611533565b50600583018480516110a1929160200190611533565b505050505050505050565b600160208190526000918252604090912080549181015460028201546003830154600484015460078501546009860154600160a060020a0397881697909516959394929360ff9092169260058301926006810192916008820191600a018b565b6111146114b5565b80151561112057600080fd5b5060008054600160a060020a031916600160a060020a0392909216919091179055565b600080600083600160a060020a031661115a6112c4565b600160a060020a0316141561117e5761117285610e37565b919450925090506111a8565b84600160a060020a03166111906112c4565b600160a060020a0316141561012f5761117284610b2d565b9250925092565b600160a060020a03811660009081526001602052604081206004015460ff168015156111da57600080fd5b600454600160a060020a0384166000908152600160205260409020600901546112049042906114ca565b11159392505050565b611215611521565b6001600083600160a060020a0316600160a060020a031681526020019081526020016000206008018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610f395780601f10610f0e57610100808354040283529160200191610f39565b600160a060020a031660009081526001602052604090206003015490565b600254600160a060020a031690565b60006112dd6114b5565b8015156112e957600080fd5b600160a060020a038b1660009081526001602052604090206004015460ff16158061131357600080fd5b600160a060020a038c1660009081526001602052604090209250600683018b8051611342929160200190611533565b50600883018a8051611358929160200190611533565b5060038301899055600a8301888051611375929160200190611533565b506005830187805161138b929160200190611533565b508254600160a060020a03808716600160a060020a0319928316178555600180860180548884169416939093179092556004808601805460ff191684179055908e1660009081526020929092526040909120015460ff1615156113ea57fe5b505050505050505050505050565b6000611403836111af565b80156114135750611413826111af565b80156114435750600254600160a060020a03838116911614806114435750600254600160a060020a038481169116145b80156114755750600254600160a060020a0383811691161415806114755750600254600160a060020a03848116911614155b90505b92915050565b600254600160a060020a031681565b60008115806114aa5750508082028282828115156114a757fe5b04145b151561147857600080fd5b60005433600160a060020a0390811691161490565b8082038281111561147857600080fd5b50805460018160011615610100020316600290046000825580601f10611500575061151e565b601f01602090049060005260206000209081019061151e91906115b1565b50565b60206040519081016040526000815290565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061157457805160ff19168380011785556115a1565b828001600101855582156115a1579182015b828111156115a1578251825591602001919060010190611586565b506115ad9291506115b1565b5090565b610b9391905b808211156115ad57600081556001016115b75600a165627a7a723058201eae474f8ae7d2704c17b020753b3796a8d88fd9d349c82578a5ff073d567c690029000000000000000000000000dc5fc5dab642f688bc5bb58bef6e0d452d7ae123000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000000000022086b5eed81db5f691c36cc83eb58cb5205bd2090bf3763a19f0c5bf2f074dd84b000000000000000000000000083c41ea13af6c2d5aaddf6e73142eb9a7b00183000000000000000000000000083c41ea13af6c2d5aaddf6e73142eb9a7b00183000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000000b4d656c6f6e20546f6b656e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074d4c4e2d542d4d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d6d656c6f6e706f72742e636f6d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042307838366235656564383164623566363931633336636338336562353863623532303562643230393062663337363361313966306335626632663037346464383462000000000000000000000000000000000000000000000000000000000000

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

-----Decoded View---------------
Found 21 constructor arguments :
Arg [0] : 000000000000000000000000dc5fc5dab642f688bc5bb58bef6e0d452d7ae123
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000160
Arg [2] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [4] : 00000000000000000000000000000000000000000000000000000000000001e0
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [6] : 86b5eed81db5f691c36cc83eb58cb5205bd2090bf3763a19f0c5bf2f074dd84b
Arg [7] : 000000000000000000000000083c41ea13af6c2d5aaddf6e73142eb9a7b00183
Arg [8] : 000000000000000000000000083c41ea13af6c2d5aaddf6e73142eb9a7b00183
Arg [9] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [10] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [11] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [12] : 4d656c6f6e20546f6b656e000000000000000000000000000000000000000000
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [14] : 4d4c4e2d542d4d00000000000000000000000000000000000000000000000000
Arg [15] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [16] : 6d656c6f6e706f72742e636f6d00000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000042
Arg [18] : 3078383662356565643831646235663639316333366363383365623538636235
Arg [19] : 3230356264323039306266333736336131396630633562663266303734646438
Arg [20] : 3462000000000000000000000000000000000000000000000000000000000000


   Swarm Source:
bzzr://1eae474f8ae7d2704c17b020753b3796a8d88fd9d349c82578a5ff073d567c69

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward