Sonic Blaze Testnet

Contract

0x176761e687642dE9BEED6a77028797643C193671

Overview

S Balance

Sonic Blaze LogoSonic Blaze LogoSonic Blaze Logo0 S

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

> 10 Internal Transactions found.

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
146871472025-01-22 15:15:4511 days ago1737558945
0x176761e6...43C193671
0 S
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FeedRegistry

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : FeedRegistry.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import '../../interfaces/IFeedRegistry.sol';
import {IAggregator} from '../../interfaces/IAggregator.sol';
import {ProxyCall} from '../../libraries/ProxyCall.sol';

/// @title Registry aggregating information from ChainlinkProxies and the feed itself
/// @notice This contract is used to store and retrieve information about feeds
/// @dev To reduce gas costs, the contract calls the dataFeedStore directly instead of using the ChainlinkProxy
contract FeedRegistry is IFeedRegistry {
  /// @notice The data feed store contract
  address internal immutable DATA_FEED_STORE;
  /// @inheritdoc IFeedRegistry
  address public immutable override OWNER;

  /// @notice Feed data for a given pair
  mapping(address => mapping(address => FeedData)) internal feedData;

  /// @notice Constructor
  /// @param _owner The owner of the contract
  /// @param _dataFeedStore The address of the data feed store
  constructor(address _owner, address _dataFeedStore) {
    OWNER = _owner;
    DATA_FEED_STORE = _dataFeedStore;
  }

  /// @inheritdoc IChainlinkFeedRegistry
  function decimals(
    address base,
    address quote
  ) external view override returns (uint8) {
    return feedData[base][quote].decimals;
  }

  /// @inheritdoc IChainlinkFeedRegistry
  function description(
    address base,
    address quote
  ) external view override returns (string memory) {
    return feedData[base][quote].description;
  }

  /// @inheritdoc IChainlinkFeedRegistry
  function latestAnswer(
    address base,
    address quote
  ) external view override returns (int256) {
    return ProxyCall._latestAnswer(feedData[base][quote].key, DATA_FEED_STORE);
  }

  /// @inheritdoc IChainlinkFeedRegistry
  function getRoundData(
    address base,
    address quote,
    uint80 _roundId
  ) external view override returns (uint80, int256, uint256, uint256, uint80) {
    return
      ProxyCall._getRoundData(
        _roundId,
        feedData[base][quote].key,
        DATA_FEED_STORE
      );
  }

  /// @inheritdoc IChainlinkFeedRegistry
  function getFeed(
    address base,
    address quote
  ) external view override returns (IChainlinkAggregator) {
    return feedData[base][quote].aggregator;
  }

  /// @inheritdoc IFeedRegistry
  function setFeeds(Feed[] calldata feeds) external override {
    if (msg.sender != OWNER) {
      revert OnlyOwner();
    }

    for (uint256 i = 0; i < feeds.length; i++) {
      feedData[feeds[i].base][feeds[i].quote] = FeedData(
        IChainlinkAggregator(feeds[i].feed),
        IAggregator(feeds[i].feed).key(),
        IAggregator(feeds[i].feed).decimals(),
        IAggregator(feeds[i].feed).description()
      );
    }
  }

  /// @inheritdoc IChainlinkFeedRegistry
  function latestRound(
    address base,
    address quote
  ) external view override returns (uint256) {
    return ProxyCall._latestRound(feedData[base][quote].key, DATA_FEED_STORE);
  }

  /// @inheritdoc IChainlinkFeedRegistry
  function latestRoundData(
    address base,
    address quote
  ) external view override returns (uint80, int256, uint256, uint256, uint80) {
    return
      ProxyCall._latestRoundData(feedData[base][quote].key, DATA_FEED_STORE);
  }
}

File 2 of 6 : IChainlinkAggregator.sol
/**
 * SPDX-FileCopyrightText: Copyright (c) 2021 SmartContract ChainLink Limited SEZC
 *
 * SPDX-License-Identifier: MIT
 */
pragma solidity ^0.8.24;

interface IChainlinkAggregator {
  /// @notice Decimals for the feed data
  /// @return decimals The decimals of the feed
  function decimals() external view returns (uint8);

  /// @notice Description text for the feed data
  /// @return description The description of the feed
  function description() external view returns (string memory);

  /// @notice Get the latest answer for the feed
  /// @return answer The latest value stored
  function latestAnswer() external view returns (int256);

  /// @notice Get the latest round ID for the feed
  /// @return roundId The latest round ID
  function latestRound() external view returns (uint256);

  /// @notice Get the data for a round at a given round ID
  /// @param _roundId The round ID to retrieve the data for
  /// @return roundId The round ID
  /// @return answer The value stored for the round
  /// @return startedAt Timestamp of when the value was stored
  /// @return updatedAt Same as startedAt
  /// @return answeredInRound Same as roundId
  function getRoundData(
    uint80 _roundId
  )
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

  /// @notice Get the latest round data available
  /// @return roundId The latest round ID for the feed
  /// @return answer The value stored for the round
  /// @return startedAt Timestamp of when the value was stored
  /// @return updatedAt Same as startedAt
  /// @return answeredInRound Same as roundId
  function latestRoundData()
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );
}

File 3 of 6 : IChainlinkFeedRegistry.sol
/**
 * SPDX-FileCopyrightText: Copyright (c) 2021 SmartContract ChainLink Limited SEZC
 *
 * SPDX-License-Identifier: MIT
 */
pragma solidity ^0.8.24;

import {IChainlinkAggregator} from './IChainlinkAggregator.sol';

interface IChainlinkFeedRegistry {
  /// @notice Get decimals for a feed pair
  /// @param base The base asset of the feed
  /// @param quote The quote asset of the feed
  /// @return decimals The decimals of the feed pair
  function decimals(address base, address quote) external view returns (uint8);

  /// @notice Get description for a feed pair
  /// @param base The base asset of the feed
  /// @param quote The quote asset of the feed
  /// @return description The description of the feed pair
  function description(
    address base,
    address quote
  ) external view returns (string memory);

  /// @notice Get the latest answer for a feed pair
  /// @param base The base asset of the feed
  /// @param quote The quote asset of the feed
  /// @return answer The value sotred for the feed pair
  function latestAnswer(
    address base,
    address quote
  ) external view returns (int256 answer);

  /// @notice Get the latest round ID for a feed pair
  /// @param base The base asset of the feed
  /// @param quote The quote asset of the feed
  /// @return roundId The latest round ID
  function latestRound(
    address base,
    address quote
  ) external view returns (uint256 roundId);

  /// @notice Get the round data for a feed pair at a given round ID
  /// @param base The base asset of the feed
  /// @param quote The quote asset of the feed
  /// @param _roundId The round ID to retrieve data for
  /// @return roundId The round ID
  /// @return answer The value stored for the feed at the given round ID
  /// @return startedAt The timestamp when the value was stored
  /// @return updatedAt Same as startedAt
  /// @return answeredInRound Same as roundId
  function getRoundData(
    address base,
    address quote,
    uint80 _roundId
  )
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

  /// @notice Get the latest round data for a feed pair
  /// @param base The base asset of the feed
  /// @param quote The quote asset of the feed
  /// @return roundId The latest round ID stored for the feed pair
  /// @return answer The latest value stored for the feed pair
  /// @return startedAt The timestamp when the value was stored
  /// @return updatedAt Same as startedAt
  /// @return answeredInRound Same as roundId
  function latestRoundData(
    address base,
    address quote
  )
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

  /// @notice Get the ChainlinkProxy contract for a feed pair
  /// @param base The base asset of the feed
  /// @param quote The quote asset of the feed
  /// @return aggregator The ChainlinkProxy contract given pair
  function getFeed(
    address base,
    address quote
  ) external view returns (IChainlinkAggregator aggregator);
}

File 4 of 6 : IAggregator.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import {IChainlinkAggregator} from './chainlink/IChainlinkAggregator.sol';

interface IAggregator is IChainlinkAggregator {
  /// @notice The feed data this contract is responsible for
  /// @dev This is the key ID for the mapping in the dataFeedStore
  /// @return key The key ID for the feed
  function key() external view returns (uint32);

  /// @notice The dataFeedStore this contract is responsible for
  /// @dev The address of the underlying contract that stores the data
  /// @return dataFeedStore The address of the dataFeedStore
  function dataFeedStore() external view returns (address);
}

File 5 of 6 : IFeedRegistry.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import {IChainlinkFeedRegistry, IChainlinkAggregator} from './chainlink/IChainlinkFeedRegistry.sol';

interface IFeedRegistry is IChainlinkFeedRegistry {
  struct FeedData {
    IChainlinkAggregator aggregator;
    uint32 key;
    uint8 decimals;
    string description;
  }

  struct Feed {
    address base;
    address quote;
    address feed;
  }

  error OnlyOwner();

  /// @notice Contract owner
  /// @return owner The address of the owner
  function OWNER() external view returns (address);

  /// @notice Set the feed for a given pair
  /// @dev Stores immutable values (decimals, key, description) and contract address from ChainlinkProxy
  /// @param feeds Array of base, quote and feed address data
  function setFeeds(Feed[] calldata feeds) external;
}

File 6 of 6 : ProxyCall.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

/// @title ProxyCall
/// @notice Library for calling dataFeedStore functions
/// @dev Contains utility functions for calling gas efficiently dataFeedStore functions and decoding return data
library ProxyCall {
  /// @notice Gets the latest answer from the dataFeedStore
  /// @param key The key ID for the feed
  /// @param dataFeedStore The address of the dataFeedStore contract
  /// @return answer The latest stored value after being decoded
  function _latestAnswer(
    uint32 key,
    address dataFeedStore
  ) internal view returns (int256) {
    return
      int256(
        uint256(
          uint192(
            bytes24(
              _callDataFeed(dataFeedStore, abi.encodePacked(0x80000000 | key))
            )
          )
        )
      );
  }

  /// @notice Gets the round data from the dataFeedStore
  /// @param _roundId The round ID to retrieve data for
  /// @param key The key ID for the feed
  /// @param dataFeedStore The address of the dataFeedStore contract
  /// @return roundId The round ID
  /// @return answer The value stored for the feed at the given round ID
  /// @return startedAt The timestamp when the value was stored
  /// @return updatedAt Same as startedAt
  /// @return answeredInRound Same as roundId
  function _getRoundData(
    uint80 _roundId,
    uint32 key,
    address dataFeedStore
  )
    internal
    view
    returns (uint80, int256 answer, uint256 startedAt, uint256, uint80)
  {
    (answer, startedAt) = _decodeData(
      _callDataFeed(
        dataFeedStore,
        abi.encodeWithSelector(bytes4(0x20000000 | key), _roundId)
      )
    );

    return (_roundId, answer, startedAt, startedAt, _roundId);
  }

  /// @notice Gets the latest round ID for a given feed from the dataFeedStore
  /// @dev Using assembly achieves lower gas costs
  /// @param key The key ID for the feed
  /// @param dataFeedStore The address of the dataFeedStore contract
  /// @return roundId The latest round ID
  function _latestRound(
    uint32 key,
    address dataFeedStore
  ) internal view returns (uint256 roundId) {
    // using assembly staticcall costs less gas than using a view function
    assembly {
      // get free memory pointer
      let ptr := mload(0x40)

      // store selector in memory at location 0
      mstore(0, shl(224, or(0x40000000, key)))

      // call dataFeedStore with selector 0xc0000000 | key (4 bytes) and store return value (64 bytes) at memory location ptr
      let success := staticcall(gas(), dataFeedStore, 0, 4, ptr, 64)

      // revert if call failed
      if iszero(success) {
        revert(0, 0)
      }

      // load return value from memory at location ptr
      // roundId is stored in the second 32 bytes of the return 64 bytes
      roundId := mload(add(ptr, 32))
    }
  }

  /// @notice Gets the latest round data for a given feed from the dataFeedStore
  /// @dev Using assembly achieves lower gas costs
  /// @param key The key ID for the feed
  /// @param dataFeedStore The address of the dataFeedStore contract
  /// @return roundId The latest round ID
  /// @return answer The latest stored value after being decoded
  /// @return startedAt The timestamp when the value was stored
  /// @return updatedAt Same as startedAt
  /// @return answeredInRound Same as roundId
  function _latestRoundData(
    uint32 key,
    address dataFeedStore
  )
    internal
    view
    returns (uint80 roundId, int256 answer, uint256 startedAt, uint256, uint80)
  {
    bytes32 returnData;

    // using assembly staticcall costs less gas than using a view function
    assembly {
      // get free memory pointer
      let ptr := mload(0x40)

      // store selector in memory at location 0
      mstore(0x00, shl(224, or(0xc0000000, key)))

      // call dataFeedStore with selector 0xc0000000 | key (4 bytes) and store return value (64 bytes) at memory location ptr
      let success := staticcall(gas(), dataFeedStore, 0x00, 4, ptr, 64)

      // revert if call failed
      if iszero(success) {
        revert(0, 0)
      }

      // assign return value to returnData
      returnData := mload(ptr)

      // load return value from memory at location ptr
      // roundId is stored in the second 32 bytes of the return 64 bytes
      roundId := mload(add(ptr, 32))
    }

    (answer, startedAt) = _decodeData(returnData);

    return (roundId, answer, startedAt, startedAt, roundId);
  }

  /// @notice Calls the dataFeedStore with the given data
  /// @dev Using assembly achieves lower gas costs
  /// Used as a call() function to dataFeedStore
  /// @param dataFeedStore The address of the dataFeedStore contract
  /// @param data The data to call the dataFeedStore with
  /// @return returnData The return value from the dataFeedStore
  function _callDataFeed(
    address dataFeedStore,
    bytes memory data
  ) internal view returns (bytes32 returnData) {
    // using assembly staticcall costs less gas than using a view function
    assembly {
      // get free memory pointer
      let ptr := mload(0x40)

      // call dataFeedStore with data and store return value (32 bytes) at memory location ptr
      let success := staticcall(
        gas(), // gas remaining
        dataFeedStore, // address to call
        add(data, 32), // location of data to call (skip first 32 bytes of data which is the length of data)
        mload(data), // size of data to call
        ptr, // where to store the return data
        32 // how much data to store
      )

      // revert if call failed
      if iszero(success) {
        revert(0, 0)
      }

      // assign loaded return value at memory location ptr to returnData
      returnData := mload(ptr)
    }
  }

  /// @notice Decodes the return data from the dataFeedStore
  /// @param data The data to decode
  /// @return answer The value stored for the feed at the given round ID
  /// @return timestamp The timestamp when the value was stored
  function _decodeData(bytes32 data) internal pure returns (int256, uint256) {
    return (int256(uint256(uint192(bytes24(data)))), uint64(uint256(data)));
  }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "paris",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_dataFeedStore","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"inputs":[],"name":"OWNER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"}],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"}],"name":"description","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"}],"name":"getFeed","outputs":[{"internalType":"contract IChainlinkAggregator","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"},{"internalType":"uint80","name":"_roundId","type":"uint80"}],"name":"getRoundData","outputs":[{"internalType":"uint80","name":"","type":"uint80"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint80","name":"","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"}],"name":"latestAnswer","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"}],"name":"latestRound","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"}],"name":"latestRoundData","outputs":[{"internalType":"uint80","name":"","type":"uint80"},{"internalType":"int256","name":"","type":"int256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint80","name":"","type":"uint80"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"base","type":"address"},{"internalType":"address","name":"quote","type":"address"},{"internalType":"address","name":"feed","type":"address"}],"internalType":"struct IFeedRegistry.Feed[]","name":"feeds","type":"tuple[]"}],"name":"setFeeds","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c060405234801561001057600080fd5b50604051610e7c380380610e7c83398101604081905261002f91610062565b6001600160a01b0391821660a05216608052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a051610da76100d560003960008181609d01526102360152600081816105bb0152818161062b0152818161068f01526107b10152610da76000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063d2edb6dd11610066578063d2edb6dd1461018e578063d4c282a3146101c4578063ec62f44b146101e5578063fa820de9146101f8578063fc58749e1461021857600080fd5b8063117803e31461009857806358e2d3a8146100dc578063b5720f821461012f578063bcfd032d14610144575b600080fd5b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61011d6100ea366004610995565b6001600160a01b03918216600090815260208181526040808320939094168252919091522054600160c01b900460ff1690565b60405160ff90911681526020016100d3565b61014261013d3660046109c8565b61022b565b005b610157610152366004610995565b61057a565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100d3565b6100bf61019c366004610995565b6001600160a01b03918216600090815260208181526040808320938516835292905220541690565b6101d76101d2366004610995565b6105f2565b6040519081526020016100d3565b6101d76101f3366004610995565b610656565b61020b610206366004610995565b6106b3565b6040516100d39190610a61565b610157610226366004610a94565b61076e565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461027457604051635fc483c560e01b815260040160405180910390fd5b60005b8181101561057557604051806080016040528084848481811061029c5761029c610aea565b90506060020160400160208101906102b49190610b00565b6001600160a01b031681526020018484848181106102d4576102d4610aea565b90506060020160400160208101906102ec9190610b00565b6001600160a01b0316633943380c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d9190610b1b565b63ffffffff16815260200184848481811061036a5761036a610aea565b90506060020160400160208101906103829190610b00565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e39190610b41565b60ff1681526020018484848181106103fd576103fd610aea565b90506060020160400160208101906104159190610b00565b6001600160a01b0316637284e4166040518163ffffffff1660e01b8152600401600060405180830381865afa158015610452573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047a9190810190610b7a565b905260008085858581811061049157610491610aea565b6104a79260206060909202019081019150610b00565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008585858181106104db576104db610aea565b90506060020160200160208101906104f39190610b00565b6001600160a01b039081168252602080830193909352604091820160002084518154948601519386015160ff16600160c01b0260ff60c01b1963ffffffff909516600160a01b026001600160c01b0319909616919093161793909317919091161781556060820151600182019061056a9082610cb1565b505050600101610277565b505050565b6001600160a01b0382811660009081526020818152604080832093851683529290529081205481908190819081906105df90600160a01b900463ffffffff167f00000000000000000000000000000000000000000000000000000000000000006107e9565b939b929a50909850965090945092505050565b6001600160a01b0382811660009081526020818152604080832093851683529290529081205461064f90600160a01b900463ffffffff167f0000000000000000000000000000000000000000000000000000000000000000610842565b9392505050565b6001600160a01b0382811660009081526020818152604080832093851683529290529081205461064f90600160a01b900463ffffffff167f0000000000000000000000000000000000000000000000000000000000000000610888565b6001600160a01b038083166000908152602081815260408083209385168352929052206001018054606091906106e890610c27565b80601f016020809104026020016040519081016040528092919081815260200182805461071490610c27565b80156107615780601f1061073657610100808354040283529160200191610761565b820191906000526020600020905b81548152906001019060200180831161074457829003601f168201915b5050505050905092915050565b6001600160a01b0383811660009081526020818152604080832093861683529290529081205481908190819081906107d5908790600160a01b900463ffffffff167f00000000000000000000000000000000000000000000000000000000000000006108ba565b939c929b5090995097509095509350505050565b6000806000806000806040518863c00000001760e01b600052604081600460008b5afa8061081657600080fd5b50805160209091015199604082901c995067ffffffffffffffff90911697508796508995509350505050565b6040516001600160e01b03196380000000841760e01b16602082015260009061087e908390602401604051602081830303815290604052610955565b60401c9392505050565b60006040518363400000001760e01b60005260408160046000865afa806108ae57600080fd5b50602001519392505050565b600080600080600061094261092d878963200000001760e01b8b6040516024016108f6919069ffffffffffffffffffff91909116815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610955565b604081901c9167ffffffffffffffff90911690565b9899909897508796508995509350505050565b6000604051602081845160208601875afa8061097057600080fd5b50519392505050565b80356001600160a01b038116811461099057600080fd5b919050565b600080604083850312156109a857600080fd5b6109b183610979565b91506109bf60208401610979565b90509250929050565b600080602083850312156109db57600080fd5b823567ffffffffffffffff808211156109f357600080fd5b818501915085601f830112610a0757600080fd5b813581811115610a1657600080fd5b866020606083028501011115610a2b57600080fd5b60209290920196919550909350505050565b60005b83811015610a58578181015183820152602001610a40565b50506000910152565b6020815260008251806020840152610a80816040850160208701610a3d565b601f01601f19169190910160400192915050565b600080600060608486031215610aa957600080fd5b610ab284610979565b9250610ac060208501610979565b9150604084013569ffffffffffffffffffff81168114610adf57600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b1257600080fd5b61064f82610979565b600060208284031215610b2d57600080fd5b815163ffffffff8116811461064f57600080fd5b600060208284031215610b5357600080fd5b815160ff8116811461064f57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215610b8c57600080fd5b815167ffffffffffffffff80821115610ba457600080fd5b818401915084601f830112610bb857600080fd5b815181811115610bca57610bca610b64565b604051601f8201601f19908116603f01168101908382118183101715610bf257610bf2610b64565b81604052828152876020848701011115610c0b57600080fd5b610c1c836020830160208801610a3d565b979650505050505050565b600181811c90821680610c3b57607f821691505b602082108103610c5b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610575576000816000526020600020601f850160051c81016020861015610c8a5750805b601f850160051c820191505b81811015610ca957828155600101610c96565b505050505050565b815167ffffffffffffffff811115610ccb57610ccb610b64565b610cdf81610cd98454610c27565b84610c61565b602080601f831160018114610d145760008415610cfc5750858301515b600019600386901b1c1916600185901b178555610ca9565b600085815260208120601f198616915b82811015610d4357888601518255948401946001909101908401610d24565b5085821015610d615787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212200e11dd68f1040a665e1e7b666169f3f182dbd58b69642c58fe2d0afc49604a3264736f6c6343000818003300000000000000000000000023bc561ea93063b0cd12b6e3c690d40c93e29692000000000000000000000000ee5a4826068c5326a7f06fd6c7cbf816f096846c

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063d2edb6dd11610066578063d2edb6dd1461018e578063d4c282a3146101c4578063ec62f44b146101e5578063fa820de9146101f8578063fc58749e1461021857600080fd5b8063117803e31461009857806358e2d3a8146100dc578063b5720f821461012f578063bcfd032d14610144575b600080fd5b6100bf7f00000000000000000000000023bc561ea93063b0cd12b6e3c690d40c93e2969281565b6040516001600160a01b0390911681526020015b60405180910390f35b61011d6100ea366004610995565b6001600160a01b03918216600090815260208181526040808320939094168252919091522054600160c01b900460ff1690565b60405160ff90911681526020016100d3565b61014261013d3660046109c8565b61022b565b005b610157610152366004610995565b61057a565b6040805169ffffffffffffffffffff968716815260208101959095528401929092526060830152909116608082015260a0016100d3565b6100bf61019c366004610995565b6001600160a01b03918216600090815260208181526040808320938516835292905220541690565b6101d76101d2366004610995565b6105f2565b6040519081526020016100d3565b6101d76101f3366004610995565b610656565b61020b610206366004610995565b6106b3565b6040516100d39190610a61565b610157610226366004610a94565b61076e565b336001600160a01b037f00000000000000000000000023bc561ea93063b0cd12b6e3c690d40c93e29692161461027457604051635fc483c560e01b815260040160405180910390fd5b60005b8181101561057557604051806080016040528084848481811061029c5761029c610aea565b90506060020160400160208101906102b49190610b00565b6001600160a01b031681526020018484848181106102d4576102d4610aea565b90506060020160400160208101906102ec9190610b00565b6001600160a01b0316633943380c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d9190610b1b565b63ffffffff16815260200184848481811061036a5761036a610aea565b90506060020160400160208101906103829190610b00565b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e39190610b41565b60ff1681526020018484848181106103fd576103fd610aea565b90506060020160400160208101906104159190610b00565b6001600160a01b0316637284e4166040518163ffffffff1660e01b8152600401600060405180830381865afa158015610452573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261047a9190810190610b7a565b905260008085858581811061049157610491610aea565b6104a79260206060909202019081019150610b00565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008585858181106104db576104db610aea565b90506060020160200160208101906104f39190610b00565b6001600160a01b039081168252602080830193909352604091820160002084518154948601519386015160ff16600160c01b0260ff60c01b1963ffffffff909516600160a01b026001600160c01b0319909616919093161793909317919091161781556060820151600182019061056a9082610cb1565b505050600101610277565b505050565b6001600160a01b0382811660009081526020818152604080832093851683529290529081205481908190819081906105df90600160a01b900463ffffffff167f000000000000000000000000ee5a4826068c5326a7f06fd6c7cbf816f096846c6107e9565b939b929a50909850965090945092505050565b6001600160a01b0382811660009081526020818152604080832093851683529290529081205461064f90600160a01b900463ffffffff167f000000000000000000000000ee5a4826068c5326a7f06fd6c7cbf816f096846c610842565b9392505050565b6001600160a01b0382811660009081526020818152604080832093851683529290529081205461064f90600160a01b900463ffffffff167f000000000000000000000000ee5a4826068c5326a7f06fd6c7cbf816f096846c610888565b6001600160a01b038083166000908152602081815260408083209385168352929052206001018054606091906106e890610c27565b80601f016020809104026020016040519081016040528092919081815260200182805461071490610c27565b80156107615780601f1061073657610100808354040283529160200191610761565b820191906000526020600020905b81548152906001019060200180831161074457829003601f168201915b5050505050905092915050565b6001600160a01b0383811660009081526020818152604080832093861683529290529081205481908190819081906107d5908790600160a01b900463ffffffff167f000000000000000000000000ee5a4826068c5326a7f06fd6c7cbf816f096846c6108ba565b939c929b5090995097509095509350505050565b6000806000806000806040518863c00000001760e01b600052604081600460008b5afa8061081657600080fd5b50805160209091015199604082901c995067ffffffffffffffff90911697508796508995509350505050565b6040516001600160e01b03196380000000841760e01b16602082015260009061087e908390602401604051602081830303815290604052610955565b60401c9392505050565b60006040518363400000001760e01b60005260408160046000865afa806108ae57600080fd5b50602001519392505050565b600080600080600061094261092d878963200000001760e01b8b6040516024016108f6919069ffffffffffffffffffff91909116815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610955565b604081901c9167ffffffffffffffff90911690565b9899909897508796508995509350505050565b6000604051602081845160208601875afa8061097057600080fd5b50519392505050565b80356001600160a01b038116811461099057600080fd5b919050565b600080604083850312156109a857600080fd5b6109b183610979565b91506109bf60208401610979565b90509250929050565b600080602083850312156109db57600080fd5b823567ffffffffffffffff808211156109f357600080fd5b818501915085601f830112610a0757600080fd5b813581811115610a1657600080fd5b866020606083028501011115610a2b57600080fd5b60209290920196919550909350505050565b60005b83811015610a58578181015183820152602001610a40565b50506000910152565b6020815260008251806020840152610a80816040850160208701610a3d565b601f01601f19169190910160400192915050565b600080600060608486031215610aa957600080fd5b610ab284610979565b9250610ac060208501610979565b9150604084013569ffffffffffffffffffff81168114610adf57600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b1257600080fd5b61064f82610979565b600060208284031215610b2d57600080fd5b815163ffffffff8116811461064f57600080fd5b600060208284031215610b5357600080fd5b815160ff8116811461064f57600080fd5b634e487b7160e01b600052604160045260246000fd5b600060208284031215610b8c57600080fd5b815167ffffffffffffffff80821115610ba457600080fd5b818401915084601f830112610bb857600080fd5b815181811115610bca57610bca610b64565b604051601f8201601f19908116603f01168101908382118183101715610bf257610bf2610b64565b81604052828152876020848701011115610c0b57600080fd5b610c1c836020830160208801610a3d565b979650505050505050565b600181811c90821680610c3b57607f821691505b602082108103610c5b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610575576000816000526020600020601f850160051c81016020861015610c8a5750805b601f850160051c820191505b81811015610ca957828155600101610c96565b505050505050565b815167ffffffffffffffff811115610ccb57610ccb610b64565b610cdf81610cd98454610c27565b84610c61565b602080601f831160018114610d145760008415610cfc5750858301515b600019600386901b1c1916600185901b178555610ca9565b600085815260208120601f198616915b82811015610d4357888601518255948401946001909101908401610d24565b5085821015610d615787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea26469706673582212200e11dd68f1040a665e1e7b666169f3f182dbd58b69642c58fe2d0afc49604a3264736f6c63430008180033

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

00000000000000000000000023bc561ea93063b0cd12b6e3c690d40c93e29692000000000000000000000000ee5a4826068c5326a7f06fd6c7cbf816f096846c

-----Decoded View---------------
Arg [0] : _owner (address): 0x23BC561ea93063B0cD12b6E3c690D40c93e29692
Arg [1] : _dataFeedStore (address): 0xeE5a4826068C5326a7f06fD6c7cBf816F096846c

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000023bc561ea93063b0cd12b6e3c690d40c93e29692
Arg [1] : 000000000000000000000000ee5a4826068c5326a7f06fd6c7cbf816f096846c


Block Transaction 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
[ 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.