Aave Market

The source code of the proxy price provider contract is **available on Github.**

Uniswap Market

The source code of the Uniswap price aggregator contract is **available on Github.**

View Methods

getAssetPrice()

getAssetPrice(address _asset) public view returns(uint256)

Return the price of the supported _asset in ETH wei units.

pragma solidity ^0.5.0;

import "./IPriceOracleGetter.sol";

// ... rest of your contract ...

// Retrieve PriceOracle address
LendingPoolAddressesProvider provider = LendingPoolAddressesProvider(address(0x24a42fD28C976A61Df5D00D0599C34c4f90748c8)); // mainnet address, for other addresses: <https://docs.aave.com/developers/developing-on-aave/deployed-contract-instances>
address priceOracleAddress = provider.getPriceOracle();
IPriceOracleGetter priceOracle = IPriceOracleGetter(priceOracleAddress);

address daiAddress = address(0x6B175474E89094C44Da98b954EedeAC495271d0F); // mainnet DAI
uint256 price = priceOracle.getAssetPrice(daiAddress);
import IPriceOracleABI from "./IPriceOracleGetter.json"

// From <https://docs.aave.com/developers/developing-on-aave/deployed-contract-instances>
import LendingPoolAddressesProviderABI from "./LendingPoolAddressesProvider.json"

// ... The rest of your code ...

const lpAddressProviderAddress = '0x24a42fD28C976A61Df5D00D0599C34c4f90748c8' // mainnet address, for other addresses: <https://docs.aave.com/developers/developing-on-aave/deployed-contract-instances>
const lpAddressProviderContract = new web3.eth.Contract(LendingPoolAddressesProviderABI, lpAddressProviderAddress)

// Get the latest PriceOracle address
const priceOracleAddress = await lpAddressProviderContract.methods
    .getPriceOracle()
    .call()
    .catch((e) => {
        throw Error(`Error getting priceOracle address: ${e.message}`)
    })

const daiAddress = '0x6B175474E89094C44Da98b954EedeAC495271d0F' // mainnet DAI

// Get the asset price
const priceOracleContract = new web3.eth.Contract(IPriceOracleABI, priceOracleAddress)
const price = await priceOracleContract.methods
    .getAssetPrice(daiAddress)
    .call()
    .catch((e) => {
        throw Error(`Error getting priceOracle price: ${e.message}`)
    })

getSourceOfAsset()

getSourceOfAsset(address _asset) external view returns(uint256)

Returns the address of the price source for _asset.

import "./IPriceOracleGetter.sol";

// ... rest of your contract ...

// Retrieve PriceOracle address
LendingPoolAddressesProvider provider = LendingPoolAddressesProvider(address(0x24a42fD28C976A61Df5D00D0599C34c4f90748c8)); // mainnet address, for other addresses: <https://docs.aave.com/developers/developing-on-aave/deployed-contract-instances>
address priceOracleAddress = provider.getPriceOracle();
IPriceOracleGetter priceOracle = IPriceOracleGetter(priceOracleAddress);

address daiAddress = address(0x6B175474E89094C44Da98b954EedeAC495271d0F); // mainnet DAI
address source = priceOracle.getSourceOfAsset(daiAddress);
import IPriceOracleABI from "./IPriceOracleGetter.json"

// From <https://docs.aave.com/developers/developing-on-aave/deployed-contract-instances>
import LendingPoolAddressesProviderABI from "./LendingPoolAddressesProvider.json"

// ... The rest of your code ...

const lpAddressProviderAddress = '0x24a42fD28C976A61Df5D00D0599C34c4f90748c8' // mainnet address, for other addresses: <https://docs.aave.com/developers/developing-on-aave/deployed-contract-instances>
const lpAddressProviderContract = new web3.eth.Contract(LendingPoolAddressesProviderABI, lpAddressProviderAddress)

// Get the latest PriceOracle address
const priceOracleAddress = await lpAddressProviderContract.methods
    .getPriceOracle()
    .call()
    .catch((e) => {
        throw Error(`Error getting priceOracle address: ${e.message}`)
    })

const daiAddress = '0x6B175474E89094C44Da98b954EedeAC495271d0F' // mainnet DAI

// Get source for asset
const priceOracleContract = new web3.eth.Contract(IPriceOracleABI, priceOracleAddress)
const source = await priceOracleContract.methods
    .getSourceOfAsset(daiAddress)
    .call()
    .catch((e) => {
        throw Error(`Error getting priceOracle source for asset: ${e.message}`)
    })

getFallbackOracle()

getFallbackOracle() external view returns(uint256)

import "./IPriceOracleGetter.sol";

// ... rest of your contract ...

// Retrieve PriceOracle address
LendingPoolAddressesProvider provider = LendingPoolAddressesProvider(address(0x24a42fD28C976A61Df5D00D0599C34c4f90748c8)); // mainnet address, for other addresses: <https://docs.aave.com/developers/developing-on-aave/deployed-contract-instances>
address priceOracleAddress = provider.getPriceOracle();
IPriceOracleGetter priceOracle = IPriceOracleGetter(priceOracleAddress);

address fallback = priceOracle.getFallbackOracle();
import IPriceOracleABI from "./IPriceOracleGetter.json"

// From <https://docs.aave.com/developers/developing-on-aave/deployed-contract-instances>
import LendingPoolAddressesProviderABI from "./LendingPoolAddressesProvider.json"

// ... The rest of your code ...

const lpAddressProviderAddress = '0x24a42fD28C976A61Df5D00D0599C34c4f90748c8' // mainnet address, for other addresses: <https://docs.aave.com/developers/developing-on-aave/deployed-contract-instances>
const lpAddressProviderContract = new web3.eth.Contract(LendingPoolAddressesProviderABI, lpAddressProviderAddress)

// Get the latest PriceOracle address
const priceOracleAddress = await lpAddressProviderContract.methods
    .getPriceOracle()
    .call()
    .catch((e) => {
        throw Error(`Error getting priceOracle address: ${e.message}`)
    })

// Get fallback oracle address
const priceOracleContract = new web3.eth.Contract(IPriceOracleABI, priceOracleAddress)
const fallbackOracle = await priceOracleContract.methods
    .getFallbackOracle()
    .call()
    .catch((e) => {
        throw Error(`Error getting priceOracle fallback: ${e.message}`)
    })