😀
Nexus Market
  • Introduction
    • 👋Hi !
    • Overview
      • Start BUIDLing
  • Links
    • Money Market App
    • Github
    • Telegram
  • Concepts
    • At a Glance
      • Supply
      • Borrow
      • Repay
      • Withdraw
      • Liquidation
      • Flash Loan
      • Risks
    • Protocol
      • Liquidity Pool
      • Reserve
      • Oracle
      • Governance
      • Incentives
      • Safety Module
  • LST as Collateral
  • Coming Soon
  • Guides
    • User Flows
    • Follow-on Steps
  • Developers
    • Smart Contract
      • Pool
      • L2 Pool
      • Wrapped Token Gateway
      • View Contracts
      • Incentives
      • Tokenisation
      • Interest Rate Strategy
      • Access Control Manager
      • Oracles
      • PoolAddressesProvider
      • Pool Configurator
      • Switch Adapters
    • Safety Module
    • Governance
    • Flash Loan
      • Premium Distribution
      • Example Calculation
  • Credit Delegation
  • Resources
    • Web3
    • Glossary
    • Contracts Dashboard
      • Ethereum Sepolia
      • Base Sepolia
      • BSC Chapel
    • Parameters Dashboard
    • Access Control Dashboard
    • FAQ
      • General
      • Risk
      • Supplying and Earning
      • Borrowing
      • Liquidations
      • Governance
      • Safety Module
      • Developers
      • Other Features
      • Brand-related
Powered by GitBook
On this page
  • UiPoolDataProvider
  • View Methods
  • getReservesList
  • getReservesData
  • WalletBalanceProvider
  • View Methods
  • NexusProtocolDataProvider
  • View Methods
  • Pure Methods
  • LiquidationDataProvider
  • View Methods

Was this helpful?

  1. Developers
  2. Smart Contract

View Contracts

PreviousWrapped Token GatewayNextIncentives

Last updated 21 days ago

Was this helpful?

The Nexus Protocol has several view contracts to assist with querying on chain data.

UiPoolDataProvider

Contract that returns an array of all reserve or user data for a particular market (for example, liquidity, token addresses, rate strategy), used by the Nexus Interface to display Markets and Dashboard data.

The Utilities SDK includes an interface to make calls to this contract, and functions to format the response for frontend use-cases.

The source code is available on GitHub.

View Methods

getReservesList

function getReservesList(IPoolAddressesProvider provider) public view override returns (address[] memory)

Returns the list of initialised reserves in the Pool associated with the given .

Input Parameters:

Name
Type
Description

provider

IPoolAddressesProvider

The given provider for the associated pool

Return Values:

Type
Description

address[]

The list of initialised reserves in the Pool

getReservesData

function getReservesData(IPoolAddressesProvider provider) public view override returns (AggregatedReserveData[] memory, BaseCurrencyInfo memory)

Input Parameters:

Name
Type
Description

provider

IPoolAddressesProvider

The given provider for the associated pool

Return Values:

Type
Description

BaseCurrencyInfo

The base currency information

AggregatedReserveData[]

The aggregated reserve data

The BaseCurrencyInfo struct is composed of the following fields:

marketReferenceCurrencyUnit

uint256

Reference aka base currency of the Nexus market

marketReferenceCurrencyPriceInUsd

int256

Price of reference aka base currency in USD

networkBaseTokenPriceInUsd

int256

Price of native token of the network/chain in USD

networkBaseTokenPriceDecimals

uint8

Decimals of native token of the network/chain

The AggregatedReserveData struct is composed of the following fields:

Name
Type
Description

underlyingAsset

address

The address of the underlying asset of the reserve

name

string

The name of the underlying reserve asset

symbol

string

The symbol of the underlying reserve asset

decimals

uint256

The number of decimals of the reserve

baseLTVasCollateral

uint256

The ltv of the reserve

reserveLiquidationThreshold

uint256

The liquidation threshold of the reserve

reserveLiquidationBonus

uint256

The liquidation bonus of the resurve

reserveFactor

uint256

The reserve factor of the reserve

usageAsCollateralEnabled

bool

true if the asset is enabled to be used as collateral, false otherwise

borrowingEnabled

bool

true if borrowing is enabled, false otherwise

isActive

bool

true if reserve is active, false otherwise

isFrozen

bool

true if reserve is frozen, false otherwise

BASE DATA

liquidityIndex

uint128

The liquidity index of the reserve

variableBorrowIndex

uint128

The variable borrow index of the reserve

liquidityRate

uint128

The liquidity rate of the reserve

variableBorrowRate

uint128

The variable borrow rate of the reserve

lastUpdateTimestamp

uint40

The timestamp of the last update of the reserve

zTokenAddress

address

The ZToken address of the reserve

variableDebtTokenAddress

address

The VariableDebtToken address of the reserve

interestRateStrategyAddress

address

The address of the Interest Rate strategy

availableLiquidity

uint256

The liquidity available

totalScaledVariableDebt

uint256

The total scaled variable debt

priceInMarketReferenceCurrency

uint256

Price of reference aka base currency of Nexus market

priceOracle

address

The address of the price oracle used by the associated market

variableRateSlope1

uint256

The variable rate slope

variableRateSlope2

uint256

The variable rate slope

baseVariableBorrowRate

uint256

The base variable borrow rate, expressed in ray

optimalUsageRatio

uint256

The optimal usage ratio

getUserReservesData

function getUserReservesData(IPoolAddressesProvider provider, address user) external view override returns (UserReserveData[] memory, uint8)

Input Parameters:

Name
Type
Description

provider

IPoolAddressesProvider

The given provider for the associated pool

user

address

The address of the user

UserReserveData

Type
Description

UserReserveData[]

The user reserve data

The UserReserveData struct is composed of the following fields:

Name
Type
Description

underlyingAsset

address

The address of the underlying asset supplied/borrowed

scaledZTokenBalance

uint256

The scaled balance of the zToken. scaledBalance = balance/liquidityIndex

usageAsCollateralEnabledOnUser

bool

true if the supplied asset is enabled to be used as collateral, false otherwise

scaledVariableDebt

uint256

The scaled balance of borrow position: (current balance = scaled balance * liquidity index)

WalletBalanceProvider

Fetches tokens balances for all underlying tokens of Nexus reserves for one user address.

This contract is not used within the Nexus Protocol. It is an accessory contract used to reduce the number of calls towards the blockchain from the Nexus backend.

For getting ETH (native chain token) balance use MOCK_ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE.

The source code is available on GitHub.

View Methods

balanceOf

function balanceOf(address user, address token) public view returns (uint256)

Checks the token balance of a wallet in a token contract. Returns the balance of the token for user (ETH included with MOCK_ETH_ADDRESS).

Input Parameters:

Name
Type
Description

user

address

The address of the user

token

address

The address of the token

Return Values:

Type
Description

uint256

The balance of the token for user. Returns 0 for a non-contract address

batchBalanceOf

function batchBalanceOf(address[] calldata users, address[] calldata tokens) external view returns (uint256[] memory)

Returns balances for a list of users and tokens (ETH included with MOCK_ETH_ADDRESS).

Input Parameters:

Name
Type
Description

users

address[]

The list of users

tokens

address[]

The list of tokens

Return Values:

Type
Description

uint256[]

A list of balances for each user

getUserWalletBalances

function getUserWalletBalances(address provider, address user) external view returns (address[] memory, uint256[] memory)

Provides balances of user wallet for all reserves available on the pool.

Input Parameters:

Name
Type
Description

provider

address

The address of the provider

user

address

The address of the user

Return Values:

address[]

A list of user wallets

uint256[]

A list of balances for each user

NexusProtocolDataProvider

The source code is available on GitHub.

View Methods

getAllReservesTokens

function getAllReservesTokens() external view returns (TokenData[] memory)

Returns a list of the existing reserves in the pool, pairs include the symbol and tokenAddress. Handles ETH in a different way since they do not have standard symbol functions.

Return Values:

Type
Description

TokenData[]

The list of reserves, pairs of symbols and addresses

The TokenData struct is composed of the following fields:

Name
Type
Description

symbol

string

The symbol of the underlying reserve asset

tokenAddress

address

The address of the underlying reserve asset

getAllZTokens

function getAllZTokens() external view returns (TokenData[] memory)

Returns a list of the existing ZTokens in the pool, pairs include the symbol and tokenAddress.

Return Values:

Type
Description

TokenData[]

The list of ZTokens, pairs of symbols and addresses

The TokenData struct is composed of the following fields:

Name
Type
Description

symbol

string

The symbol of zToken of the reserve

tokenAddress

address

The address of zToken of the reserve

getReserveConfigurationData

function getReserveConfigurationData(address asset) external view returns (    uint256 decimals,    uint256 ltv,    uint256 liquidationThreshold,    uint256 liquidationBonus,    uint256 reserveFactor,    bool usageAsCollateralEnabled,    bool borrowingEnabled,    bool stableBorrowRateEnabled,    bool isActive,    bool isFrozen)

Returns the configuration data of the reserve as described below. Does not return borrow and supply caps, nor pause flag for compatibility.

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

Return Values:

Name
Type
Description

decimals

uint256

The number of decimals of the reserve

ltv

uint256

The ltv of the reserve

liquidationThreshold

uint256

The liquidation threshold of the reserve

liquidationBonus

uint256

The liquidation bonus of the reserve

reserveFactor

uint256

The reserve factor of the reserve

usageAsCollateralEnabled

bool

true if the usage as collateral is enabled, false otherwise

borrowingEnabled

bool

true if borrowing is enabled, false otherwise

stableBorrowRateEnabled

bool

Always false (deprecated)

isActive

bool

true if reserve is active, false otherwise

isFrozen

bool

true if reserve is frozen, false otherwise

getPaused

function getPaused(address asset) external view returns (bool isPaused)

Returns true if the pool isPaused.

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

Return Values:

Name
Type
Description

isPaused

bool

true if the pool is paused, false otherwise

getLiquidationProtocolFee

function getLiquidationProtocolFee(address asset) external view override returns (uint256)

Returns the protocol fee on the liquidation bonus.

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

Return Values:

Type
Description

uint256

The protocol fee on liquidation

getReserveData

function getReserveData(address asset) external view override returns (    uint256 unbacked,    uint256 accruedToTreasuryScaled,    uint256 totalZToken,    uint256 totalStableDebt,    uint256 totalVariableDebt,    uint256 liquidityRate,    uint256 variableBorrowRate,    uint256 stableBorrowRate,    uint256 averageStableBorrowRate,    uint256 liquidityIndex,    uint256 variableBorrowIndex,    uint40 lastUpdateTimestamp)

Returns the reserve data.

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

Return Values:

Name
Type
Description

unbacked

uint256

The amount of unbacked zTokens of the reserve

accruedToTreasuryScaled

uint256

The scaled amount of tokens accrued to treasury that is to be minted

totalZToken

uint256

The total supply of the zToken

totalStableDebt

uint256

The total stable debt of the reserve (deprecated)

totalVariableDebt

uint256

The total variable debt of the reserve

liquidityRate

uint256

The liquidity rate of the reserve

variableBorrowRate

uint256

The variable borrow rate of the reserve

stableBorrowRate

uint256

The stable borrow rate of the reserve (deprecated)

averageStableBorrowRate

uint256

The average stable borrow rate of the reserve (deprecated)

liquidityIndex

uint256

The liquidity index of the reserve

variableBorrowIndex

uint256

The variable borrow index of the reserve

lastUpdateTimestamp

uint40

The timestamp of the last update of the reserve

getZTokenTotalSupply

function getZTokenTotalSupply(address asset) external view override returns (uint256)

Returns the total supply of zTokens for a given asset.

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

Return Values:

Type
Description

uint256

The total supply of the zToken

getTotalDebt

function getTotalDebt(address asset) external view override returns (uint256)

Returns the total debt for a given asset.

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

Return Values:

Type
Description

uint256

The total borrows for an asset

getUserReserveData

function getUserReserveData(address asset, address user) external view returns (    uint256 currentZTokenBalance,    uint256 currentStableDebt,    uint256 currentVariableDebt,    uint256 principalStableDebt,    uint256 scaledVariableDebt,    uint256 stableBorrowRate,    uint256 liquidityRate,    uint40 stableRateLastUpdated,    bool usageAsCollateralEnabled)

Returns the following user reserve data.

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

user

address

The address of the user

Return Values:

Name
Type
Description

currentZTokenBalance

uint256

The current ZToken balance of the user

currentStableDebt

uint256

The current stable debt of the user (deprecated)

currentVariableDebt

uint256

The current variable debt of the user

principalStableDebt

uint256

The principal stable debt of the user (deprecated)

scaledVariableDebt

uint256

The scaled variable debt of the user

stableBorrowRate

uint256

The stable borrow rate of the user (deprecated)

liquidityRate

uint256

The liquidity rate of the reserve

stableRateLastUpdated

uint40

The timestamp of the last update of the user stable rate (deprecated)

usageAsCollateralEnabled

bool

true if the user is using the asset as collateral, else false

getReserveTokensAddresses

function getReserveTokensAddresses(address asset) external view override returns (    address zTokenAddress,    address stableDebtTokenAddress,    address variableDebtTokenAddress)

Returns the addresses of the ZToken, stableDebtToken and variableDebtToken of the reserve.

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

Return Values:

Name
Type
Description

zTokenAddress

address

The ZToken address of the reserve

stableDebtTokenAddress

address

The StableDebtToken address of the reserve (deprecated)

variableDebtTokenAddress

address

The VariableDebtToken address of the reserve

getInterestRateStrategyAddress

function getInterestRateStrategyAddress(address asset) external view override returns (address irStrategyAddress)

Returns the address of the Interest Rate strategy.

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

Return Values:

Name
Type
Description

irStrategyAddress

address

The address of the Interest Rate strategy

getReserveDeficit

function getReserveDeficit(address asset) external view override returns (uint256)

Input Parameters:

Name
Type
Description

asset

address

The address of the underlying asset of the reserve

Return Values:

Type
Description

uint256

Current reserve deficit from undercollateralized borrow positions

Pure Methods

getDebtCeilingDecimals

function getDebtCeilingDecimals() external pure override returns (uint256)

Returns the debt ceiling decimals.

Return Values:

Type
Description

uint256

The debt ceiling decimals

LiquidationDataProvider

This contract is a utility for fetching and pre-processing liquidation-related parameters for a given user. It aggregates data from the underlying Pool and Price Oracle to determine a user’s position, collateral, borrow details, and liquidation limits according to the protocol parameters.

The source code is available on GitHub.

View Methods

getUserPositionFullInfo

getUserPositionFullInfo(address user) public view override returns (UserPositionFullInfo memory)

Returns aggregated position information for a user including total collateral, total debt, available borrows, current liquidation threshold, loan-to-value (LTV), and health factor. All values are denominated in the base currency.

Input Parameters:

Name
Type
Description

user

address

The address of the user whose position is queried

Return Values:

Name
Type
Description

UserPositionFullInfo

struct

The aggregated position information of the user

The UserPositionFullInfo struct is composed of the following fields:

Name
Type
Description

totalCollateralInBaseCurrency

uint256

Total collateral in base currency

totalDebtInBaseCurrency

uint256

Total debt in base currency

availableBorrowsInBaseCurrency

uint256

Available borrows in base currency

currentLiquidationThreshold

uint256

Current liquidation threshold

ltv

uint256

Loan-to-value ratio

healthFactor

uint256

Health factor of the user’s position

getCollateralFullInfo

getCollateralFullInfo(address user, address collateralAsset) external view override returns (CollateralFullInfo memory)

Returns detailed information regarding a user’s collateral for a given asset. The returned struct includes the asset’s unit (based on decimals), its current price (via the Price Oracle), the associated zToken address, the raw collateral balance, and its equivalent value in the base currency.

Input Parameters:

Name
Type
Description

user

address

The address of the user

collateralAsset

address

The address of the collateral asset to fetch information for

Return Values:

CollateralFullInfo

struct

Detailed collateral information for the specified asset

The CollateralFullInfo struct is composed of the following fields:

Name
Type
Description

assetUnit

uint256

The unit value of the asset (10^decimals)

price

uint256

Current price of the asset from the Price Oracle

zToken

address

Address of the zToken associated with the asset

collateralBalance

uint256

The raw collateral balance of the user

collateralBalanceInBaseCurrency

uint256

Collateral balance denominated in the base currency

getDebtFullInfo

getDebtFullInfo(address user, address debtAsset) external view override returns (DebtFullInfo memory)

Returns detailed information regarding a user’s debt for a given asset. The returned struct includes the asset’s unit, current price, the associated variable debt token address, the debt balance, and its equivalent value in the base currency.

Input Parameters:

Name
Type
Description

user

address

The address of the user

debtAsset

address

The address of the debt asset to fetch information for

Return Values:

Name
Type
Description

DebtFullInfo

struct

Detailed debt information for the specified asset

The DebtFullInfo struct is composed of the following fields:

assetUnit

uint256

The unit value of the asset (10^decimals)

price

uint256

Current price of the asset from the Price Oracle

variableDebtToken

address

Address of the variable debt token associated with the asset

debtBalance

uint256

The raw debt balance of the user

debtBalanceInBaseCurrency

uint256

Debt balance denominated in the base currency

getLiquidationInfo (without custom debt amount)

getLiquidationInfo(address user, address collateralAsset, address debtAsset) public view override returns (LiquidationInfo memory)

A convenience function that returns liquidation parameters for a user using the maximum possible debt liquidation amount. Internally, it calls the overloaded version with debtLiquidationAmount set to the maximum (type(uint256).max).

Input Parameters:

Name
Type
Description

user

address

The address of the user

collateralAsset

address

The address of the collateral asset

debtAsset

address

The address of the debt asset

Return Values:

Name
Type
Description

LiquidationInfo

struct

Detailed liquidation information for the specified user and assets

The LiquidationInfo struct is composed of the following fields:

Name
Type
Description

userInfo

struct

Aggregated position details of the user (UserPositionFullInfo above)

collateralInfo

struct

Detailed collateral information (CollateralFullInfo above)

debtInfo

struct

Detailed debt information (DebtFullInfo above)

maxCollateralToLiquidate

uint256

Maximum collateral that can be liquidated

maxDebtToLiquidate

uint256

Maximum debt that can be liquidated

liquidationProtocolFee

uint256

Protocol fee applied on the liquidation bonus

amountToPassToLiquidationCall

uint256

Adjusted debt amount for the liquidation call

getLiquidationInfo (with custom debt liquidation amount)

getLiquidationInfo(address user, address collateralAsset, address debtAsset, uint256 debtLiquidationAmount) public view override returns (LiquidationInfo memory)

Returns comprehensive liquidation parameters for a user given a specific collateral asset and debt asset, considering a custom maximum debt liquidation amount. The function aggregates the user’s position, collateral and debt details, checks if liquidation conditions are met, and computes the optimal amounts for liquidation—including any applicable protocol fees.

Input Parameters:

Name
Type
Description

user

address

The address of the user

collateralAsset

address

The address of the collateral asset to be liquidated

debtAsset

address

The address of the debt asset to be repaid

debtLiquidationAmount

uint256

The maximum debt amount that can be liquidated (if lower than the user’s debt balance)

Return Values:

Name
Type
Description

LiquidationInfo

struct

Detailed liquidation information for the specified user and assets

The LiquidationInfo struct is composed of the following fields:

Name
Type
Description

userInfo

struct

Aggregated position details of the user (UserPositionFullInfo above)

collateralInfo

struct

Detailed collateral information (CollateralFullInfo above)

debtInfo

struct

Detailed debt information (DebtFullInfo above)

maxCollateralToLiquidate

uint256

Maximum collateral that can be liquidated

maxDebtToLiquidate

uint256

Maximum debt that can be liquidated

liquidationProtocolFee

uint256

Protocol fee applied on the liquidation bonus

amountToPassToLiquidationCall

uint256

Adjusted debt amount for the liquidation call

Returns BaseCurrencyInfo of the Pool and AggregatedReserveData[] for all the initialised reserves in the Pool associated with the given .

Returns UserReserveData[] for all user reserves in the Pool associated with the given .

The NexusProtocolDataProvider is a peripheral contract to collect and pre-process information from the . This contract contains methods for querying token addresses, reserve parameters, and user account information. The methods of the PoolDataProvider are more granular than the UiPoolDataProvider, which queries data for reserve tokens or user balances simultaneously.

provider
provider
provider
Pool