PoolAddressesProvider
Registry that returns addresses of core components
🔹Constructor
constructor(string marketId, address owner)
Initializes the contract by setting amarketId
(text identifier for the market, e.g.,"AaveV3Ethereum"
) and assigning anowner
with admin rights.
🔹View (read-only) functions
getACLAdmin() → address
Returns the current ACL Admin address (the account responsible for managing access control).getACLManager() → address
Returns the current ACL Manager address (manages roles within the ACL system).getAddress(bytes32 id) → address
Returns the stored address associated with a given identifier (id
). Example: fetching the pool or oracle by ID.getMarketId() → string
Returns the text identifier of the current market.getPool() → address
Returns the Pool contract address.getPoolConfigurator() → address
Returns the Pool Configurator contract address.getPoolDataProvider() → address
Returns the Data Provider contract address.getPriceOracle() → address
Returns the address of the current price oracle.getPriceOracleSentinel() → address
Returns the address of the oracle sentinel (a contract that can pause operations when oracle feeds are unreliable).getPyth() → address
Returns the address of the Pyth oracle integration (used for real-time price feeds).owner() → address
Returns the current owner (administrator of the contract).
🔹State-changing (admin) functions
setACLAdmin(address newAclAdmin)
Updates the ACL Admin to a new address. Emits ACLAdminUpdated event.setACLManager(address newAclManager)
Updates the ACL Manager to a new address. Emits ACLManagerUpdated event.setAddress(bytes32 id, address newAddress)
Associates anid
with a new raw address. Emits AddressSet event.setAddressAsProxy(bytes32 id, address newImplementationAddress)
Deploys or updates a proxy for a givenid
, pointing to a new implementation. Emits AddressSetAsProxy event.setMarketId(string newMarketId)
Updates the market identifier string. Emits MarketIdSet event.setPoolConfiguratorImpl(address newPoolConfiguratorImpl)
Updates the Pool Configurator implementation. Emits PoolConfiguratorUpdated event.setPoolDataProvider(address newDataProvider)
Updates the Pool Data Provider contract. Emits PoolDataProviderUpdated event.setPoolImpl(address newPoolImpl)
Updates the Pool implementation. Emits PoolUpdated event.setPriceOracle(address newPriceOracle)
Updates the price oracle contract. Emits PriceOracleUpdated event.setPriceOracleSentinel(address newPriceOracleSentinel)
Updates the oracle sentinel contract. Emits PriceOracleSentinelUpdated event.setPyth(address newPyth)
Updates the Pyth oracle contract. Emits PythUpdated event.transferOwnership(address newOwner)
Transfers contract ownership tonewOwner
. Emits OwnershipTransferred event.renounceOwnership()
Permanently removes the owner, leaving the contract without centralized admin control.
🔹Events (for tracking changes)
ACLAdminUpdated / ACLManagerUpdated → fired when ACL roles change.
AddressSet / AddressSetAsProxy → fired when addresses or proxies are updated.
MarketIdSet → fired when the market ID changes.
OwnershipTransferred → fired when contract ownership changes.
PoolConfiguratorUpdated / PoolDataProviderUpdated / PoolUpdated → fired when pool-related components are updated.
PriceOracleUpdated / PriceOracleSentinelUpdated → fired when oracle components are updated.
ProxyCreated → fired when a new proxy contract is deployed.
PythUpdated → fired when the Pyth oracle address changes.
Copy
[
{
"inputs": [
{ "internalType": "string", "name": "marketId", "type": "string" },
{ "internalType": "address", "name": "owner", "type": "address" }
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "ACLAdminUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "ACLManagerUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" },
{ "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "AddressSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" },
{ "indexed": true, "internalType": "address", "name": "proxyAddress", "type": "address" },
{ "indexed": false, "internalType": "address", "name": "oldImplementationAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newImplementationAddress", "type": "address" }
],
"name": "AddressSetAsProxy",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "string", "name": "oldMarketId", "type": "string" },
{ "indexed": true, "internalType": "string", "name": "newMarketId", "type": "string" }
],
"name": "MarketIdSet",
"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": "oldAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "PoolConfiguratorUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "PoolDataProviderUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "PoolUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "PriceOracleSentinelUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "PriceOracleUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "bytes32", "name": "id", "type": "bytes32" },
{ "indexed": true, "internalType": "address", "name": "proxyAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "implementationAddress", "type": "address" }
],
"name": "ProxyCreated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{ "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" },
{ "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "PythUpdated",
"type": "event"
},
{
"inputs": [],
"name": "getACLAdmin",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getACLManager",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [{ "internalType": "bytes32", "name": "id", "type": "bytes32" }],
"name": "getAddress",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getMarketId",
"outputs": [{ "internalType": "string", "name": "", "type": "string" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPool",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPoolConfigurator",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPoolDataProvider",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPriceOracle",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPriceOracleSentinel",
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getPyth",
"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": "newAclAdmin", "type": "address" }],
"name": "setACLAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newAclManager", "type": "address" }],
"name": "setACLManager",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{ "internalType": "bytes32", "name": "id", "type": "bytes32" },
{ "internalType": "address", "name": "newAddress", "type": "address" }
],
"name": "setAddress",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{ "internalType": "bytes32", "name": "id", "type": "bytes32" },
{ "internalType": "address", "name": "newImplementationAddress", "type": "address" }
],
"name": "setAddressAsProxy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "string", "name": "newMarketId", "type": "string" }],
"name": "setMarketId",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newPoolConfiguratorImpl", "type": "address" }],
"name": "setPoolConfiguratorImpl",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newDataProvider", "type": "address" }],
"name": "setPoolDataProvider",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newPoolImpl", "type": "address" }],
"name": "setPoolImpl",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newPriceOracle", "type": "address" }],
"name": "setPriceOracle",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newPriceOracleSentinel", "type": "address" }],
"name": "setPriceOracleSentinel",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newPyth", "type": "address" }],
"name": "setPyth",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
Last updated
Was this helpful?