ETH Price: $3,903.10 (+1.28%)

Contract

0xadF849079d415157CbBdb21BB7542b47077734A8
 

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

Please try again later

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FujiOracle

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-09-15
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
 * @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 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 view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Claimable is Context {
  address private _owner;
  address public pendingOwner;

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

  constructor() {
    address msgSender = _msgSender();
    _owner = msgSender;
    emit OwnershipTransferred(address(0), msgSender);
  }

  function owner() public view virtual returns (address) {
    return _owner;
  }

  modifier onlyOwner() {
    require(_msgSender() == owner(), "Ownable: caller is not the owner");
    _;
  }

  modifier onlyPendingOwner() {
    require(_msgSender() == pendingOwner);
    _;
  }

  function renounceOwnership() public virtual onlyOwner {
    emit OwnershipTransferred(owner(), address(0));
    _owner = address(0);
  }

  function transferOwnership(address newOwner) public virtual onlyOwner {
    require(pendingOwner == address(0));
    pendingOwner = newOwner;
    emit NewPendingOwner(newOwner);
  }

  function cancelTransferOwnership() public onlyOwner {
    require(pendingOwner != address(0));
    delete pendingOwner;
    emit NewPendingOwner(address(0));
  }

  function claimOwnership() public onlyPendingOwner {
    emit OwnershipTransferred(owner(), pendingOwner);
    _owner = pendingOwner;
    delete pendingOwner;
  }
}

interface AggregatorV3Interface {
  function decimals() external view returns (uint8);

  function description() external view returns (string memory);

  function version() external view returns (uint256);

  // getRoundData and latestRoundData should both raise "No data present"
  // if they do not have data to report, instead of returning unset values
  // which could be misinterpreted as actual reported values.
  function getRoundData(uint80 _roundId)
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );

  function latestRoundData()
    external
    view
    returns (
      uint80 roundId,
      int256 answer,
      uint256 startedAt,
      uint256 updatedAt,
      uint80 answeredInRound
    );
}

interface IFujiOracle {
  function getPriceOf(
    address _collateralAsset,
    address _borrowAsset,
    uint8 _decimals
  ) external view returns (uint256);
}

/**
 * @title Errors library
 * @author Fuji
 * @notice Defines the error messages emitted by the different contracts of the Aave protocol
 * @dev Error messages prefix glossary:
 *  - VL = Validation Logic 100 series
 *  - MATH = Math libraries 200 series
 *  - RF = Refinancing 300 series
 *  - VLT = vault 400 series
 *  - SP = Special 900 series
 */
library Errors {
  //Errors
  string public constant VL_INDEX_OVERFLOW = "100"; // index overflows uint128
  string public constant VL_INVALID_MINT_AMOUNT = "101"; //invalid amount to mint
  string public constant VL_INVALID_BURN_AMOUNT = "102"; //invalid amount to burn
  string public constant VL_AMOUNT_ERROR = "103"; //Input value >0, and for ETH msg.value and amount shall match
  string public constant VL_INVALID_WITHDRAW_AMOUNT = "104"; //Withdraw amount exceeds provided collateral, or falls undercollaterized
  string public constant VL_INVALID_BORROW_AMOUNT = "105"; //Borrow amount does not meet collaterization
  string public constant VL_NO_DEBT_TO_PAYBACK = "106"; //Msg sender has no debt amount to be payback
  string public constant VL_MISSING_ERC20_ALLOWANCE = "107"; //Msg sender has not approved ERC20 full amount to transfer
  string public constant VL_USER_NOT_LIQUIDATABLE = "108"; //User debt position is not liquidatable
  string public constant VL_DEBT_LESS_THAN_AMOUNT = "109"; //User debt is less than amount to partial close
  string public constant VL_PROVIDER_ALREADY_ADDED = "110"; // Provider is already added in Provider Array
  string public constant VL_NOT_AUTHORIZED = "111"; //Not authorized
  string public constant VL_INVALID_COLLATERAL = "112"; //There is no Collateral, or Collateral is not in active in vault
  string public constant VL_NO_ERC20_BALANCE = "113"; //User does not have ERC20 balance
  string public constant VL_INPUT_ERROR = "114"; //Check inputs. For ERC1155 batch functions, array sizes should match.
  string public constant VL_ASSET_EXISTS = "115"; //Asset intended to be added already exists in FujiERC1155
  string public constant VL_ZERO_ADDR_1155 = "116"; //ERC1155: balance/transfer for zero address
  string public constant VL_NOT_A_CONTRACT = "117"; //Address is not a contract.
  string public constant VL_INVALID_ASSETID_1155 = "118"; //ERC1155 Asset ID is invalid.
  string public constant VL_NO_ERC1155_BALANCE = "119"; //ERC1155: insufficient balance for transfer.
  string public constant VL_MISSING_ERC1155_APPROVAL = "120"; //ERC1155: transfer caller is not owner nor approved.
  string public constant VL_RECEIVER_REJECT_1155 = "121"; //ERC1155Receiver rejected tokens
  string public constant VL_RECEIVER_CONTRACT_NON_1155 = "122"; //ERC1155: transfer to non ERC1155Receiver implementer
  string public constant VL_OPTIMIZER_FEE_SMALL = "123"; //Fuji OptimizerFee has to be > 1 RAY (1e27)
  string public constant VL_UNDERCOLLATERIZED_ERROR = "124"; // Flashloan-Flashclose cannot be used when User's collateral is worth less than intended debt position to close.
  string public constant VL_MINIMUM_PAYBACK_ERROR = "125"; // Minimum Amount payback should be at least Fuji Optimizerfee accrued interest.
  string public constant VL_HARVESTING_FAILED = "126"; // Harvesting Function failed, check provided _farmProtocolNum or no claimable balance.
  string public constant VL_FLASHLOAN_FAILED = "127"; // Flashloan failed
  string public constant VL_ERC1155_NOT_TRANSFERABLE = "128"; // ERC1155: Not Transferable
  string public constant VL_SWAP_SLIPPAGE_LIMIT_EXCEED = "129"; // ERC1155: Not Transferable
  string public constant VL_ZERO_ADDR = "130"; // Zero Address

  string public constant MATH_DIVISION_BY_ZERO = "201";
  string public constant MATH_ADDITION_OVERFLOW = "202";
  string public constant MATH_MULTIPLICATION_OVERFLOW = "203";

  string public constant RF_INVALID_RATIO_VALUES = "301"; // Ratio Value provided is invalid, _ratioA/_ratioB <= 1, and > 0, or activeProvider borrowBalance = 0

  string public constant VLT_CALLER_MUST_BE_VAULT = "401"; // The caller of this function must be a vault

  string public constant ORACLE_INVALID_LENGTH = "501"; // The assets length and price feeds length doesn't match
  string public constant ORACLE_NONE_PRICE_FEED = "502"; // The price feed is not found
}


contract FujiOracle is IFujiOracle, Claimable {
  // mapping from asset address to its price feed oracle in USD - decimals: 8
  mapping(address => address) public usdPriceFeeds;

  constructor(address[] memory _assets, address[] memory _priceFeeds) Claimable() {
    require(_assets.length == _priceFeeds.length, Errors.ORACLE_INVALID_LENGTH);
    for (uint256 i = 0; i < _assets.length; i++) {
      usdPriceFeeds[_assets[i]] = _priceFeeds[i];
    }
  }

  function setPriceFeed(address _asset, address _priceFeed) public onlyOwner {
    usdPriceFeeds[_asset] = _priceFeed;
  }

  /// @dev Calculates the exchange rate n given decimals (_borrowAsset / _collateralAsset Exchange Rate)
  /// @param _collateralAsset the collateral asset, zero-address for USD
  /// @param _borrowAsset the borrow asset, zero-address for USD
  /// @param _decimals the decimals of the price output
  /// @return price The exchange rate of the given assets pair
  function getPriceOf(
    address _collateralAsset,
    address _borrowAsset,
    uint8 _decimals
  ) external view override returns (uint256 price) {
    price = 10**uint256(_decimals);

    if (_borrowAsset != address(0)) {
      price = price * _getUSDPrice(_borrowAsset);
    } else {
      price = price * (10**8);
    }

    if (_collateralAsset != address(0)) {
      price = price / _getUSDPrice(_collateralAsset);
    } else {
      price = price / (10**8);
    }
  }

  /// @dev Calculates the USD price of asset
  /// @param _asset the asset address
  /// @return price USD price of the give asset
  function _getUSDPrice(address _asset) internal view returns (uint256 price) {
    require(usdPriceFeeds[_asset] != address(0), Errors.ORACLE_NONE_PRICE_FEED);

    (, int256 latestPrice, , , ) = AggregatorV3Interface(usdPriceFeeds[_asset]).latestRoundData();

    price = uint256(latestPrice);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"_assets","type":"address[]"},{"internalType":"address[]","name":"_priceFeeds","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"NewPendingOwner","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"},{"inputs":[],"name":"cancelTransferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_collateralAsset","type":"address"},{"internalType":"address","name":"_borrowAsset","type":"address"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"name":"getPriceOf","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"address","name":"_priceFeed","type":"address"}],"name":"setPriceFeed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usdPriceFeeds","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162000ccc38038062000ccc833981016040819052620000349162000267565b6000620000406200019c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35080518251146040518060400160405280600381526020016235303160e81b81525090620000d55760405162461bcd60e51b8152600401620000cc9190620002ce565b60405180910390fd5b5060005b825181101562000193578181815181106200010457634e487b7160e01b600052603260045260246000fd5b6020026020010151600260008584815181106200013157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080806200018a9062000324565b915050620000d9565b50505062000362565b3390565b80516001600160a01b0381168114620001b857600080fd5b919050565b600082601f830112620001ce578081fd5b815160206001600160401b0380831115620001ed57620001ed6200034c565b818302604051838282010181811084821117156200020f576200020f6200034c565b604052848152838101925086840182880185018910156200022e578687fd5b8692505b858310156200025b576200024681620001a0565b84529284019260019290920191840162000232565b50979650505050505050565b600080604083850312156200027a578182fd5b82516001600160401b038082111562000291578384fd5b6200029f86838701620001bd565b93506020850151915080821115620002b5578283fd5b50620002c485828601620001bd565b9150509250929050565b6000602080835283518082850152825b81811015620002fc57858101830151858201604001528201620002de565b818111156200030e5783604083870101525b50601f01601f1916929092016040019392505050565b60006000198214156200034557634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b61095a80620003726000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80638da5cb5b11610076578063e30c39781161005b578063e30c397814610113578063f0e0626f1461011b578063f2fde38b1461012e576100a3565b80638da5cb5b146100f657806392fede001461010b576100a3565b80634e71e0c8146100a8578063715018a6146100b2578063721adea7146100ba57806376e11286146100e3575b600080fd5b6100b0610141565b005b6100b06101d8565b6100cd6100c836600461067c565b610271565b6040516100da91906107b2565b60405180910390f35b6100b06100f136600461064a565b6102fe565b6100fe61036b565b6040516100da9190610716565b6100b061037a565b6100fe61040b565b6100fe610129366004610630565b61041a565b6100b061013c366004610630565b610435565b6001546001600160a01b03166101556104d4565b6001600160a01b03161461016857600080fd5b6001546001600160a01b031661017c61036b565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6101e061036b565b6001600160a01b03166101f16104d4565b6001600160a01b0316146102205760405162461bcd60e51b81526004016102179061077d565b60405180910390fd5b600061022a61036b565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600080546001600160a01b0319169055565b600061028160ff8316600a610821565b90506001600160a01b038316156102ac5761029b836104d8565b6102a590826108ef565b90506102bd565b6102ba816305f5e1006108ef565b90505b6001600160a01b038416156102e6576102d5846104d8565b6102df90826107bb565b90506102f7565b6102f46305f5e100826107bb565b90505b9392505050565b61030661036b565b6001600160a01b03166103176104d4565b6001600160a01b03161461033d5760405162461bcd60e51b81526004016102179061077d565b6001600160a01b03918216600090815260026020526040902080546001600160a01b03191691909216179055565b6000546001600160a01b031690565b61038261036b565b6001600160a01b03166103936104d4565b6001600160a01b0316146103b95760405162461bcd60e51b81526004016102179061077d565b6001546001600160a01b03166103ce57600080fd5b600180546001600160a01b03191690556040516000907f69737d41162474a7ca514809b07d7becaecf72eae8c23bceb071f0e09af93ffc908290a2565b6001546001600160a01b031681565b6002602052600090815260409020546001600160a01b031681565b61043d61036b565b6001600160a01b031661044e6104d4565b6001600160a01b0316146104745760405162461bcd60e51b81526004016102179061077d565b6001546001600160a01b03161561048a57600080fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f69737d41162474a7ca514809b07d7becaecf72eae8c23bceb071f0e09af93ffc90600090a250565b3390565b6001600160a01b038181166000908152600260209081526040808320548151808301909252600382527f3530320000000000000000000000000000000000000000000000000000000000928201929092529192166105495760405162461bcd60e51b8152600401610217919061072a565b506001600160a01b038083166000908152600260205260408082205481517ffeaf968c00000000000000000000000000000000000000000000000000000000815291519293169163feaf968c9160048082019260a092909190829003018186803b1580156105b657600080fd5b505afa1580156105ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ee91906106c7565b50919695505050505050565b80356001600160a01b038116811461061157600080fd5b919050565b805169ffffffffffffffffffff8116811461061157600080fd5b600060208284031215610641578081fd5b6102f7826105fa565b6000806040838503121561065c578081fd5b610665836105fa565b9150610673602084016105fa565b90509250929050565b600080600060608486031215610690578081fd5b610699846105fa565b92506106a7602085016105fa565b9150604084013560ff811681146106bc578182fd5b809150509250925092565b600080600080600060a086880312156106de578081fd5b6106e786610616565b945060208601519350604086015192506060860151915061070a60808701610616565b90509295509295909350565b6001600160a01b0391909116815260200190565b6000602080835283518082850152825b818110156107565785810183015185820160400152820161073a565b818111156107675783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b6000826107d657634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116107ed5750610818565b8187048211156107ff576107ff61090e565b8086161561080c57918102915b9490941c9380026107de565b94509492505050565b60006102f7600019848460008261083a575060016102f7565b81610847575060006102f7565b816001811461085d576002811461086757610894565b60019150506102f7565b60ff8411156108785761087861090e565b6001841b91508482111561088e5761088e61090e565b506102f7565b5060208310610133831016604e8410600b84101617156108c7575081810a838111156108c2576108c261090e565b6102f7565b6108d484848460016107db565b8086048211156108e6576108e661090e565b02949350505050565b60008160001904831182151516156109095761090961090e565b500290565b634e487b7160e01b600052601160045260246000fdfea264697066735822122043437552ec1b9d7a2baf3b2f8c5938d496e71e3b7ccf0185d69f1668249250d664736f6c634300080000330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000050000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000aed0c38402a5d19df6e4c03f4e2dced6e29c1ee90000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f60000000000000000000000003e7d1eab13ad0104d2750b8863b489d65364e32d0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b841900000000000000000000000031e0a88fecb6ec0a411dbe0e9e76391498296ee9

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a35760003560e01c80638da5cb5b11610076578063e30c39781161005b578063e30c397814610113578063f0e0626f1461011b578063f2fde38b1461012e576100a3565b80638da5cb5b146100f657806392fede001461010b576100a3565b80634e71e0c8146100a8578063715018a6146100b2578063721adea7146100ba57806376e11286146100e3575b600080fd5b6100b0610141565b005b6100b06101d8565b6100cd6100c836600461067c565b610271565b6040516100da91906107b2565b60405180910390f35b6100b06100f136600461064a565b6102fe565b6100fe61036b565b6040516100da9190610716565b6100b061037a565b6100fe61040b565b6100fe610129366004610630565b61041a565b6100b061013c366004610630565b610435565b6001546001600160a01b03166101556104d4565b6001600160a01b03161461016857600080fd5b6001546001600160a01b031661017c61036b565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6101e061036b565b6001600160a01b03166101f16104d4565b6001600160a01b0316146102205760405162461bcd60e51b81526004016102179061077d565b60405180910390fd5b600061022a61036b565b6001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600080546001600160a01b0319169055565b600061028160ff8316600a610821565b90506001600160a01b038316156102ac5761029b836104d8565b6102a590826108ef565b90506102bd565b6102ba816305f5e1006108ef565b90505b6001600160a01b038416156102e6576102d5846104d8565b6102df90826107bb565b90506102f7565b6102f46305f5e100826107bb565b90505b9392505050565b61030661036b565b6001600160a01b03166103176104d4565b6001600160a01b03161461033d5760405162461bcd60e51b81526004016102179061077d565b6001600160a01b03918216600090815260026020526040902080546001600160a01b03191691909216179055565b6000546001600160a01b031690565b61038261036b565b6001600160a01b03166103936104d4565b6001600160a01b0316146103b95760405162461bcd60e51b81526004016102179061077d565b6001546001600160a01b03166103ce57600080fd5b600180546001600160a01b03191690556040516000907f69737d41162474a7ca514809b07d7becaecf72eae8c23bceb071f0e09af93ffc908290a2565b6001546001600160a01b031681565b6002602052600090815260409020546001600160a01b031681565b61043d61036b565b6001600160a01b031661044e6104d4565b6001600160a01b0316146104745760405162461bcd60e51b81526004016102179061077d565b6001546001600160a01b03161561048a57600080fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f69737d41162474a7ca514809b07d7becaecf72eae8c23bceb071f0e09af93ffc90600090a250565b3390565b6001600160a01b038181166000908152600260209081526040808320548151808301909252600382527f3530320000000000000000000000000000000000000000000000000000000000928201929092529192166105495760405162461bcd60e51b8152600401610217919061072a565b506001600160a01b038083166000908152600260205260408082205481517ffeaf968c00000000000000000000000000000000000000000000000000000000815291519293169163feaf968c9160048082019260a092909190829003018186803b1580156105b657600080fd5b505afa1580156105ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ee91906106c7565b50919695505050505050565b80356001600160a01b038116811461061157600080fd5b919050565b805169ffffffffffffffffffff8116811461061157600080fd5b600060208284031215610641578081fd5b6102f7826105fa565b6000806040838503121561065c578081fd5b610665836105fa565b9150610673602084016105fa565b90509250929050565b600080600060608486031215610690578081fd5b610699846105fa565b92506106a7602085016105fa565b9150604084013560ff811681146106bc578182fd5b809150509250925092565b600080600080600060a086880312156106de578081fd5b6106e786610616565b945060208601519350604086015192506060860151915061070a60808701610616565b90509295509295909350565b6001600160a01b0391909116815260200190565b6000602080835283518082850152825b818110156107565785810183015185820160400152820161073a565b818111156107675783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b90815260200190565b6000826107d657634e487b7160e01b81526012600452602481fd5b500490565b80825b60018086116107ed5750610818565b8187048211156107ff576107ff61090e565b8086161561080c57918102915b9490941c9380026107de565b94509492505050565b60006102f7600019848460008261083a575060016102f7565b81610847575060006102f7565b816001811461085d576002811461086757610894565b60019150506102f7565b60ff8411156108785761087861090e565b6001841b91508482111561088e5761088e61090e565b506102f7565b5060208310610133831016604e8410600b84101617156108c7575081810a838111156108c2576108c261090e565b6102f7565b6108d484848460016107db565b8086048211156108e6576108e661090e565b02949350505050565b60008160001904831182151516156109095761090961090e565b500290565b634e487b7160e01b600052601160045260246000fdfea264697066735822122043437552ec1b9d7a2baf3b2f8c5938d496e71e3b7ccf0185d69f1668249250d664736f6c63430008000033

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

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000050000000000000000000000006b175474e89094c44da98b954eedeac495271d0f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca0000000000000000000000000000000000000000000000000000000000000005000000000000000000000000aed0c38402a5d19df6e4c03f4e2dced6e29c1ee90000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f60000000000000000000000003e7d1eab13ad0104d2750b8863b489d65364e32d0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b841900000000000000000000000031e0a88fecb6ec0a411dbe0e9e76391498296ee9

-----Decoded View---------------
Arg [0] : _assets (address[]): 0x6B175474E89094C44Da98b954EedeAC495271d0F,0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48,0xdAC17F958D2ee523a2206206994597C13D831ec7,0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE,0x956F47F50A910163D8BF957Cf5846D573E7f87CA
Arg [1] : _priceFeeds (address[]): 0xAed0c38402a5d19df6E4c03F4E2DceD6e29c1ee9,0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6,0x3E7d1eAB13ad0104d2750B8863b489D65364e32D,0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419,0x31e0a88fecB6eC0a411DBe0e9E76391498296EE9

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [3] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [4] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [5] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7
Arg [6] : 000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
Arg [7] : 000000000000000000000000956f47f50a910163d8bf957cf5846d573e7f87ca
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [9] : 000000000000000000000000aed0c38402a5d19df6e4c03f4e2dced6e29c1ee9
Arg [10] : 0000000000000000000000008fffffd4afb6115b954bd326cbe7b4ba576818f6
Arg [11] : 0000000000000000000000003e7d1eab13ad0104d2750b8863b489d65364e32d
Arg [12] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [13] : 00000000000000000000000031e0a88fecb6ec0a411dbe0e9e76391498296ee9


Deployed Bytecode Sourcemap

7517:1903:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005:165;;;:::i;:::-;;1498:139;;;:::i;8481:493::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7986:122;;;;;;:::i;:::-;;:::i;1203:81::-;;;:::i;:::-;;;;;;;:::i;1834:165::-;;;:::i;885:27::-;;;:::i;7647:48::-;;;;;;:::i;:::-;;:::i;1643:185::-;;;;;;:::i;:::-;;:::i;2005:165::-;1465:12;;-1:-1:-1;;;;;1465:12:0;1449;:10;:12::i;:::-;-1:-1:-1;;;;;1449:28:0;;1441:37;;;;;;2097:12:::1;::::0;-1:-1:-1;;;;;2097:12:0::1;2088:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;2067:43:0::1;;;;;;;;;;;2126:12;::::0;;::::1;2117:21:::0;;-1:-1:-1;;;;;;2117:21:0;;::::1;-1:-1:-1::0;;;;;2126:12:0;::::1;2117:21;::::0;;;2145:19:::1;::::0;;2005:165::o;1498:139::-;1342:7;:5;:7::i;:::-;-1:-1:-1;;;;;1326:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;1326:23:0;;1318:68;;;;-1:-1:-1;;;1318:68:0;;;;;;;:::i;:::-;;;;;;;;;1602:1:::1;1585:7;:5;:7::i;:::-;-1:-1:-1::0;;;;;1564:41:0::1;;;;;;;;;;;1629:1;1612:19:::0;;-1:-1:-1;;;;;;1612:19:0::1;::::0;;1498:139::o;8481:493::-;8618:13;8648:22;8652:18;;;8648:2;:22;:::i;:::-;8640:30;-1:-1:-1;;;;;;8683:26:0;;;8679:137;;8736:26;8749:12;8736;:26::i;:::-;8728:34;;:5;:34;:::i;:::-;8720:42;;8679:137;;;8793:15;:5;8802;8793:15;:::i;:::-;8785:23;;8679:137;-1:-1:-1;;;;;8828:30:0;;;8824:145;;8885:30;8898:16;8885:12;:30::i;:::-;8877:38;;:5;:38;:::i;:::-;8869:46;;8824:145;;;8946:15;8955:5;8946;:15;:::i;:::-;8938:23;;8824:145;8481:493;;;;;:::o;7986:122::-;1342:7;:5;:7::i;:::-;-1:-1:-1;;;;;1326:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;1326:23:0;;1318:68;;;;-1:-1:-1;;;1318:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8068:21:0;;::::1;;::::0;;;:13:::1;:21;::::0;;;;:34;;-1:-1:-1;;;;;;8068:34:0::1;::::0;;;::::1;;::::0;;7986:122::o;1203:81::-;1249:7;1272:6;-1:-1:-1;;;;;1272:6:0;1203:81;:::o;1834:165::-;1342:7;:5;:7::i;:::-;-1:-1:-1;;;;;1326:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;1326:23:0;;1318:68;;;;-1:-1:-1;;;1318:68:0;;;;;;;:::i;:::-;1901:12:::1;::::0;-1:-1:-1;;;;;1901:12:0::1;1893:35;;;::::0;::::1;;1942:12;1935:19:::0;;-1:-1:-1;;;;;;1935:19:0::1;::::0;;1966:27:::1;::::0;1942:12:::1;::::0;1966:27:::1;::::0;1942:12;;1966:27:::1;1834:165::o:0;885:27::-;;;-1:-1:-1;;;;;885:27:0;;:::o;7647:48::-;;;;;;;;;;;;-1:-1:-1;;;;;7647:48:0;;:::o;1643:185::-;1342:7;:5;:7::i;:::-;-1:-1:-1;;;;;1326:23:0;:12;:10;:12::i;:::-;-1:-1:-1;;;;;1326:23:0;;1318:68;;;;-1:-1:-1;;;1318:68:0;;;;;;;:::i;:::-;1728:12:::1;::::0;-1:-1:-1;;;;;1728:12:0::1;:26:::0;1720:35:::1;;;::::0;::::1;;1762:12;:23:::0;;-1:-1:-1;;;;;;1762:23:0::1;-1:-1:-1::0;;;;;1762:23:0;::::1;::::0;;::::1;::::0;;;1797:25:::1;::::0;::::1;::::0;-1:-1:-1;;1797:25:0::1;1643:185:::0;:::o;600:98::-;680:10;600:98;:::o;9114:303::-;-1:-1:-1;;;;;9205:21:0;;;9175:13;9205:21;;;:13;:21;;;;;;;;;9242:29;;;;;;;;;;;;;;;;;;;9175:13;;9205:21;9197:75;;;;-1:-1:-1;;;9197:75:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;9334:21:0;;;9284:18;9334:21;;;:13;:21;;;;;;;9312:62;;;;;;;9284:18;;9334:21;;9312:60;;:62;;;;;;;;;;;;;;;9334:21;9312:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;9281:93:0;;9114:303;-1:-1:-1;;;;;;9114:303:0:o;14:198:1:-;84:20;;-1:-1:-1;;;;;133:54:1;;123:65;;113:2;;202:1;199;192:12;113:2;65:147;;;:::o;217:181::-;297:13;;350:22;339:34;;329:45;;319:2;;388:1;385;378:12;403:198;;515:2;503:9;494:7;490:23;486:32;483:2;;;536:6;528;521:22;483:2;564:31;585:9;564:31;:::i;606:274::-;;;735:2;723:9;714:7;710:23;706:32;703:2;;;756:6;748;741:22;703:2;784:31;805:9;784:31;:::i;:::-;774:41;;834:40;870:2;859:9;855:18;834:40;:::i;:::-;824:50;;693:187;;;;;:::o;885:441::-;;;;1029:2;1017:9;1008:7;1004:23;1000:32;997:2;;;1050:6;1042;1035:22;997:2;1078:31;1099:9;1078:31;:::i;:::-;1068:41;;1128:40;1164:2;1153:9;1149:18;1128:40;:::i;:::-;1118:50;;1218:2;1207:9;1203:18;1190:32;1262:4;1255:5;1251:16;1244:5;1241:27;1231:2;;1287:6;1279;1272:22;1231:2;1315:5;1305:15;;;987:339;;;;;:::o;1331:487::-;;;;;;1519:3;1507:9;1498:7;1494:23;1490:33;1487:2;;;1541:6;1533;1526:22;1487:2;1569:41;1600:9;1569:41;:::i;:::-;1559:51;;1650:2;1639:9;1635:18;1629:25;1619:35;;1694:2;1683:9;1679:18;1673:25;1663:35;;1738:2;1727:9;1723:18;1717:25;1707:35;;1761:51;1807:3;1796:9;1792:19;1761:51;:::i;:::-;1751:61;;1477:341;;;;;;;;:::o;1823:226::-;-1:-1:-1;;;;;1987:55:1;;;;1969:74;;1957:2;1942:18;;1924:125::o;2054:603::-;;2195:2;2224;2213:9;2206:21;2256:6;2250:13;2299:6;2294:2;2283:9;2279:18;2272:34;2324:4;2337:140;2351:6;2348:1;2345:13;2337:140;;;2446:14;;;2442:23;;2436:30;2412:17;;;2431:2;2408:26;2401:66;2366:10;;2337:140;;;2495:6;2492:1;2489:13;2486:2;;;2565:4;2560:2;2551:6;2540:9;2536:22;2532:31;2525:45;2486:2;-1:-1:-1;2641:2:1;2620:15;-1:-1:-1;;2616:29:1;2601:45;;;;2648:2;2597:54;;2175:482;-1:-1:-1;;;2175:482:1:o;2662:356::-;2864:2;2846:21;;;2883:18;;;2876:30;2942:34;2937:2;2922:18;;2915:62;3009:2;2994:18;;2836:182::o;3023:177::-;3169:25;;;3157:2;3142:18;;3124:76::o;3205:274::-;;3271:1;3261:2;;-1:-1:-1;;;3303:1:1;3296:88;3407:4;3404:1;3397:15;3435:4;3432:1;3425:15;3261:2;-1:-1:-1;3464:9:1;;3251:228::o;3484:453::-;3580:6;3603:5;3617:314;3666:1;3703:2;3693:8;3690:16;3680:2;;3710:5;;;3680:2;3751:4;3746:3;3742:14;3736:4;3733:24;3730:2;;;3760:18;;:::i;:::-;3810:2;3800:8;3796:17;3793:2;;;3825:16;;;;3793:2;3904:17;;;;;3864:15;;3617:314;;;3561:376;;;;;;;:::o;3942:139::-;;4031:44;-1:-1:-1;;4058:8:1;4052:4;4086:922;4170:8;4160:2;;-1:-1:-1;4211:1:1;4225:5;;4160:2;4259:4;4249:2;;-1:-1:-1;4296:1:1;4310:5;;4249:2;4341:4;4359:1;4354:59;;;;4427:1;4422:183;;;;4334:271;;4354:59;4384:1;4375:10;;4398:5;;;4422:183;4459:3;4449:8;4446:17;4443:2;;;4466:18;;:::i;:::-;4522:1;4512:8;4508:16;4499:25;;4550:3;4543:5;4540:14;4537:2;;;4557:18;;:::i;:::-;4590:5;;;4334:271;;4689:2;4679:8;4676:16;4670:3;4664:4;4661:13;4657:36;4651:2;4641:8;4638:16;4633:2;4627:4;4624:12;4620:35;4617:77;4614:2;;;-1:-1:-1;4726:19:1;;;4761:14;;;4758:2;;;4778:18;;:::i;:::-;4811:5;;4614:2;4858:42;4896:3;4886:8;4880:4;4877:1;4858:42;:::i;:::-;4933:6;4928:3;4924:16;4915:7;4912:29;4909:2;;;4944:18;;:::i;:::-;4982:20;;4150:858;-1:-1:-1;;;;4150:858:1:o;5013:168::-;;5119:1;5115;5111:6;5107:14;5104:1;5101:21;5096:1;5089:9;5082:17;5078:45;5075:2;;;5126:18;;:::i;:::-;-1:-1:-1;5166:9:1;;5065:116::o;5186:184::-;-1:-1:-1;;;5235:1:1;5228:88;5335:4;5332:1;5325:15;5359:4;5356:1;5349:15

Swarm Source

ipfs://43437552ec1b9d7a2baf3b2f8c5938d496e71e3b7ccf0185d69f1668249250d6

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

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.