ETH Price: $3,318.37 (+3.86%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
211628142024-11-11 7:01:3573 days ago1731308495  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PriceFeedOracle

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 2 : PriceFeedOracle.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity ^0.8.18;

import "../../interfaces/IPriceFeedOracle.sol";

contract PriceFeedOracle is IPriceFeedOracle {

  mapping(address => AssetInfo) public assetsMap;

  address public constant ETH = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
  address public immutable safeTracker;

  constructor(
    address[] memory _assetAddresses,
    address[] memory _assetAggregators,
    AggregatorType[] memory _aggregatorTypes,
    uint8[] memory _assetDecimals,
    address _safeTracker
  ) {
    if (_assetAddresses.length == 0) {
      revert EmptyAssetAddresses();
    }
    if (
      _assetAddresses.length != _assetAggregators.length ||
      _assetAggregators.length != _aggregatorTypes.length ||
      _aggregatorTypes.length != _assetDecimals.length
    ) {
      revert ArgumentLengthMismatch(
        _assetAddresses.length,
        _assetAggregators.length,
        _aggregatorTypes.length,
        _assetDecimals.length
      );
    }
    if (_safeTracker == address(0)) {
      revert ZeroAddress("safeTracker");
    }

    safeTracker = _safeTracker;
    assetsMap[_safeTracker] = AssetInfo(Aggregator(_safeTracker), AggregatorType.ETH, 18);

    for (uint i = 0; i < _assetAddresses.length; i++) {
      if (_assetAddresses[i] == address(0)) {
        revert ZeroAddress("assetAddress");
      }
      if (_assetAggregators[i] == address(0)) {
        revert ZeroAddress("aggregator");
      }
      if (_assetDecimals[i] == 0) {
        revert ZeroDecimals(_assetAddresses[i]);
      }

      Aggregator aggregator = Aggregator(_assetAggregators[i]);
      uint8 aggregatorDecimals = aggregator.decimals();

      if (_aggregatorTypes[i] == AggregatorType.ETH && aggregatorDecimals != 18) {
          revert IncompatibleAggregatorDecimals(_assetAggregators[i], aggregatorDecimals, 18);
      }
      if (_aggregatorTypes[i] == AggregatorType.USD && aggregatorDecimals != 8) {
          revert IncompatibleAggregatorDecimals(_assetAggregators[i], aggregatorDecimals, 8);
      }

      assetsMap[_assetAddresses[i]] = AssetInfo(aggregator, _aggregatorTypes[i], _assetDecimals[i]);
    }

    // Require ETH-USD asset
    AssetInfo memory ethAsset = assetsMap[ETH];
    if (address(ethAsset.aggregator) == address(0)) {
      revert EthUsdAggregatorNotSet();
    }
    if (ethAsset.aggregatorType != AggregatorType.USD) {
      revert InvalidEthAggregatorType(ethAsset.aggregatorType, AggregatorType.USD);
    }
  }

  /// @notice Returns the amount of ether in wei that are equivalent to 1 unit (10 ** decimals) of asset
  /// @param assetAddress address of asset
  /// @return price in ether
  function getAssetToEthRate(address assetAddress) public view returns (uint) {
    if (assetAddress == ETH || assetAddress == safeTracker) {
      return 1 ether;
    }

    AssetInfo memory asset = assetsMap[assetAddress];
    return _getAssetToEthRate(asset.aggregator, asset.aggregatorType);
  }

  /// @notice Returns the amount of currency that is equivalent to ethIn amount of ether.
  /// @param assetAddress address of asset
  /// @param ethIn amount of ether to be converted to the asset
  /// @return asset amount
  function getAssetForEth(address assetAddress, uint ethIn) external view returns (uint) {
    if (assetAddress == ETH || assetAddress == safeTracker) {
      return ethIn;
    }

    AssetInfo memory asset = assetsMap[assetAddress];
    uint price = _getAssetToEthRate(asset.aggregator, asset.aggregatorType);

    return ethIn * (10 ** uint(asset.decimals)) / price;
  }

  /// @notice Returns the amount of eth that is equivalent to a given asset and amount
  /// @param assetAddress address of asset
  /// @param amount amount of asset
  /// @return amount of ether
  function getEthForAsset(address assetAddress, uint amount) external view returns (uint) {
    if (assetAddress == ETH || assetAddress == safeTracker) {
      return amount;
    }

    AssetInfo memory asset = assetsMap[assetAddress];
    uint price = _getAssetToEthRate(asset.aggregator, asset.aggregatorType);

    return amount * (price) / 10 ** uint(asset.decimals);
  }

  /// @notice Returns the amount of ether in wei that are equivalent to 1 unit (10 ** decimals) of asset
  /// @param aggregator The asset aggregator
  /// @param aggregatorType The asset aggregator type (i.e ETH, USD)
  /// @return price in ether
  function _getAssetToEthRate(Aggregator aggregator, AggregatorType aggregatorType) internal view returns (uint) {
    // NOTE: Current implementation relies on off-chain staleness checks, consider adding on-chain staleness check?
    int rate = aggregator.latestAnswer();
    if (rate <= 0) {
      revert NonPositiveRate(address(aggregator), rate);
    }

    if (aggregatorType == AggregatorType.ETH) {
      return uint(rate);
    }

    // AggregatorType.USD - convert the USD rate to its equivalent ETH rate using the ETH-USD exchange rate
    AssetInfo memory ethAsset = assetsMap[ETH];

    int ethUsdRate = ethAsset.aggregator.latestAnswer();
    if (ethUsdRate <= 0) {
      revert NonPositiveRate(ETH, ethUsdRate);
    }

    return (uint(rate) * 1e18) / uint(ethUsdRate);
  }

  /// @notice Retrieves the aggregator and decimals for a specific asset
  /// @param assetAddress address of the asset
  /// @return Aggregator instance and decimals of the asset
  function assets(address assetAddress) external view returns (Aggregator, uint8) {
    AssetInfo memory asset = assetsMap[assetAddress];
    return (asset.aggregator, asset.decimals);
  }
}

File 2 of 2 : IPriceFeedOracle.sol
// SPDX-License-Identifier: GPL-3.0-only

pragma solidity >=0.5.0;

interface Aggregator {
  function decimals() external view returns (uint8);
  function latestAnswer() external view returns (int);
}

interface IPriceFeedOracle {

  enum AggregatorType { ETH, USD }

  struct AssetInfo {
    Aggregator aggregator;
    AggregatorType aggregatorType;
    uint8 decimals;
  }

  function ETH() external view returns (address);
  function assets(address) external view returns (Aggregator, uint8);
  function assetsMap(address) external view returns (Aggregator, AggregatorType, uint8);

  function getAssetToEthRate(address asset) external view returns (uint);
  function getAssetForEth(address asset, uint ethIn) external view returns (uint);
  function getEthForAsset(address asset, uint amount) external view returns (uint);

  /* ========== ERRORS ========== */

  error EmptyAssetAddresses();
  error ArgumentLengthMismatch(uint assetAddressesLength, uint aggregatorsLength, uint typesLength, uint decimalsLength);
  error ZeroAddress(string parameter);
  error ZeroDecimals(address asset);
  error IncompatibleAggregatorDecimals(address aggregator, uint8 aggregatorDecimals, uint8 expectedDecimals);
  error UnknownAggregatorType(uint8 aggregatorType);
  error EthUsdAggregatorNotSet();
  error InvalidEthAggregatorType(AggregatorType actual, AggregatorType expected);
  error UnknownAsset(address asset);
  error NonPositiveRate(address aggregator, int rate);
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"_assetAddresses","type":"address[]"},{"internalType":"address[]","name":"_assetAggregators","type":"address[]"},{"internalType":"enum IPriceFeedOracle.AggregatorType[]","name":"_aggregatorTypes","type":"uint8[]"},{"internalType":"uint8[]","name":"_assetDecimals","type":"uint8[]"},{"internalType":"address","name":"_safeTracker","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"assetAddressesLength","type":"uint256"},{"internalType":"uint256","name":"aggregatorsLength","type":"uint256"},{"internalType":"uint256","name":"typesLength","type":"uint256"},{"internalType":"uint256","name":"decimalsLength","type":"uint256"}],"name":"ArgumentLengthMismatch","type":"error"},{"inputs":[],"name":"EmptyAssetAddresses","type":"error"},{"inputs":[],"name":"EthUsdAggregatorNotSet","type":"error"},{"inputs":[{"internalType":"address","name":"aggregator","type":"address"},{"internalType":"uint8","name":"aggregatorDecimals","type":"uint8"},{"internalType":"uint8","name":"expectedDecimals","type":"uint8"}],"name":"IncompatibleAggregatorDecimals","type":"error"},{"inputs":[{"internalType":"enum IPriceFeedOracle.AggregatorType","name":"actual","type":"uint8"},{"internalType":"enum IPriceFeedOracle.AggregatorType","name":"expected","type":"uint8"}],"name":"InvalidEthAggregatorType","type":"error"},{"inputs":[{"internalType":"address","name":"aggregator","type":"address"},{"internalType":"int256","name":"rate","type":"int256"}],"name":"NonPositiveRate","type":"error"},{"inputs":[{"internalType":"uint8","name":"aggregatorType","type":"uint8"}],"name":"UnknownAggregatorType","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"UnknownAsset","type":"error"},{"inputs":[{"internalType":"string","name":"parameter","type":"string"}],"name":"ZeroAddress","type":"error"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"ZeroDecimals","type":"error"},{"inputs":[],"name":"ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"assetAddress","type":"address"}],"name":"assets","outputs":[{"internalType":"contract Aggregator","name":"","type":"address"},{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"assetsMap","outputs":[{"internalType":"contract Aggregator","name":"aggregator","type":"address"},{"internalType":"enum IPriceFeedOracle.AggregatorType","name":"aggregatorType","type":"uint8"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"assetAddress","type":"address"},{"internalType":"uint256","name":"ethIn","type":"uint256"}],"name":"getAssetForEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"assetAddress","type":"address"}],"name":"getAssetToEthRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"assetAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getEthForAsset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"safeTracker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60a06040523480156200001157600080fd5b50604051620014ab380380620014ab8339810160408190526200003491620008a4565b845160000362000057576040516329f8606f60e01b815260040160405180910390fd5b835185511415806200006b57508251845114155b806200007957508151835114155b15620000bb578451845184518451604051635b53d79160e01b815260048101949094526024840192909252604483015260648201526084015b60405180910390fd5b6001600160a01b038116620001025760405163eac0d38960e01b815260206004820152600b60248201526a39b0b332aa3930b1b5b2b960a91b6044820152606401620000b2565b6001600160a01b0381811660808190526040805160608101825282815260006020808301828152601284860152948252819052919091208151815494166001600160a01b031985168117825592519193909283916001600160a81b03191617600160a01b8360018111156200017b576200017b620009d8565b021790555060409190910151815460ff909116600160a81b0260ff60a81b1990911617905560005b8551811015620005fa5760006001600160a01b0316868281518110620001cd57620001cd620009ee565b60200260200101516001600160a01b0316036200021d5760405163eac0d38960e01b815260206004820152600c60248201526b61737365744164647265737360a01b6044820152606401620000b2565b60006001600160a01b03168582815181106200023d576200023d620009ee565b60200260200101516001600160a01b0316036200028b5760405163eac0d38960e01b815260206004820152600a60248201526930b3b3b932b3b0ba37b960b11b6044820152606401620000b2565b828181518110620002a057620002a0620009ee565b602002602001015160ff16600003620002fa57858181518110620002c857620002c8620009ee565b6020026020010151604051639c91f73d60e01b8152600401620000b291906001600160a01b0391909116815260200190565b6000858281518110620003115762000311620009ee565b602002602001015190506000816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000382919062000a04565b905060008684815181106200039b576200039b620009ee565b60200260200101516001811115620003b757620003b7620009d8565b148015620003c957508060ff16601214155b156200042557868381518110620003e457620003e4620009ee565b60209081029190910101516040516302d4418160e11b81526001600160a01b03909116600482015260ff8216602482015260126044820152606401620000b2565b60018684815181106200043c576200043c620009ee565b60200260200101516001811115620004585762000458620009d8565b1480156200046a57508060ff16600814155b15620004c657868381518110620004855762000485620009ee565b60209081029190910101516040516302d4418160e11b81526001600160a01b03909116600482015260ff8216602482015260086044820152606401620000b2565b6040518060600160405280836001600160a01b03168152602001878581518110620004f557620004f5620009ee565b60200260200101516001811115620005115762000511620009d8565b81526020018685815181106200052b576200052b620009ee565b602002602001015160ff168152506000808a8681518110620005515762000551620009ee565b6020908102919091018101516001600160a01b0390811683528282019390935260409091016000208351815493166001600160a01b0319841681178255918401519092909183916001600160a81b03191617600160a01b836001811115620005bd57620005bd620009d8565b021790555060409190910151815460ff909116600160a81b0260ff60a81b1990911617905550819050620005f18162000a29565b915050620001a3565b5073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6000908152602081815260408051606081019091527fd0d045a07f9a74a2c48a464add9b06f25f501dbdf5bd4dd5a7489f86f449adda80546001600160a01b03811683529192909190830190600160a01b900460ff1660018111156200067a576200067a620009d8565b60018111156200068e576200068e620009d8565b81529054600160a81b900460ff1660209091015280519091506001600160a01b0316620006ce5760405163505bec9360e01b815260040160405180910390fd5b600181602001516001811115620006e957620006e9620009d8565b1462000713578060200151600160405163a0cf05df60e01b8152600401620000b292919062000a74565b50505050505062000a93565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200076057620007606200071f565b604052919050565b60006001600160401b038211156200078457620007846200071f565b5060051b60200190565b80516001600160a01b0381168114620007a657600080fd5b919050565b600082601f830112620007bd57600080fd5b81516020620007d6620007d08362000768565b62000735565b82815260059290921b84018101918181019086841115620007f657600080fd5b8286015b848110156200081c576200080e816200078e565b8352918301918301620007fa565b509695505050505050565b805160ff81168114620007a657600080fd5b600082601f8301126200084b57600080fd5b815160206200085e620007d08362000768565b82815260059290921b840181019181810190868411156200087e57600080fd5b8286015b848110156200081c57620008968162000827565b835291830191830162000882565b600080600080600060a08688031215620008bd57600080fd5b85516001600160401b0380821115620008d557600080fd5b620008e389838a01620007ab565b9650602091508188015181811115620008fb57600080fd5b620009098a828b01620007ab565b9650506040880151818111156200091f57600080fd5b8801601f81018a136200093157600080fd5b805162000942620007d08262000768565b81815260059190911b8201840190848101908c8311156200096257600080fd5b928501925b828410156200099157835160028110620009815760008081fd5b8252928501929085019062000967565b60608c0151909850945050505080821115620009ac57600080fd5b50620009bb8882890162000839565b925050620009cc608087016200078e565b90509295509295909350565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121562000a1757600080fd5b62000a228262000827565b9392505050565b60006001820162000a4a57634e487b7160e01b600052601160045260246000fd5b5060010190565b6002811062000a7057634e487b7160e01b600052602160045260246000fd5b9052565b6040810162000a84828562000a51565b62000a22602083018462000a51565b6080516109e862000ac36000396000818160ad015281816101d4015281816102fc01526103f901526109e86000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638322fff21161005b5780638322fff2146100fa578063a341f1b114610115578063bbff4e5a14610163578063f11b81881461017657600080fd5b806355c40e66146100825780635d8471e4146100a8578063696ae5e3146100e7575b600080fd5b6100956100903660046107ba565b6101aa565b6040519081526020015b60405180910390f35b6100cf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161009f565b6100956100f53660046107e4565b6102d2565b6100cf73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b6101546101233660046107e4565b6000602081905290815260409020546001600160a01b0381169060ff600160a01b8204811691600160a81b90041683565b60405161009f93929190610815565b6100956101713660046107ba565b6103cf565b6101896101843660046107e4565b6104e1565b604080516001600160a01b03909316835260ff90911660208301520161009f565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061020857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b156102145750806102cc565b6001600160a01b03838116600090815260208181526040808320815160608101909252805494851682529293909291830190600160a01b900460ff166001811115610261576102616107ff565b6001811115610272576102726107ff565b81529054600160a81b900460ff1660209182015281519082015191925060009161029c919061056a565b905080826040015160ff16600a6102b39190610954565b6102bd9086610960565b6102c79190610977565b925050505b92915050565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061033057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b156103445750670de0b6b3a7640000919050565b6001600160a01b03828116600090815260208181526040808320815160608101909252805494851682529293909291830190600160a01b900460ff166001811115610391576103916107ff565b60018111156103a2576103a26107ff565b81529054600160a81b900460ff166020918201528151908201519192506103c89161056a565b9392505050565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061042d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b156104395750806102cc565b6001600160a01b03838116600090815260208181526040808320815160608101909252805494851682529293909291830190600160a01b900460ff166001811115610486576104866107ff565b6001811115610497576104976107ff565b81529054600160a81b900460ff166020918201528151908201519192506000916104c1919061056a565b9050816040015160ff16600a6104d79190610954565b6102bd8286610960565b6001600160a01b0381811660009081526020818152604080832081516060810190925280549485168252929384938493909190830190600160a01b900460ff166001811115610532576105326107ff565b6001811115610543576105436107ff565b81529054600160a81b900460ff166020909101528051604090910151909590945092505050565b600080836001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf9190610999565b90506000811361060957604051635190c3cb60e01b81526001600160a01b0385166004820152602481018290526044015b60405180910390fd5b600083600181111561061d5761061d6107ff565b036106295790506102cc565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6000908152602081815260408051606081019091527fd0d045a07f9a74a2c48a464add9b06f25f501dbdf5bd4dd5a7489f86f449adda80546001600160a01b03811683529192909190830190600160a01b900460ff1660018111156106a5576106a56107ff565b60018111156106b6576106b66107ff565b81529054600160a81b900460ff166020918201528151604080516350d25bcd60e01b815290519394506000936001600160a01b03909216926350d25bcd926004808401938290030181865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190610999565b90506000811361077757604051635190c3cb60e01b815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600482015260248101829052604401610600565b8061078a84670de0b6b3a7640000610960565b6107949190610977565b9695505050505050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000602082840312156107f657600080fd5b6103c88261079e565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0384168152606081016002841061084357634e487b7160e01b600052602160045260246000fd5b83602083015260ff83166040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156108ab5781600019048211156108915761089161085a565b8085161561089e57918102915b93841c9390800290610875565b509250929050565b6000826108c2575060016102cc565b816108cf575060006102cc565b81600181146108e557600281146108ef5761090b565b60019150506102cc565b60ff8411156109005761090061085a565b50506001821b6102cc565b5060208310610133831016604e8410600b841016171561092e575081810a6102cc565b6109388383610870565b806000190482111561094c5761094c61085a565b029392505050565b60006103c883836108b3565b80820281158282048414176102cc576102cc61085a565b60008261099457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156109ab57600080fd5b505191905056fea2646970667358221220f25f4c9074380c53294a3169ad57bf4b48b189b30da2580b3d3534a777730e7664736f6c6343000812003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000cafeab8b01c74c2239ea9b2b0f6ab2dd409c6c1300000000000000000000000000000000000000000000000000000000000000070000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8400000000000000000000000027f23c710dd3d878fe9393d93465fed1302f2ebd000000000000000000000000ae78736cd615f374d3085123a210448e74fc6393000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000cbb7c0000ab88b473b1f5afd9ef808440eed33bf000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000007000000000000000000000000773616e4d11a78f511299002da57a0a94577f1f400000000000000000000000086392dc19c0b719886221c78ab11eb8cf5c52812000000000000000000000000cc72039a141c6e34a779ef93aef5eb4c82a893c7000000000000000000000000536218f9e9eb48863970252233c8f271f554c2d0000000000000000000000000986b5e1e1755e3c2440e960477f25201b0a8bbd40000000000000000000000002665701293fcbeb223d11a08d826563edcce423a0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638322fff21161005b5780638322fff2146100fa578063a341f1b114610115578063bbff4e5a14610163578063f11b81881461017657600080fd5b806355c40e66146100825780635d8471e4146100a8578063696ae5e3146100e7575b600080fd5b6100956100903660046107ba565b6101aa565b6040519081526020015b60405180910390f35b6100cf7f000000000000000000000000cafeab8b01c74c2239ea9b2b0f6ab2dd409c6c1381565b6040516001600160a01b03909116815260200161009f565b6100956100f53660046107e4565b6102d2565b6100cf73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b6101546101233660046107e4565b6000602081905290815260409020546001600160a01b0381169060ff600160a01b8204811691600160a81b90041683565b60405161009f93929190610815565b6100956101713660046107ba565b6103cf565b6101896101843660046107e4565b6104e1565b604080516001600160a01b03909316835260ff90911660208301520161009f565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061020857507f000000000000000000000000cafeab8b01c74c2239ea9b2b0f6ab2dd409c6c136001600160a01b0316836001600160a01b0316145b156102145750806102cc565b6001600160a01b03838116600090815260208181526040808320815160608101909252805494851682529293909291830190600160a01b900460ff166001811115610261576102616107ff565b6001811115610272576102726107ff565b81529054600160a81b900460ff1660209182015281519082015191925060009161029c919061056a565b905080826040015160ff16600a6102b39190610954565b6102bd9086610960565b6102c79190610977565b925050505b92915050565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061033057507f000000000000000000000000cafeab8b01c74c2239ea9b2b0f6ab2dd409c6c136001600160a01b0316826001600160a01b0316145b156103445750670de0b6b3a7640000919050565b6001600160a01b03828116600090815260208181526040808320815160608101909252805494851682529293909291830190600160a01b900460ff166001811115610391576103916107ff565b60018111156103a2576103a26107ff565b81529054600160a81b900460ff166020918201528151908201519192506103c89161056a565b9392505050565b60006001600160a01b03831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee148061042d57507f000000000000000000000000cafeab8b01c74c2239ea9b2b0f6ab2dd409c6c136001600160a01b0316836001600160a01b0316145b156104395750806102cc565b6001600160a01b03838116600090815260208181526040808320815160608101909252805494851682529293909291830190600160a01b900460ff166001811115610486576104866107ff565b6001811115610497576104976107ff565b81529054600160a81b900460ff166020918201528151908201519192506000916104c1919061056a565b9050816040015160ff16600a6104d79190610954565b6102bd8286610960565b6001600160a01b0381811660009081526020818152604080832081516060810190925280549485168252929384938493909190830190600160a01b900460ff166001811115610532576105326107ff565b6001811115610543576105436107ff565b81529054600160a81b900460ff166020909101528051604090910151909590945092505050565b600080836001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cf9190610999565b90506000811361060957604051635190c3cb60e01b81526001600160a01b0385166004820152602481018290526044015b60405180910390fd5b600083600181111561061d5761061d6107ff565b036106295790506102cc565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6000908152602081815260408051606081019091527fd0d045a07f9a74a2c48a464add9b06f25f501dbdf5bd4dd5a7489f86f449adda80546001600160a01b03811683529192909190830190600160a01b900460ff1660018111156106a5576106a56107ff565b60018111156106b6576106b66107ff565b81529054600160a81b900460ff166020918201528151604080516350d25bcd60e01b815290519394506000936001600160a01b03909216926350d25bcd926004808401938290030181865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190610999565b90506000811361077757604051635190c3cb60e01b815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600482015260248101829052604401610600565b8061078a84670de0b6b3a7640000610960565b6107949190610977565b9695505050505050565b80356001600160a01b03811681146107b557600080fd5b919050565b600080604083850312156107cd57600080fd5b6107d68361079e565b946020939093013593505050565b6000602082840312156107f657600080fd5b6103c88261079e565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0384168152606081016002841061084357634e487b7160e01b600052602160045260246000fd5b83602083015260ff83166040830152949350505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156108ab5781600019048211156108915761089161085a565b8085161561089e57918102915b93841c9390800290610875565b509250929050565b6000826108c2575060016102cc565b816108cf575060006102cc565b81600181146108e557600281146108ef5761090b565b60019150506102cc565b60ff8411156109005761090061085a565b50506001821b6102cc565b5060208310610133831016604e8410600b841016171561092e575081810a6102cc565b6109388383610870565b806000190482111561094c5761094c61085a565b029392505050565b60006103c883836108b3565b80820281158282048414176102cc576102cc61085a565b60008261099457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156109ab57600080fd5b505191905056fea2646970667358221220f25f4c9074380c53294a3169ad57bf4b48b189b30da2580b3d3534a777730e7664736f6c63430008120033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000003a0000000000000000000000000cafeab8b01c74c2239ea9b2b0f6ab2dd409c6c1300000000000000000000000000000000000000000000000000000000000000070000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8400000000000000000000000027f23c710dd3d878fe9393d93465fed1302f2ebd000000000000000000000000ae78736cd615f374d3085123a210448e74fc6393000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000cbb7c0000ab88b473b1f5afd9ef808440eed33bf000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000007000000000000000000000000773616e4d11a78f511299002da57a0a94577f1f400000000000000000000000086392dc19c0b719886221c78ab11eb8cf5c52812000000000000000000000000cc72039a141c6e34a779ef93aef5eb4c82a893c7000000000000000000000000536218f9e9eb48863970252233c8f271f554c2d0000000000000000000000000986b5e1e1755e3c2440e960477f25201b0a8bbd40000000000000000000000002665701293fcbeb223d11a08d826563edcce423a0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b84190000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000012

-----Decoded View---------------
Arg [0] : _assetAddresses (address[]): 0x6B175474E89094C44Da98b954EedeAC495271d0F,0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84,0x27F23c710dD3d878FE9393d93465FeD1302f2EbD,0xae78736Cd615f374D3085123A210448E74Fc6393,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf,0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
Arg [1] : _assetAggregators (address[]): 0x773616E4d11A78F511299002da57A0a94577F1f4,0x86392dC19c0b719886221c78AB11eb8Cf5c52812,0xCc72039A141c6e34a779eF93AEF5eB4C82A893c7,0x536218f9E9Eb48863970252233c8F271f554C2d0,0x986b5E1e1755e3C2440e960477f25201B0a8bbD4,0x2665701293fCbEB223D11A08D826563EDcCE423A,0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [2] : _aggregatorTypes (uint8[]): 0,0,0,0,0,1,1
Arg [3] : _assetDecimals (uint8[]): 18,18,18,18,6,8,18
Arg [4] : _safeTracker (address): 0xcafeaB8B01C74c2239eA9b2B0F6aB2dD409c6c13

-----Encoded View---------------
37 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000002a0
Arg [3] : 00000000000000000000000000000000000000000000000000000000000003a0
Arg [4] : 000000000000000000000000cafeab8b01c74c2239ea9b2b0f6ab2dd409c6c13
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [7] : 000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84
Arg [8] : 00000000000000000000000027f23c710dd3d878fe9393d93465fed1302f2ebd
Arg [9] : 000000000000000000000000ae78736cd615f374d3085123a210448e74fc6393
Arg [10] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [11] : 000000000000000000000000cbb7c0000ab88b473b1f5afd9ef808440eed33bf
Arg [12] : 000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [14] : 000000000000000000000000773616e4d11a78f511299002da57a0a94577f1f4
Arg [15] : 00000000000000000000000086392dc19c0b719886221c78ab11eb8cf5c52812
Arg [16] : 000000000000000000000000cc72039a141c6e34a779ef93aef5eb4c82a893c7
Arg [17] : 000000000000000000000000536218f9e9eb48863970252233c8f271f554c2d0
Arg [18] : 000000000000000000000000986b5e1e1755e3c2440e960477f25201b0a8bbd4
Arg [19] : 0000000000000000000000002665701293fcbeb223d11a08d826563edcce423a
Arg [20] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [21] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [22] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [23] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [24] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [28] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [29] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [30] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [32] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [33] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [34] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [35] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [36] : 0000000000000000000000000000000000000000000000000000000000000012


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.