😀
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
  • Write Methods
  • View Methods

Was this helpful?

  1. Developers
  2. Smart Contract

PoolAddressesProvider

PreviousOraclesNextPool Configurator

Last updated 21 days ago

Was this helpful?

The main addresses register of the protocol, for particular markets. The latest contract addresses should be retrieved from this contract by making the appropriate calls.

The PoolAddressesProvider contract is the main registry of addresses that are part of, or connected to the Protocol, including permissioned roles. It acts as a factory of proxies and is the admin of those, and therefore has the right to change its implementations.

The addresses provider manages various protocol modules and has the ability to update pointers (e.g. update the ACLManager contract) or update the implementation of proxy contracts (e.g. update the implementation).

It specifies the initial holder of the DEFAULT_ADMIN_ROLE, it is immutable, and the address will never change.

Whenever the contract is needed, we recommended you fetch the correct address from this PoolAddressesProvider smart contract.

The source code is available on GitHub.

This contract is owned by the Nexus Governance.

Write Methods

setMarketId

function setMarketId(string memory newMarketId) external override onlyOwner

Updates the identifier of the Nexus market by associating an id with a specific PoolAddressesProvider. This can be used to create an on-chain registry of pool addresses providers to identify and validate multiple Nexus markets.

Input Parameters:

Name
Type
Description

newMarketId

string

The new id of the market

setAddress

function setAddress(bytes32 id, address newAddress) external override onlyOwner

Sets the address of the protocol contract stored at the given id, replacing the address saved in the addresses map.

For example, utils.keccak256(utils.toUtf8Bytes("INCENTIVES_CONTROLLER")), is set to the address of INCENTIVES_CONTROLLER.

Use this function carefully, as it will do a hard replacement of the current address in the addresses map.

Input Parameters:

Name
Type
Description

id

bytes32

keccak256 hash of UTF8Bytes string representing contract

newAddress

address

The new address to be set corresponding to the id

setAddressAsProxy

function setAddressAsProxy(bytes32 id, address newImplementationAddress) external override onlyOwner

Updates the implementation address of a proxy contract with a specified id.

If there is no proxy registered, it will instantiate one and set the implementation as the newImplementationAddress.

Use this function carefully, only for ids that do not have an explicit setter function in order to avoid unexpected consequences.

Input Parameters:

Name
Type
Description

id

bytes32

The id of the proxy contract

newImplementationAddress

address

The address of new implementation contract corresponding to the proxy

setPoolImpl

function setPoolImpl(address newPoolImpl) external override onlyOwner

Input Parameters:

Name
Type
Description

newPoolImpl

address

The address of new Pool implementation contract

setPoolConfiguratorImpl

function setPoolConfiguratorImpl(address newPoolConfiguratorImpl) external override onlyOwner

Input Parameters:

Name
Type
Description

newPoolConfiguratorImpl

address

The address of new PoolConfigurator implementation contract

setPriceOracle

function setPriceOracle(address newPriceOracle) external override onlyOwner

Updates the address of the price oracle.

Input Parameters:

Name
Type
Description

newPriceOracle

address

The address of new price oracle

setACLManager

function setACLManager(address newAclManager) external override onlyOwner

Updates the address of the Access Control List Manager.

Input Parameters:

Name
Type
Description

newAclManager

address

The address of the new ACLManager

setACLAdmin

function setACLAdmin(address newAclAdmin) external override onlyOwner

Updates the address of the Access Control List Admin.

Input Parameters:

Name
Type
Description

newAclAdmin

address

The address of new ACLAdmin

setPriceOracleSentinel

function setPriceOracleSentinel(address newPriceOracleSentinel) external override onlyOwner

Updates the address of the price oracle sentinel.

Input Parameters:

Name
Type
Description

newPriceOracleSentinel

address

The address of new PriceOracleSentinel

setPoolDataProvider

function setPoolDataProvider(address newDataProvider) external override onlyOwner

Updates the address of the data provider.

Input Parameters:

Name
Type
Description

newDataProvider

address

The address of new DataProvider

View Methods

getMarketId

function getMarketId() external view override returns (string memory)

Returns the market id of the associated Nexus market.

Return Values:

Type
Description

string

A string representation of the market id

getAddress

function getAddress(bytes32 id) public view override returns (address)

Returns the address of protocol contract stored at the given id. The returned address might be an EOA or a contract, which may be proxied. It will return ZERO if there is no registered address with the given id.

Input Parameters:

Name
Type
Description

id

bytes32

The id. For example, the Protocol Data Provider uses id 0x1

Return Values:

Type
Description

address

The address associated with the id passed

Example:

// Get address of incentive controllerimport { utils } from "@ethers/lib/utils";
const id = utils.keccak256(utils.toUtf8Bytes("INCENTIVES_CONTROLLER"));const address = poolAddressProvider.getAddress(id);

getPool

function getPool() external view override returns (address)

Returns the address of the latest Pool proxy contract.

Return Values:

Type
Description

address

The address of the associated Pool proxy

getPoolConfigurator

function getPoolConfigurator() external view override returns (address)

Return Values:

Type
Description

address

The PoolConfigurator proxy address

getPriceOracle

function getPriceOracle() external view override returns (address)

Returns the address of the Price Oracle used by the market.

Return Values:

Type
Description

address

The address of the price oracle used by the associated market

getACLManager

function getACLManager() external view override returns (address)

Returns the address of the Access Control List Manager (ACLManager) that manages the system role of the market.

Return Values:

Type
Description

address

The address of the ACLManger contract managing the system role of the associated market

getACLAdmin

function getACLAdmin() external view override returns (address)

Returns the address of the Access Control List Admin (ACLAdmin) of the market which holds the DEFAULT_ADMIN_ROLE in ACLManager.

Return Values:

Type
Description

address

The address of the Access Control List admin of the associated market

getPriceOracleSentinel

function getPriceOracleSentinel() external view override returns (address)

Returns the address of the price oracle sentinel.

Return Values:

Type
Description

address

The address of the PriceOracleSentinel of the associated market

getPoolDataProvider

function getPoolDataProvider() external view override returns (address)

Returns the address of latest pool data provider.

Return Values:

Type
Description

address

The address of the pool data provider of the associated market

Updates the implementation of the contract, or creates a proxy.

Updates the implementation of the contract, or creates a proxy.

Returns the address of the proxy. Used for configuration methods, like init reserves or update token implementation etc, of the market.

Pool
Pool
Pool
PoolConfigurator
PoolConfigurator