Contract 0x664255dEF6D6121Ee916ED31a073079D636b214C 1

Contract Overview

Balance:
0 Ether
Txn Hash
Method
Block
From
To
Value
0x3064f2cc9c0bf938eb28359ea8fad9ab95724f6a57ffd490719456df695a1ae20x60a0604089654972021-07-19 18:52:48352 days 1 hr ago0x8feebfa4ac7af314d90a0c17c3f91c800cfde44b IN  Create: AaveOracle0 Ether0.001107221
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AaveOracle

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license
/**
 *Submitted for verification at Etherscan.io on 2021-07-19
*/

/**
 *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 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"}]

60a06040523480156200001157600080fd5b50604051620016b0380380620016b0833981810160405260808110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b838201915060208201858111156200006f57600080fd5b82518660208202830111640100000000821117156200008d57600080fd5b8083526020830192505050908051906020019060200280838360005b83811015620000c6578082015181840152602081019050620000a9565b5050505090500160405260200180516040519392919084640100000000821115620000f057600080fd5b838201915060208201858111156200010757600080fd5b82518660208202830111640100000000821117156200012557600080fd5b8083526020830192505050908051906020019060200280838360005b838110156200015e57808201518184015260208101905062000141565b505050509050016040526020018051906020019092919080519060200190929190505050600062000194620002d960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200024382620002e160201b60201c565b6200025584846200036860201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff167f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf960405160405180910390a25050505062000528565b600033905090565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb60405160405180910390a250565b8051825114620003e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f494e434f4e53495354454e545f504152414d535f4c454e47544800000000000081525060200191505060405180910390fd5b60005b82518110156200052357818181518110620003fa57fe5b6020026020010151600160008584815181106200041357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818181518110620004a057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16838281518110620004cb57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a38080600101915050620003e3565b505050565b60805160601c6111656200054b6000398061096352806109ec52506111656000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80639d23d9f2116100665780639d23d9f2146101c7578063abfd531014610295578063ad5c464814610363578063b3596f0714610397578063f2fde38b146103ef5761009e565b8063170aee73146100a35780636210308c146100e7578063715018a61461011b5780638da5cb5b1461012557806392bf2be014610159575b600080fd5b6100e5600480360360208110156100b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610433565b005b6100ef610507565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610123610531565b005b61012d6106b7565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61019b6004803603602081101561016f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106e0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61023e600480360360208110156101dd57600080fd5b81019080803590602001906401000000008111156101fa57600080fd5b82018360208201111561020c57600080fd5b8035906020019184602083028401116401000000008311171561022e57600080fd5b9091929391929390505050610749565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610281578082015181840152602081019050610266565b505050509050019250505060405180910390f35b610361600480360360408110156102ab57600080fd5b81019080803590602001906401000000008111156102c857600080fd5b8201836020820111156102da57600080fd5b803590602001918460208302840111640100000000831117156102fc57600080fd5b90919293919293908035906020019064010000000081111561031d57600080fd5b82018360208201111561032f57600080fd5b8035906020019184602083028401116401000000008311171561035157600080fd5b9091929391929390505050610807565b005b61036b610961565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d9600480360360208110156103ad57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610985565b6040518082815260200191505060405180910390f35b6104316004803603602081101561040557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cb6565b005b61043b610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61050481610ec9565b50565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610539610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060808383905067ffffffffffffffff8111801561076657600080fd5b506040519080825280602002602001820160405280156107955781602001602082028036833780820191505090505b50905060005b848490508110156107fc576107d78585838181106107b557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16610985565b8282815181106107e357fe5b602002602001018181525050808060010191505061079b565b508091505092915050565b61080f610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61095b848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050610f50565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610a4f57670de0b6b3a7640000915050610cb1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b5057600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b3596f07846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610b0d57600080fd5b505afa158015610b21573d6000803e3d6000fd5b505050506040513d6020811015610b3757600080fd5b8101908080519060200190929190505050915050610cb1565b60008173ffffffffffffffffffffffffffffffffffffffff166350d25bcd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9857600080fd5b505afa158015610bac573d6000803e3d6000fd5b505050506040513d6020811015610bc257600080fd5b810190808051906020019092919050505090506000811315610be8578092505050610cb1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b3596f07856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610c7157600080fd5b505afa158015610c85573d6000803e3d6000fd5b505050506040513d6020811015610c9b57600080fd5b8101908080519060200190929190505050925050505b919050565b610cbe610ec1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061110a6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb60405160405180910390a250565b8051825114610fc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f494e434f4e53495354454e545f504152414d535f4c454e47544800000000000081525060200191505060405180910390fd5b60005b825181101561110457818181518110610fdf57fe5b602002602001015160016000858481518110610ff757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081818151811061108357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106110ad57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a38080600101915050610fca565b50505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220a57a181b2fb14bdbe19b93a928e944b1f9d52882a0b1b146edd023e8fe71276264736f6c634300060c0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000afe908d639cff4e2313d065b3cda5ef4e056d9b8000000000000000000000000c778417e063141139fce010982780140aa0cd5ab00000000000000000000000000000000000000000000000000000000000000010000000000000000000000008f2e097e79b1c51be9cba42658862f0192c3e4870000000000000000000000000000000000000000000000000000000000000001000000000000000000000000afe908d639cff4e2313d065b3cda5ef4e056d9b8

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000afe908d639cff4e2313d065b3cda5ef4e056d9b8000000000000000000000000c778417e063141139fce010982780140aa0cd5ab00000000000000000000000000000000000000000000000000000000000000010000000000000000000000008f2e097e79b1c51be9cba42658862f0192c3e4870000000000000000000000000000000000000000000000000000000000000001000000000000000000000000afe908d639cff4e2313d065b3cda5ef4e056d9b8

-----Decoded View---------------
Arg [0] : assets (address[]): 0x8f2e097e79b1c51be9cba42658862f0192c3e487
Arg [1] : sources (address[]): 0xafe908d639cff4e2313d065b3cda5ef4e056d9b8
Arg [2] : fallbackOracle (address): 0xafe908d639cff4e2313d065b3cda5ef4e056d9b8
Arg [3] : weth (address): 0xc778417e063141139fce010982780140aa0cd5ab

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 000000000000000000000000afe908d639cff4e2313d065b3cda5ef4e056d9b8
Arg [3] : 000000000000000000000000c778417e063141139fce010982780140aa0cd5ab
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000008f2e097e79b1c51be9cba42658862f0192c3e487
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [7] : 000000000000000000000000afe908d639cff4e2313d065b3cda5ef4e056d9b8


Deployed ByteCode Sourcemap

3750:3934:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5201:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7576:105;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2588:138;;;:::i;:::-;;1986:73;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7336:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6886:283;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4888:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4102:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6246:515;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2871:230;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5201:117;2190:12;:10;:12::i;:::-;2180:22;;:6;;;;;;;;;;:22;;;2172:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5278:34:::1;5297:14;5278:18;:34::i;:::-;5201:117:::0;:::o;7576:105::-;7628:7;7659:15;;;;;;;;;;;7644:31;;7576:105;:::o;2588:138::-;2190:12;:10;:12::i;:::-;2180:22;;:6;;;;;;;;;;:22;;;2172:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2691:1:::1;2654:40;;2675:6;::::0;::::1;;;;;;;;2654:40;;;;;;;;;;;;2718:1;2701:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2588:138::o:0;1986:73::-;2024:7;2047:6;;;;;;;;;;;2040:13;;1986:73;:::o;7336:122::-;7400:7;7431:13;:20;7445:5;7431:20;;;;;;;;;;;;;;;;;;;;;;;;;7416:36;;7336:122;;;:::o;6886:283::-;6961:16;6986:23;7026:6;;:13;;7012:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6986:54;;7052:9;7047:97;7071:6;;:13;;7067:1;:17;7047:97;;;7112:24;7126:6;;7133:1;7126:9;;;;;;;;;;;;;;;7112:13;:24::i;:::-;7100:6;7107:1;7100:9;;;;;;;;;;;;;:36;;;;;7086:3;;;;;;;7047:97;;;;7157:6;7150:13;;;6886:283;;;;:::o;4888:159::-;2190:12;:10;:12::i;:::-;2180:22;;:6;;;;;;;;;;:22;;;2172:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5007:34:::1;5025:6;;5007:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5033:7;;5007:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;:34::i;:::-;4888:159:::0;;;;:::o;4102:29::-;;;:::o;6246:515::-;6314:7;6330:27;6360:13;:20;6374:5;6360:20;;;;;;;;;;;;;;;;;;;;;;;;;6330:50;;6402:4;6393:13;;:5;:13;;;6389:367;;;6424:7;6417:14;;;;;6389:367;6476:1;6449:29;;6457:6;6449:29;;;6445:311;;;6496:15;;;;;;;;;;;:29;;;6526:5;6496:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6489:43;;;;;6445:311;6555:12;6591:6;6570:41;;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6555:58;;6634:1;6626:5;:9;6622:127;;;6663:5;6648:21;;;;;;6622:127;6703:15;;;;;;;;;;;:29;;;6733:5;6703:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6696:43;;;;6246:515;;;;:::o;2871:230::-;2190:12;:10;:12::i;:::-;2180:22;;:6;;;;;;;;;;:22;;;2172:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:1:::1;2956:22;;:8;:22;;;;2948:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3062:8;3033:38;;3054:6;::::0;::::1;;;;;;;;3033:38;;;;;;;;;;;;3087:8;3078:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2871:230:::0;:::o;677:100::-;730:15;761:10;754:17;;677:100;:::o;5981:175::-;6086:14;6049:15;;:52;;;;;;;;;;;;;;;;;;6135:14;6113:37;;;;;;;;;;;;5981:175;:::o;5502:351::-;5621:7;:14;5604:6;:13;:31;5596:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5678:9;5673:175;5697:6;:13;5693:1;:17;5673:175;;;5774:7;5782:1;5774:10;;;;;;;;;;;;;;5726:13;:24;5740:6;5747:1;5740:9;;;;;;;;;;;;;;5726:24;;;;;;;;;;;;;;;;:59;;;;;;;;;;;;;;;;;;5829:7;5837:1;5829:10;;;;;;;;;;;;;;5799:41;;5818:6;5825:1;5818:9;;;;;;;;;;;;;;5799:41;;;;;;;;;;;;5712:3;;;;;;;5673:175;;;;5502:351;;:::o

Swarm Source

ipfs://a57a181b2fb14bdbe19b93a928e944b1f9d52882a0b1b146edd023e8fe712762
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
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.