ETH Price: $2,654.49 (+1.83%)

Contract

0xA50ba011c48153De246E5192C8f9258A2ba79Ca9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

Transaction Hash
Method
Block
From
To
Transfer Ownersh...113793282020-12-03 11:21:111415 days ago1606994471IN
Aave: Price Oracle V2
0 ETH0.0013578844
Set Fallback Ora...113719972020-12-02 8:38:491416 days ago1606898329IN
Aave: Price Oracle V2
0 ETH0.0013811431
0x60a06040112759022020-11-17 14:11:091431 days ago1605622269IN
 Create: AaveOracle
0 ETH0.1002708486

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AaveOracle

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2020-11-17
*/

// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
  function _msgSender() internal virtual view returns (address payable) {
    return msg.sender;
  }

  function _msgData() internal virtual view returns (bytes memory) {
    this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
    return msg.data;
  }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
  address private _owner;

  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

  /**
   * @dev Initializes the contract setting the deployer as the initial owner.
   */
  constructor() internal {
    address msgSender = _msgSender();
    _owner = msgSender;
    emit OwnershipTransferred(address(0), msgSender);
  }

  /**
   * @dev Returns the address of the current owner.
   */
  function owner() public view returns (address) {
    return _owner;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(_owner == _msgSender(), 'Ownable: caller is not the owner');
    _;
  }

  /**
   * @dev Leaves the contract without owner. It will not be possible to call
   * `onlyOwner` functions anymore. Can only be called by the current owner.
   *
   * NOTE: Renouncing ownership will leave the contract without an owner,
   * thereby removing any functionality that is only available to the owner.
   */
  function renounceOwnership() public virtual onlyOwner {
    emit OwnershipTransferred(_owner, address(0));
    _owner = address(0);
  }

  /**
   * @dev Transfers ownership of the contract to a new account (`newOwner`).
   * Can only be called by the current owner.
   */
  function transferOwnership(address newOwner) public virtual onlyOwner {
    require(newOwner != address(0), 'Ownable: new owner is the zero address');
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}

interface IPriceOracleGetter {
  function getAssetPrice(address asset) external view returns (uint256);
}

interface IChainlinkAggregator {
  function latestAnswer() external view returns (int256);
}

/// @title AaveOracle
/// @author Aave
/// @notice Proxy smart contract to get the price of an asset from a price source, with Chainlink Aggregator
///         smart contracts as primary option
/// - If the returned price by a Chainlink aggregator is <= 0, the call is forwarded to a fallbackOracle
/// - Owned by the Aave governance system, allowed to add sources for assets, replace them
///   and change the fallbackOracle
contract AaveOracle is IPriceOracleGetter, Ownable {
  event WethSet(address indexed weth);
  event AssetSourceUpdated(address indexed asset, address indexed source);
  event FallbackOracleUpdated(address indexed fallbackOracle);

  mapping(address => IChainlinkAggregator) private assetsSources;
  IPriceOracleGetter private _fallbackOracle;
  address public immutable WETH;

  /// @notice Constructor
  /// @param assets The addresses of the assets
  /// @param sources The address of the source of each asset
  /// @param fallbackOracle The address of the fallback oracle to use if the data of an
  ///        aggregator is not consistent
  constructor(
    address[] memory assets,
    address[] memory sources,
    address fallbackOracle,
    address weth
  ) public {
    _setFallbackOracle(fallbackOracle);
    _setAssetsSources(assets, sources);
    WETH = weth;
    emit WethSet(weth);
  }

  /// @notice External function called by the Aave governance to set or replace sources of assets
  /// @param assets The addresses of the assets
  /// @param sources The address of the source of each asset
  function setAssetSources(address[] calldata assets, address[] calldata sources)
    external
    onlyOwner
  {
    _setAssetsSources(assets, sources);
  }

  /// @notice Sets the fallbackOracle
  /// - Callable only by the Aave governance
  /// @param fallbackOracle The address of the fallbackOracle
  function setFallbackOracle(address fallbackOracle) external onlyOwner {
    _setFallbackOracle(fallbackOracle);
  }

  /// @notice Internal function to set the sources for each asset
  /// @param assets The addresses of the assets
  /// @param sources The address of the source of each asset
  function _setAssetsSources(address[] memory assets, address[] memory sources) internal {
    require(assets.length == sources.length, 'INCONSISTENT_PARAMS_LENGTH');
    for (uint256 i = 0; i < assets.length; i++) {
      assetsSources[assets[i]] = IChainlinkAggregator(sources[i]);
      emit AssetSourceUpdated(assets[i], sources[i]);
    }
  }

  /// @notice Internal function to set the fallbackOracle
  /// @param fallbackOracle The address of the fallbackOracle
  function _setFallbackOracle(address fallbackOracle) internal {
    _fallbackOracle = IPriceOracleGetter(fallbackOracle);
    emit FallbackOracleUpdated(fallbackOracle);
  }

  /// @notice Gets an asset price by address
  /// @param asset The asset address
  function getAssetPrice(address asset) public override view returns (uint256) {
    IChainlinkAggregator source = assetsSources[asset];

    if (asset == WETH) {
      return 1 ether;
    } else if (address(source) == address(0)) {
      return _fallbackOracle.getAssetPrice(asset);
    } else {
      int256 price = IChainlinkAggregator(source).latestAnswer();
      if (price > 0) {
        return uint256(price);
      } else {
        return _fallbackOracle.getAssetPrice(asset);
      }
    }
  }

  /// @notice Gets a list of prices from a list of assets addresses
  /// @param assets The list of assets addresses
  function getAssetsPrices(address[] calldata assets) external view returns (uint256[] memory) {
    uint256[] memory prices = new uint256[](assets.length);
    for (uint256 i = 0; i < assets.length; i++) {
      prices[i] = getAssetPrice(assets[i]);
    }
    return prices;
  }

  /// @notice Gets the address of the source for an asset address
  /// @param asset The address of the asset
  /// @return address The address of the source
  function getSourceOfAsset(address asset) external view returns (address) {
    return address(assetsSources[asset]);
  }

  /// @notice Gets the address of the fallback oracle
  /// @return address The addres of the fallback oracle
  function getFallbackOracle() external view returns (address) {
    return address(_fallbackOracle);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"address[]","name":"sources","type":"address[]"},{"internalType":"address","name":"fallbackOracle","type":"address"},{"internalType":"address","name":"weth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"source","type":"address"}],"name":"AssetSourceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fallbackOracle","type":"address"}],"name":"FallbackOracleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"weth","type":"address"}],"name":"WethSet","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getAssetPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"}],"name":"getAssetsPrices","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFallbackOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getSourceOfAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"address[]","name":"sources","type":"address[]"}],"name":"setAssetSources","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fallbackOracle","type":"address"}],"name":"setFallbackOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a06040523480156200001157600080fd5b5060405162000ead38038062000ead833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82518660208202830111640100000000821117156200008c57600080fd5b82525081516020918201928201910280838360005b83811015620000bb578181015183820152602001620000a1565b5050505090500160405260200180516040519392919084640100000000821115620000e557600080fd5b908301906020820185811115620000fb57600080fd5b82518660208202830111640100000000821117156200011957600080fd5b82525081516020918201928201910280838360005b83811015620001485781810151838201526020016200012e565b505050509190910160409081526020830151920151919350909150600090506200017162000222565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001c68262000226565b620001d2848462000270565b6001600160601b0319606082901b166080526040516001600160a01b038216907f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf990600090a250505050620003bc565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114620002c7576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015620003b757818181518110620002e157fe5b602002602001015160016000858481518110620002fa57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106200035357fe5b60200260200101516001600160a01b03168382815181106200037157fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a3600101620002ca565b505050565b60805160601c610ace620003df600039806105bc52806106005250610ace6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639d23d9f2116100665780639d23d9f214610125578063abfd5310146101e5578063ad5c4648146102a7578063b3596f07146102af578063f2fde38b146102e75761009e565b8063170aee73146100a35780636210308c146100cb578063715018a6146100ef5780638da5cb5b146100f757806392bf2be0146100ff575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661030d565b005b6100d3610371565b604080516001600160a01b039092168252519081900360200190f35b6100c9610380565b6100d3610422565b6100d36004803603602081101561011557600080fd5b50356001600160a01b0316610431565b6101956004803603602081101561013b57600080fd5b81019060208101813564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184602083028401116401000000008311171561018a57600080fd5b509092509050610452565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101d15781810151838201526020016101b9565b505050509050019250505060405180910390f35b6100c9600480360360408110156101fb57600080fd5b81019060208101813564010000000081111561021657600080fd5b82018360208201111561022857600080fd5b8035906020019184602083028401116401000000008311171561024a57600080fd5b91939092909160208101903564010000000081111561026857600080fd5b82018360208201111561027a57600080fd5b8035906020019184602083028401116401000000008311171561029c57600080fd5b5090925090506104ef565b6100d36105ba565b6102d5600480360360208110156102c557600080fd5b50356001600160a01b03166105de565b60408051918252519081900360200190f35b6100c9600480360360208110156102fd57600080fd5b50356001600160a01b03166107c7565b6103156108bf565b6000546001600160a01b03908116911614610365576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b61036e816108c3565b50565b6002546001600160a01b031690565b6103886108bf565b6000546001600160a01b039081169116146103d8576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b03808216600090815260016020526040902054165b919050565b6060808267ffffffffffffffff8111801561046c57600080fd5b50604051908082528060200260200182016040528015610496578160200160208202803683370190505b50905060005b838110156104e7576104c88585838181106104b357fe5b905060200201356001600160a01b03166105de565b8282815181106104d457fe5b602090810291909101015260010161049c565b509392505050565b6104f76108bf565b6000546001600160a01b03908116911614610547576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b6105b48484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080880282810182019093528782529093508792508691829185019084908082843760009201919091525061090d92505050565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b038082166000818152600160205260408120549092908116917f0000000000000000000000000000000000000000000000000000000000000000909116141561063957670de0b6b3a764000091505061044d565b6001600160a01b0381166106c9576002546040805163b3596f0760e01b81526001600160a01b0386811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561069457600080fd5b505afa1580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b5051915061044d9050565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070457600080fd5b505afa158015610718573d6000803e3d6000fd5b505050506040513d602081101561072e57600080fd5b50519050600081131561074457915061044d9050565b6002546040805163b3596f0760e01b81526001600160a01b0387811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561079157600080fd5b505afa1580156107a5573d6000803e3d6000fd5b505050506040513d60208110156107bb57600080fd5b5051925061044d915050565b6107cf6108bf565b6000546001600160a01b0390811691161461081f576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b6001600160a01b0381166108645760405162461bcd60e51b8152600401808060200182810382526026815260200180610a536026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114610963576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015610a4d5781818151811061097b57fe5b60200260200101516001600085848151811061099357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106109eb57fe5b60200260200101516001600160a01b0316838281518110610a0857fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a3600101610966565b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e361b4072d4d8f7c5538b98948d76f20dcfa76c2e5b381ca3c114464bc2d71e864736f6c634300060c0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000140000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae90000000000000000000000000d8775f648430679a709e98d2b0cb6250d2887ef0000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c530000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000f629cbd94d3791c9250152bd8dfbdf380e2a3b9c000000000000000000000000dd974d5c2e2928dea5f71b9825b8b646686bd200000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc9420000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a2000000000000000000000000408e41876cccdc0f92210600ef50372656052a38000000000000000000000000c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f00000000000000000000000057ab1ec28d129707052df4df418d58a2d46d5f510000000000000000000000000000000000085d4780b73119b644ae5ecd22b3760000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5990000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f49800000000000000000000000010f7fc1f91ba351f9c629c5947ad69bd03c05b9600000000000000000000000000000000000000000000000000000000000000140000000000000000000000006df09e975c830ecae5bd4ed9d90f3a95a4f880120000000000000000000000000d16d4528239e9ee52fa531af613acdb23d88c94000000000000000000000000614715d2af89e6ec99a233818275142ce88d1cfd000000000000000000000000773616e4d11a78f511299002da57a0a94577f1f400000000000000000000000024d9ab51950f3d62e9144fdc2f3135daa6ce8d1b000000000000000000000000656c0544ef4c98a6a98491833a89204abb045d6b000000000000000000000000dc530d9457755926550b59e8eccdae762418155700000000000000000000000082a44d92d6c329826dc557c5e1be6ebec5d5feb900000000000000000000000024551a8fb2a7211a25a17b1481f043a8a8adc7f20000000000000000000000003147d7203354dc06d9fd350c7a2437bca92387a400000000000000000000000079291a9d692df95334b1a0b3b4ae6bc606782f8c0000000000000000000000008e0b7e6062272b5ef4524250bfff8e5bd34977570000000000000000000000003886ba987236181d98f2401c507fb8bea7871df2000000000000000000000000d6aa3d25116d8da79ea0246c4826eb951872e02e000000000000000000000000986b5e1e1755e3c2440e960477f25201b0a8bbd4000000000000000000000000ee9f2375b4bdf6387aa8265dd4fb8f16512a1d46000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e80000000000000000000000007c5d4f8345e66f68099581db340cd65b078c41f40000000000000000000000002da4983a622a8498bb1a21fae9d8f6c6649399620000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80639d23d9f2116100665780639d23d9f214610125578063abfd5310146101e5578063ad5c4648146102a7578063b3596f07146102af578063f2fde38b146102e75761009e565b8063170aee73146100a35780636210308c146100cb578063715018a6146100ef5780638da5cb5b146100f757806392bf2be0146100ff575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b031661030d565b005b6100d3610371565b604080516001600160a01b039092168252519081900360200190f35b6100c9610380565b6100d3610422565b6100d36004803603602081101561011557600080fd5b50356001600160a01b0316610431565b6101956004803603602081101561013b57600080fd5b81019060208101813564010000000081111561015657600080fd5b82018360208201111561016857600080fd5b8035906020019184602083028401116401000000008311171561018a57600080fd5b509092509050610452565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156101d15781810151838201526020016101b9565b505050509050019250505060405180910390f35b6100c9600480360360408110156101fb57600080fd5b81019060208101813564010000000081111561021657600080fd5b82018360208201111561022857600080fd5b8035906020019184602083028401116401000000008311171561024a57600080fd5b91939092909160208101903564010000000081111561026857600080fd5b82018360208201111561027a57600080fd5b8035906020019184602083028401116401000000008311171561029c57600080fd5b5090925090506104ef565b6100d36105ba565b6102d5600480360360208110156102c557600080fd5b50356001600160a01b03166105de565b60408051918252519081900360200190f35b6100c9600480360360208110156102fd57600080fd5b50356001600160a01b03166107c7565b6103156108bf565b6000546001600160a01b03908116911614610365576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b61036e816108c3565b50565b6002546001600160a01b031690565b6103886108bf565b6000546001600160a01b039081169116146103d8576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6001600160a01b03808216600090815260016020526040902054165b919050565b6060808267ffffffffffffffff8111801561046c57600080fd5b50604051908082528060200260200182016040528015610496578160200160208202803683370190505b50905060005b838110156104e7576104c88585838181106104b357fe5b905060200201356001600160a01b03166105de565b8282815181106104d457fe5b602090810291909101015260010161049c565b509392505050565b6104f76108bf565b6000546001600160a01b03908116911614610547576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b6105b48484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080880282810182019093528782529093508792508691829185019084908082843760009201919091525061090d92505050565b50505050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6001600160a01b038082166000818152600160205260408120549092908116917f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2909116141561063957670de0b6b3a764000091505061044d565b6001600160a01b0381166106c9576002546040805163b3596f0760e01b81526001600160a01b0386811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561069457600080fd5b505afa1580156106a8573d6000803e3d6000fd5b505050506040513d60208110156106be57600080fd5b5051915061044d9050565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070457600080fd5b505afa158015610718573d6000803e3d6000fd5b505050506040513d602081101561072e57600080fd5b50519050600081131561074457915061044d9050565b6002546040805163b3596f0760e01b81526001600160a01b0387811660048301529151919092169163b3596f07916024808301926020929190829003018186803b15801561079157600080fd5b505afa1580156107a5573d6000803e3d6000fd5b505050506040513d60208110156107bb57600080fd5b5051925061044d915050565b6107cf6108bf565b6000546001600160a01b0390811691161461081f576040805162461bcd60e51b81526020600482018190526024820152600080516020610a79833981519152604482015290519081900360640190fd5b6001600160a01b0381166108645760405162461bcd60e51b8152600401808060200182810382526026815260200180610a536026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114610963576040805162461bcd60e51b815260206004820152601a60248201527f494e434f4e53495354454e545f504152414d535f4c454e475448000000000000604482015290519081900360640190fd5b60005b8251811015610a4d5781818151811061097b57fe5b60200260200101516001600085848151811061099357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106109eb57fe5b60200260200101516001600160a01b0316838281518110610a0857fe5b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a3600101610966565b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220e361b4072d4d8f7c5538b98948d76f20dcfa76c2e5b381ca3c114464bc2d71e864736f6c634300060c0033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000140000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae90000000000000000000000000d8775f648430679a709e98d2b0cb6250d2887ef0000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c530000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000f629cbd94d3791c9250152bd8dfbdf380e2a3b9c000000000000000000000000dd974d5c2e2928dea5f71b9825b8b646686bd200000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca0000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc9420000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a2000000000000000000000000408e41876cccdc0f92210600ef50372656052a38000000000000000000000000c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f00000000000000000000000057ab1ec28d129707052df4df418d58a2d46d5f510000000000000000000000000000000000085d4780b73119b644ae5ecd22b3760000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5990000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f49800000000000000000000000010f7fc1f91ba351f9c629c5947ad69bd03c05b9600000000000000000000000000000000000000000000000000000000000000140000000000000000000000006df09e975c830ecae5bd4ed9d90f3a95a4f880120000000000000000000000000d16d4528239e9ee52fa531af613acdb23d88c94000000000000000000000000614715d2af89e6ec99a233818275142ce88d1cfd000000000000000000000000773616e4d11a78f511299002da57a0a94577f1f400000000000000000000000024d9ab51950f3d62e9144fdc2f3135daa6ce8d1b000000000000000000000000656c0544ef4c98a6a98491833a89204abb045d6b000000000000000000000000dc530d9457755926550b59e8eccdae762418155700000000000000000000000082a44d92d6c329826dc557c5e1be6ebec5d5feb900000000000000000000000024551a8fb2a7211a25a17b1481f043a8a8adc7f20000000000000000000000003147d7203354dc06d9fd350c7a2437bca92387a400000000000000000000000079291a9d692df95334b1a0b3b4ae6bc606782f8c0000000000000000000000008e0b7e6062272b5ef4524250bfff8e5bd34977570000000000000000000000003886ba987236181d98f2401c507fb8bea7871df2000000000000000000000000d6aa3d25116d8da79ea0246c4826eb951872e02e000000000000000000000000986b5e1e1755e3c2440e960477f25201b0a8bbd4000000000000000000000000ee9f2375b4bdf6387aa8265dd4fb8f16512a1d46000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e80000000000000000000000007c5d4f8345e66f68099581db340cd65b078c41f40000000000000000000000002da4983a622a8498bb1a21fae9d8f6c6649399620000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419

-----Decoded View---------------
Arg [0] : assets (address[]): 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9,0x0D8775F648430679A709E98d2b0Cb6250d2887EF,0x4Fabb145d64652a948d72533023f6E7A623C7C53,0x6B175474E89094C44Da98b954EedeAC495271d0F,0xF629cBd94d3791C9250152BD8dfBDF380E2a3B9c,0xdd974D5C2e2928deA5F71b9825b8b646686BD200,0x514910771AF9Ca656af840dff83E8264EcF986CA,0x0F5D2fB29fb7d3CFeE444a200298f468908cC942,0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2,0x408e41876cCCDC0F92210600ef50372656052a38,0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F,0x57Ab1ec28D129707052df4dF418D58a2D46d5f51,0x0000000000085d4780B73119b644AE5ecd22b376,0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,0xdAC17F958D2ee523a2206206994597C13D831ec7,0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599,0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e,0xE41d2489571d322189246DaFA5ebDe1F4699F498,0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96
Arg [1] : sources (address[]): 0x6Df09E975c830ECae5bd4eD9d90f3A95a4f88012,0x0d16d4528239e9ee52fa531af613AcdB23D88c94,0x614715d2Af89E6EC99A233818275142cE88d1Cfd,0x773616E4d11A78F511299002da57A0a94577F1f4,0x24D9aB51950F3d62E9144fdC2f3135DAA6Ce8D1B,0x656c0544eF4C98A6a98491833A89204Abb045d6b,0xDC530D9457755926550b59e8ECcdaE7624181557,0x82A44D92D6c329826dc557c5E1Be6ebeC5D5FeB9,0x24551a8Fb2A7211A25a17B1481f043A8a8adC7f2,0x3147D7203354Dc06D9fd350c7a2437bcA92387a4,0x79291A9d692Df95334B1a0B3B4AE6bC606782f8c,0x8e0b7e6062272B5eF4524250bFFF8e5Bd3497757,0x3886BA987236181D98F2401c507Fb8BeA7871dF2,0xD6aA3D25116d8dA79Ea0246c4826EB951872e02e,0x986b5E1e1755e3C2440e960477f25201B0a8bbD4,0xEe9F2375b4bdF6387aa8265dD4FB8F16512A1d46,0xdeb288F737066589598e9214E782fa5A8eD689e8,0x7c5d4F8345e66f68099581Db340cd65B078C41f4,0x2Da4983a622a8498bb1a21FaE9D8F6C664939962,0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [2] : fallbackOracle (address): 0x0000000000000000000000000000000000000000
Arg [3] : weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2

-----Encoded View---------------
46 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000320
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [5] : 0000000000000000000000007fc66500c84a76ad7e9c93437bfc5ac33e2ddae9
Arg [6] : 0000000000000000000000000d8775f648430679a709e98d2b0cb6250d2887ef
Arg [7] : 0000000000000000000000004fabb145d64652a948d72533023f6e7a623c7c53
Arg [8] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [9] : 000000000000000000000000f629cbd94d3791c9250152bd8dfbdf380e2a3b9c
Arg [10] : 000000000000000000000000dd974d5c2e2928dea5f71b9825b8b646686bd200
Arg [11] : 000000000000000000000000514910771af9ca656af840dff83e8264ecf986ca
Arg [12] : 0000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc942
Arg [13] : 0000000000000000000000009f8f72aa9304c8b593d555f12ef6589cc3a579a2
Arg [14] : 000000000000000000000000408e41876cccdc0f92210600ef50372656052a38
Arg [15] : 000000000000000000000000c011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f
Arg [16] : 00000000000000000000000057ab1ec28d129707052df4df418d58a2d46d5f51
Arg [17] : 0000000000000000000000000000000000085d4780b73119b644ae5ecd22b376
Arg [18] : 0000000000000000000000001f9840a85d5af5bf1d1762f925bdaddc4201f984
Arg [19] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [20] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [21] : 0000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599
Arg [22] : 0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e
Arg [23] : 000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498
Arg [24] : 00000000000000000000000010f7fc1f91ba351f9c629c5947ad69bd03c05b96
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [26] : 0000000000000000000000006df09e975c830ecae5bd4ed9d90f3a95a4f88012
Arg [27] : 0000000000000000000000000d16d4528239e9ee52fa531af613acdb23d88c94
Arg [28] : 000000000000000000000000614715d2af89e6ec99a233818275142ce88d1cfd
Arg [29] : 000000000000000000000000773616e4d11a78f511299002da57a0a94577f1f4
Arg [30] : 00000000000000000000000024d9ab51950f3d62e9144fdc2f3135daa6ce8d1b
Arg [31] : 000000000000000000000000656c0544ef4c98a6a98491833a89204abb045d6b
Arg [32] : 000000000000000000000000dc530d9457755926550b59e8eccdae7624181557
Arg [33] : 00000000000000000000000082a44d92d6c329826dc557c5e1be6ebec5d5feb9
Arg [34] : 00000000000000000000000024551a8fb2a7211a25a17b1481f043a8a8adc7f2
Arg [35] : 0000000000000000000000003147d7203354dc06d9fd350c7a2437bca92387a4
Arg [36] : 00000000000000000000000079291a9d692df95334b1a0b3b4ae6bc606782f8c
Arg [37] : 0000000000000000000000008e0b7e6062272b5ef4524250bfff8e5bd3497757
Arg [38] : 0000000000000000000000003886ba987236181d98f2401c507fb8bea7871df2
Arg [39] : 000000000000000000000000d6aa3d25116d8da79ea0246c4826eb951872e02e
Arg [40] : 000000000000000000000000986b5e1e1755e3c2440e960477f25201b0a8bbd4
Arg [41] : 000000000000000000000000ee9f2375b4bdf6387aa8265dd4fb8f16512a1d46
Arg [42] : 000000000000000000000000deb288f737066589598e9214e782fa5a8ed689e8
Arg [43] : 0000000000000000000000007c5d4f8345e66f68099581db340cd65b078c41f4
Arg [44] : 0000000000000000000000002da4983a622a8498bb1a21fae9d8f6c664939962
Arg [45] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419


Deployed Bytecode Sourcemap

3679:3934:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5130:117;;;;;;;;;;;;;;;;-1:-1:-1;5130:117:0;-1:-1:-1;;;;;5130:117:0;;:::i;:::-;;7505:105;;;:::i;:::-;;;;-1:-1:-1;;;;;7505:105:0;;;;;;;;;;;;;;2517:138;;;:::i;1915:73::-;;;:::i;7265:122::-;;;;;;;;;;;;;;;;-1:-1:-1;7265:122:0;-1:-1:-1;;;;;7265:122:0;;:::i;6815:283::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6815:283:0;;-1:-1:-1;6815:283:0;-1:-1:-1;6815:283:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4817:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4817:159:0;;-1:-1:-1;4817:159:0;-1:-1:-1;4817:159:0;:::i;4031:29::-;;;:::i;6175:515::-;;;;;;;;;;;;;;;;-1:-1:-1;6175:515:0;-1:-1:-1;;;;;6175:515:0;;:::i;:::-;;;;;;;;;;;;;;;;2800:230;;;;;;;;;;;;;;;;-1:-1:-1;2800:230:0;-1:-1:-1;;;;;2800:230:0;;:::i;5130:117::-;2119:12;:10;:12::i;:::-;2109:6;;-1:-1:-1;;;;;2109:6:0;;;:22;;;2101:67;;;;;-1:-1:-1;;;2101:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2101:67:0;;;;;;;;;;;;;;;5207:34:::1;5226:14;5207:18;:34::i;:::-;5130:117:::0;:::o;7505:105::-;7588:15;;-1:-1:-1;;;;;7588:15:0;7505:105;:::o;2517:138::-;2119:12;:10;:12::i;:::-;2109:6;;-1:-1:-1;;;;;2109:6:0;;;:22;;;2101:67;;;;;-1:-1:-1;;;2101:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2101:67:0;;;;;;;;;;;;;;;2620:1:::1;2604:6:::0;;2583:40:::1;::::0;-1:-1:-1;;;;;2604:6:0;;::::1;::::0;2583:40:::1;::::0;2620:1;;2583:40:::1;2647:1;2630:19:::0;;-1:-1:-1;;;;;;2630:19:0::1;::::0;;2517:138::o;1915:73::-;1953:7;1976:6;-1:-1:-1;;;;;1976:6:0;1915:73;:::o;7265:122::-;-1:-1:-1;;;;;7360:20:0;;;7329:7;7360:20;;;:13;:20;;;;;;;7265:122;;;;:::o;6815:283::-;6890:16;;6955:6;6941:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6941:28:0;;6915:54;;6981:9;6976:97;6996:17;;;6976:97;;;7041:24;7055:6;;7062:1;7055:9;;;;;;;;;;;;;-1:-1:-1;;;;;7055:9:0;7041:13;:24::i;:::-;7029:6;7036:1;7029:9;;;;;;;;;;;;;;;;;:36;7015:3;;6976:97;;;-1:-1:-1;7086:6:0;6815:283;-1:-1:-1;;;6815:283:0:o;4817:159::-;2119:12;:10;:12::i;:::-;2109:6;;-1:-1:-1;;;;;2109:6:0;;;:22;;;2101:67;;;;;-1:-1:-1;;;2101:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2101:67:0;;;;;;;;;;;;;;;4936:34:::1;4954:6;;4936:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;;4936:34:0::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;-1:-1:-1;4962:7:0;;-1:-1:-1;4962:7:0;;;;4936:34;::::1;::::0;4962:7;;4936:34;4962:7;4936:34;::::1;;::::0;::::1;::::0;;;;-1:-1:-1;4936:17:0::1;::::0;-1:-1:-1;;;4936:34:0:i:1;:::-;4817:159:::0;;;;:::o;4031:29::-;;;:::o;6175:515::-;-1:-1:-1;;;;;6289:20:0;;;6243:7;6289:20;;;:13;:20;;;;;;6243:7;;6289:20;;;;6331:4;6322:13;;;;6318:367;;;6353:7;6346:14;;;;;6318:367;-1:-1:-1;;;;;6378:29:0;;6374:311;;6425:15;;:36;;;-1:-1:-1;;;6425:36:0;;-1:-1:-1;;;;;6425:36:0;;;;;;;;;:15;;;;;:29;;:36;;;;;;;;;;;;;;:15;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6425:36:0;;-1:-1:-1;6418:43:0;;-1:-1:-1;6418:43:0;6374:311;6484:12;6520:6;-1:-1:-1;;;;;6499:41:0;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6499:43:0;;-1:-1:-1;6563:1:0;6555:9;;6551:127;;;6592:5;-1:-1:-1;6577:21:0;;-1:-1:-1;6577:21:0;6551:127;6632:15;;:36;;;-1:-1:-1;;;6632:36:0;;-1:-1:-1;;;;;6632:36:0;;;;;;;;;:15;;;;;:29;;:36;;;;;;;;;;;;;;:15;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6632:36:0;;-1:-1:-1;6625:43:0;;-1:-1:-1;;6625:43:0;2800:230;2119:12;:10;:12::i;:::-;2109:6;;-1:-1:-1;;;;;2109:6:0;;;:22;;;2101:67;;;;;-1:-1:-1;;;2101:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2101:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2885:22:0;::::1;2877:73;;;;-1:-1:-1::0;;;2877:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2983:6;::::0;;2962:38:::1;::::0;-1:-1:-1;;;;;2962:38:0;;::::1;::::0;2983:6;::::1;::::0;2962:38:::1;::::0;::::1;3007:6;:17:::0;;-1:-1:-1;;;;;;3007:17:0::1;-1:-1:-1::0;;;;;3007:17:0;;;::::1;::::0;;;::::1;::::0;;2800:230::o;606:100::-;690:10;606:100;:::o;5910:175::-;5978:15;:52;;-1:-1:-1;;;;;;5978:52:0;-1:-1:-1;;;;;5978:52:0;;;;;;;;6042:37;;;;-1:-1:-1;;6042:37:0;5910:175;:::o;5431:351::-;5550:7;:14;5533:6;:13;:31;5525:70;;;;;-1:-1:-1;;;5525:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5607:9;5602:175;5626:6;:13;5622:1;:17;5602:175;;;5703:7;5711:1;5703:10;;;;;;;;;;;;;;5655:13;:24;5669:6;5676:1;5669:9;;;;;;;;;;;;;;-1:-1:-1;;;;;5655:24:0;-1:-1:-1;;;;;5655:24:0;;;;;;;;;;;;;:59;;;;;-1:-1:-1;;;;;5655:59:0;;;;;-1:-1:-1;;;;;5655:59:0;;;;;;5758:7;5766:1;5758:10;;;;;;;;;;;;;;-1:-1:-1;;;;;5728:41:0;5747:6;5754:1;5747:9;;;;;;;;;;;;;;-1:-1:-1;;;;;5728:41:0;;;;;;;;;;;5641:3;;5602:175;;;;5431:351;;:::o

Swarm Source

ipfs://e361b4072d4d8f7c5538b98948d76f20dcfa76c2e5b381ca3c114464bc2d71e8

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.