> For the complete documentation index, see [llms.txt](https://docs.kpk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kpk.io/funds/infrastructure/onchain-accounting/deployment-addresses.md).

# Deployment addresses

The **Onchain Accounting System (NAV)** is deployed on **24 chains**. On **7** of them the funds hold positions, so those carry registered assets — with custom price feeds and balance adapters as needed; the other **17 run the canonical layer (implementation + proxy) only**. Configuration is **incremental and per-chain**: coverage varies (some chains carry many assets, others only a few), and it expands as the funds' strategies do. New custom price feeds and balance adapters are **developed and/or deployed as needed** — bringing a new protocol, asset, or chain into a strategy means shipping its feed/adapter (if one doesn't exist yet) and registering it on the NAV Calculator.

{% hint style="success" %}
**The one address every integrator calls:** the NAVCalculator proxy at [`0x54EaD2A1dB7456cA917675Ea8908ec8A997c6214`](https://etherscan.io/address/0x54EaD2A1dB7456cA917675Ea8908ec8A997c6214) — the **same address on every chain**.
{% endhint %}

{% hint style="danger" %}
**The proxy address changed on 2026-08-18.** The previous proxy `0x80eD5cc6cEbAe4fEE1eD8687279aa492A50afa8d` is **abandoned in place** — it still answers, but it is no longer maintained and will drift from the funds' true NAV as new positions and price feeds land only on the new stack. Every address on this page changed with it. Integrators must move to `0x54EaD2A1…`.

This is the redeploy-not-upgrade case described below: `ERC20Default`'s bytecode changed, and it can only be replaced behind a new proxy.
{% endhint %}

{% hint style="warning" %}
**Read addresses from this page at integration time — never pin them in code.** Every address here describes the deployment that is live now, and the whole stack is redeployed behind a **new proxy** rather than upgraded in place whenever a change reaches code inlined into `ERC20Default` (the reason is under the canonical layer below). So the proxy is *stable*, not permanent, and the per-chain counts move with each redeploy. Re-read this page, or the canonical JSON, before trusting a cached address.
{% endhint %}

The machine source of truth is the contracts repo, one file per chain:

[`script/config/deployments/{chainId}.json`](https://github.com/karpatkey/onchain-accounting/tree/main/script/config/deployments) — written by the deploy scripts as each contract lands. The tables below mirror that state; the JSON is canonical if they ever diverge.

***

## Canonical layer (CREATE2 — identical on every chain)

These contracts are deployed deterministically via CREATE2, so each has the **same address on every chain**.

| Contract                       | Address                                                                                                                 | Notes                                                                                                                                                         |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **NAVCalculator proxy (UUPS)** | [`0x54EaD2A1dB7456cA917675Ea8908ec8A997c6214`](https://etherscan.io/address/0x54EaD2A1dB7456cA917675Ea8908ec8A997c6214) | **The address every consumer should call.** Permanent across upgrades. Verbose label reads (`getAccountNavVerbose` / `getAccountPositionsVerbose`) live here. |
| NAVCalculator implementation   | [`0x40e4134849308d53F85A8B685324E2189b13ff7D`](https://etherscan.io/address/0x40e4134849308d53F85A8B685324E2189b13ff7D) | UUPS impl, immutable post-deploy.                                                                                                                             |
| `PriceFeedLib`                 | [`0x713e69954e11c2eD19dBB84950674D6a68DBfebc`](https://etherscan.io/address/0x713e69954e11c2eD19dBB84950674D6a68DBfebc) | External library linked into the implementation.                                                                                                              |
| `NAVRegistryLib`               | [`0x55b6AA29D296Eb2Ee0e7b76686eaA2e479CA3511`](https://etherscan.io/address/0x55b6AA29D296Eb2Ee0e7b76686eaA2e479CA3511) | External library linked into the implementation.                                                                                                              |
| `ERC20Default` balance adapter | [`0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6`](https://etherscan.io/address/0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6) | Created inside `NAVCalculator.initialize()`; identical everywhere and cannot be removed.                                                                      |

\| `AssetKindRegistry` | [`0xf60467a88C2b4d0f46C0c41C3Ba0C74da3d3CCD0`](https://etherscan.io/address/0xf60467a88C2b4d0f46C0c41C3Ba0C74da3d3CCD0) | Same address on every chain. Holds `MANAGER` on the NAV; the contract through which assets are registered, classified and labelled in a single transaction. |

{% hint style="info" %}
**Every address on this page is the same on all 24 chains, `AssetKindRegistry` included.** It is CREATE2-deployed from the canonical deployer, and its only constructor argument is the NAV proxy — itself CREATE2-identical fleet-wide — so the init-code hash matches everywhere and one salt yields one address.
{% endhint %}

{% hint style="warning" %}
**This changed on 2026-08-19, and an earlier version of this page said the opposite.** The registry was originally deployed with plain `CREATE`, so its address followed the deployer's nonce and there were **14 distinct addresses across the 24 chains**, several colliding only by nonce coincidence. Those generation-1 registries are still on-chain but are **wired to nothing**: each NAV was repointed at the CREATE2 address and the old registries' `MANAGER` role was revoked.

If you hold a registry address taken from a per-chain deployment record before that date, **replace it** — do not read from it, and do not expect it to answer. `script/config/deployments/{chainId}.json` now carries the same value for every chain.
{% endhint %}

### NAV-only balance adapters — also one address on every chain

Nine balance adapters take the NAV proxy as their **only** constructor argument. The proxy is itself CREATE2-identical fleet-wide, so each of these has the same init-code hash everywhere and one salt yields one address. They were migrated on 2026-08-19 from plain-CREATE originals, which had up to five distinct addresses each:

| Adapter               | Address                                      | Chains                  |
| --------------------- | -------------------------------------------- | ----------------------- |
| Aave V3 Instances     | `0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b` | 1, 10, 100, 8453, 42161 |
| Aave V3 Safety Module | `0xa356717027B5d4010a7449904545E5aFb355Bdc9` | 1                       |
| Balancer V3 Pools     | `0xbF1785E519067f0471eb5C50A634A7eeE0140A21` | 1, 8453, 42161          |
| Curve Pools           | `0xCf200111050Bc5FFbd5c3e675c598995906c3945` | 1                       |
| Euler Vaults          | `0xCb28C7d1A27e8FB5ea0e1c75Ef62c80722388135` | 1                       |
| Fluid fTokens         | `0x0c312178e10ad15a9DC847d664786146f2C88dcf` | 1, 8453, 42161          |
| Gearbox V3 Markets    | `0x160017c8d50D44A8fA3667419a89BA1183daaF38` | 1                       |
| Morpho Vaults         | `0x64e1ba8B12ee2bFdBDdFd4E0863EdfaaE824C86a` | 1, 42161                |
| Symbiotic Vaults      | `0x599C72cbd3bDe6D992366130009962B4c2Ec5B23` | 1                       |

{% hint style="warning" %}
**One exception: Fluid fTokens on Polygon (137) is NOT at the address above** — it stays at `0x2182Ec30EFF0f213c6662E5b45D6799ff7de5793`. Polygon's live adapter is an older build than the current source tree, so moving it would also have upgraded the contract, which is a behaviour change rather than an addressing fix. Read that one per-chain.
{% endhint %}

{% hint style="info" %}
**Every other balance adapter, and all custom price feeds, are still per-chain — and correctly so.** Their constructors take chain-specific protocol addresses (Morpho's `morpho`, SparkLend's `dataProvider`, …), so their init code genuinely differs per chain and CREATE2 could not give them a shared address. Read those from the deployment records rather than assuming they match across chains.
{% endhint %}

{% hint style="info" %}
Always call the **proxy** address. The implementation may change on upgrade; the proxy survives those upgrades.
{% endhint %}

{% hint style="warning" %}
**"Permanent" means across implementation upgrades — it does not mean the stack can always be migrated in place.** The `ERC20Default` adapter above is minted **inside** `initialize()`, its setter is **set-once** with no admin path, and the registry refuses to remove it by name. So no upgrade, no config transaction and no admin call can repoint a live proxy at a different `ERC20Default`.

That matters because `ERC20Default` prices every wallet balance on every chain, and its bytecode is reachable from shared code that is **`internal`** — inlined at compile time rather than linked at an address. A fix in that shared code therefore only reaches the adapter when the adapter is itself recompiled, which an implementation upgrade cannot do. When such a change ships, the whole stack is deployed afresh behind a **new proxy address** rather than upgraded, and integrators move to it. Treat the proxy as stable, not as immortal, and read it from this page rather than hard-coding it.

So a redeploy is a new proxy whenever `ERC20Default`'s bytecode changes — that is the trigger, not a schedule.

The two external libraries above are **linked at an address** rather than inlined, so their addresses are pinned pre-deploy from a clean whole-program build and change whenever their own compilation output does. **A library pin is only final once the deploy tree is** — any change reaching a library's own source moves it again, including work for a feature deliberately kept *out* of the NAV, since the enabling code may edit the libraries regardless. Take the library addresses from this page or the canonical JSON after the redeploy, never from a pre-deploy figure.
{% endhint %}

***

## Chains

These 7 chains carry the assets registered for the funds' strategies — priced by direct feeds and (where needed) custom price feeds, plus balance adapters. The set registered so far was chosen to cover the first funds' initial strategies — a deliberate superset rather than an exact fit — and it grows per-chain as positions are added, so the counts below vary:

| Chain    | Chain ID | Registered assets | Custom price feeds | Balance adapters (excl. `ERC20Default`) |
| -------- | -------- | ----------------- | ------------------ | --------------------------------------- |
| Ethereum | 1        | 43                | 26                 | 28                                      |
| Arbitrum | 42161    | 11                | 8                  | 7                                       |
| Base     | 8453     | 11                | 4                  | 6                                       |
| Gnosis   | 100      | 11                | 3                  | 3                                       |
| Optimism | 10       | 6                 | 0                  | 2                                       |
| BSC      | 56       | 6                 | 0                  | 0                                       |
| Polygon  | 137      | 5                 | 0                  | 1                                       |

{% hint style="info" %}
**Registered assets** is the NAV's total priced-token count for that chain (`getAssetCount()`) — every token the NAV values, most of them via **direct** feeds. It is therefore larger than the two right-hand columns, which count only the *custom* composite price feeds and the non-`ERC20Default` balance adapters. A **0** in *custom price feeds* means that chain's assets are all priced by direct feeds (Chainlink / Redstone / API3) registered straight on the NAV — no custom composite feed is needed. See [Price feeds](/funds/infrastructure/onchain-accounting/price-feeds.md).
{% endhint %}

{% hint style="info" %}
The NAV **implementation + proxy** (canonical layer only — no registered assets yet) are also live on **17** further chains: Berachain (80094), Ink (57073), Linea (59144), opBNB (204), Sonic (146), Unichain (130), Scroll (534352), X Layer (196), Celo (42220), Avalanche (43114), Mantle (5000), World Chain (480), Monad (143), Plasma (9745), Hemi (43111), 0G (16661), HyperEVM (999). Custom feeds and adapters are registered on each as assets land there.

Each of these still reports `getAssetCount() == 1`: `initialize()` seeds the `ERC20Default` adapter with the chain's **native token** sentinel, which cannot be removed. That single entry is the seed, not a registered strategy asset.
{% endhint %}

***

## Balance adapters (per chain)

Only adapters **currently registered on the NAV Calculator** are listed — each entry below was read back from `getAllAdapters()` on its chain, not from a deployment record. Nine of them (marked ★) are CREATE2-deployed and carry the **same address on every chain**; the rest are plain `CREATE` and are unique per chain, because their constructors take chain-specific protocol addresses.

{% hint style="info" %}
Assisted adapters (ether.fi, Nexus, StakeWise exit) report **`$0` until the position owner feeds its coordinates** — permissionlessly, on-chain, typically via the paired delegatecall assistant. They provide correctness-on-exit coverage, not steady-state value. The assistants themselves are action modules and are **not** registered on the NAV Calculator, so they do not appear below.
{% endhint %}

### Ethereum (1)

| Adapter                           | Address                                                                                                                 |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `AaveUmbrella`                    | [`0x7299757E188000ca576c4197E1Ed1c53A04AC995`](https://etherscan.io/address/0x7299757E188000ca576c4197E1Ed1c53A04AC995) |
| `AaveV3InstancesMeta` ★           | [`0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b`](https://etherscan.io/address/0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b) |
| `AaveV3SafetyModule` ★            | [`0xa356717027B5d4010a7449904545E5aFb355Bdc9`](https://etherscan.io/address/0xa356717027B5d4010a7449904545E5aFb355Bdc9) |
| `BalancerV3GaugesMeta`            | [`0x0e699e07DB653aDc8ca559287038032D227B8947`](https://etherscan.io/address/0x0e699e07DB653aDc8ca559287038032D227B8947) |
| `BalancerV3PoolsMeta` ★           | [`0xbF1785E519067f0471eb5C50A634A7eeE0140A21`](https://etherscan.io/address/0xbF1785E519067f0471eb5C50A634A7eeE0140A21) |
| `CapSavings`                      | [`0xEc605FC2521792f2018dF92Bb5aDBf85EB417cb6`](https://etherscan.io/address/0xEc605FC2521792f2018dF92Bb5aDBf85EB417cb6) |
| `CapStablecoin`                   | [`0x121583E21C671e9B1193FE478ec9dc9D73D73a3F`](https://etherscan.io/address/0x121583E21C671e9B1193FE478ec9dc9D73D73a3F) |
| `CompoundV3CometsMeta`            | [`0xbd8aE779400C2692dd0eF3fC59F11AADEA74B776`](https://etherscan.io/address/0xbd8aE779400C2692dd0eF3fC59F11AADEA74B776) |
| `ConvexCurveLPStakingMeta`        | [`0xa94f66772D1dAfb37c6c941fB59Fe3FB68584632`](https://etherscan.io/address/0xa94f66772D1dAfb37c6c941fB59Fe3FB68584632) |
| `CurveGaugesMeta`                 | [`0x59c2c3D11403A58015ECc96E028Cf863bb50a2cd`](https://etherscan.io/address/0x59c2c3D11403A58015ECc96E028Cf863bb50a2cd) |
| `CurvePoolsMeta` ★                | [`0xCf200111050Bc5FFbd5c3e675c598995906c3945`](https://etherscan.io/address/0xCf200111050Bc5FFbd5c3e675c598995906c3945) |
| `ERC20Default`                    | [`0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6`](https://etherscan.io/address/0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6) |
| `EthenaCooldown`                  | [`0x3F12f2baf245eeF00F6b0C5C2173Df990FFBa796`](https://etherscan.io/address/0x3F12f2baf245eeF00F6b0C5C2173Df990FFBa796) |
| `EtherFiWithdrawalQueueAssisted`  | [`0x5c5c1A98CdF07c9D9B4664933AF98a30e36F3618`](https://etherscan.io/address/0x5c5c1A98CdF07c9D9B4664933AF98a30e36F3618) |
| `EulerVaultsMeta` ★               | [`0xCb28C7d1A27e8FB5ea0e1c75Ef62c80722388135`](https://etherscan.io/address/0xCb28C7d1A27e8FB5ea0e1c75Ef62c80722388135) |
| `FluidFTokensMeta` ★              | [`0x0c312178e10ad15a9DC847d664786146f2C88dcf`](https://etherscan.io/address/0x0c312178e10ad15a9DC847d664786146f2C88dcf) |
| `FluidVaultsMeta`                 | [`0x49d4A9D5D03134e2096E0795ffe678FBE36E5B14`](https://etherscan.io/address/0x49d4A9D5D03134e2096E0795ffe678FBE36E5B14) |
| `GearboxV3MarketsMeta` ★          | [`0x160017c8d50D44A8fA3667419a89BA1183daaF38`](https://etherscan.io/address/0x160017c8d50D44A8fA3667419a89BA1183daaF38) |
| `KelpWithdrawalQueue`             | [`0x136439b0CA2Ff5e9Ec8dC472222248E3A57CeF43`](https://etherscan.io/address/0x136439b0CA2Ff5e9Ec8dC472222248E3A57CeF43) |
| `LidoWithdrawalQueue`             | [`0xD32d7db9c94E0A08ef354D73d618B86b8215A2cF`](https://etherscan.io/address/0xD32d7db9c94E0A08ef354D73d618B86b8215A2cF) |
| `MorphoMarketsMeta`               | [`0x7d00A71EDE9A8EEB4a8B4eA4e3ab08083Ad9a3e5`](https://etherscan.io/address/0x7d00A71EDE9A8EEB4a8B4eA4e3ab08083Ad9a3e5) |
| `MorphoVaultsMeta` ★              | [`0x64e1ba8B12ee2bFdBDdFd4E0863EdfaaE824C86a`](https://etherscan.io/address/0x64e1ba8B12ee2bFdBDdFd4E0863EdfaaE824C86a) |
| `NexusMutualStakingPoolsAssisted` | [`0x25Be749999683381703c7346462503a5EFFFd184`](https://etherscan.io/address/0x25Be749999683381703c7346462503a5EFFFd184) |
| `SparkLend`                       | [`0x9ad8dDaAD5166f2f0Fe4e883aFe78902f8BF0CAE`](https://etherscan.io/address/0x9ad8dDaAD5166f2f0Fe4e883aFe78902f8BF0CAE) |
| `StaderWithdrawalQueue`           | [`0xCB975897AfA295C8fAEB0C33B333C77B95195094`](https://etherscan.io/address/0xCB975897AfA295C8fAEB0C33B333C77B95195094) |
| `StakeWiseV3ExitQueueAssisted`    | [`0x83375fDE808F6388c85fC0A1dA86a69492a20798`](https://etherscan.io/address/0x83375fDE808F6388c85fC0A1dA86a69492a20798) |
| `StakeWiseV3VaultsMeta`           | [`0xc5e92214517314A5C6Ed7f6998C3bdF5810F9cc1`](https://etherscan.io/address/0xc5e92214517314A5C6Ed7f6998C3bdF5810F9cc1) |
| `SymbioticVaultsMeta` ★           | [`0x599C72cbd3bDe6D992366130009962B4c2Ec5B23`](https://etherscan.io/address/0x599C72cbd3bDe6D992366130009962B4c2Ec5B23) |
| `UniswapV3PoolsMeta`              | [`0xb8E23bd85Ce6E15380F3301ae273a54cF502E035`](https://etherscan.io/address/0xb8E23bd85Ce6E15380F3301ae273a54cF502E035) |

### Optimism (10)

| Adapter                 | Address                                                                                                                            |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `AaveV3InstancesMeta` ★ | [`0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b`](https://optimistic.etherscan.io/address/0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b) |
| `CompoundV3CometsMeta`  | [`0xEDDbc540eD724aB3cC95B1C419c6f9D6348a373b`](https://optimistic.etherscan.io/address/0xEDDbc540eD724aB3cC95B1C419c6f9D6348a373b) |
| `ERC20Default`          | [`0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6`](https://optimistic.etherscan.io/address/0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6) |

### Gnosis (100)

| Adapter                        | Address                                                                                                                  |
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| `AaveV3InstancesMeta` ★        | [`0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b`](https://gnosisscan.io/address/0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b) |
| `ERC20Default`                 | [`0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6`](https://gnosisscan.io/address/0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6) |
| `StakeWiseV3ExitQueueAssisted` | [`0xE1e163663961237C0955b665188864f0fD281020`](https://gnosisscan.io/address/0xE1e163663961237C0955b665188864f0fD281020) |
| `StakeWiseV3VaultsMeta`        | [`0x8cbAFEC5745AF6727b7be0829e507f58b3b3ce0d`](https://gnosisscan.io/address/0x8cbAFEC5745AF6727b7be0829e507f58b3b3ce0d) |

### Polygon (137)

| Adapter            | Address                                                                                                                    |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------- |
| `ERC20Default`     | [`0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6`](https://polygonscan.com/address/0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6) |
| `FluidFTokensMeta` | [`0x2182Ec30EFF0f213c6662E5b45D6799ff7de5793`](https://polygonscan.com/address/0x2182Ec30EFF0f213c6662E5b45D6799ff7de5793) |

### Base (8453)

| Adapter                 | Address                                                                                                                 |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `AaveV3InstancesMeta` ★ | [`0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b`](https://basescan.org/address/0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b) |
| `BalancerV3GaugesMeta`  | [`0xBEF120B82415F113F8997Ff1C17360c678359187`](https://basescan.org/address/0xBEF120B82415F113F8997Ff1C17360c678359187) |
| `BalancerV3PoolsMeta` ★ | [`0xbF1785E519067f0471eb5C50A634A7eeE0140A21`](https://basescan.org/address/0xbF1785E519067f0471eb5C50A634A7eeE0140A21) |
| `CompoundV3CometsMeta`  | [`0xc43D890F5af60E4010266A0AF95b39C31e5c5Abe`](https://basescan.org/address/0xc43D890F5af60E4010266A0AF95b39C31e5c5Abe) |
| `ERC20Default`          | [`0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6`](https://basescan.org/address/0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6) |
| `FluidFTokensMeta` ★    | [`0x0c312178e10ad15a9DC847d664786146f2C88dcf`](https://basescan.org/address/0x0c312178e10ad15a9DC847d664786146f2C88dcf) |
| `MorphoMarketsMeta`     | [`0x007fedC0Cd051A757B6E59eE4b4d620231CB2a56`](https://basescan.org/address/0x007fedC0Cd051A757B6E59eE4b4d620231CB2a56) |

### Arbitrum (42161)

| Adapter                 | Address                                                                                                                |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `AaveV3InstancesMeta` ★ | [`0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b`](https://arbiscan.io/address/0x04Ba6789B4AD5D6CF63Ec9cc301c13F6a8A0210b) |
| `BalancerV3GaugesMeta`  | [`0x9F8ef612cd2F71a76FCDAcc2820f332f74415705`](https://arbiscan.io/address/0x9F8ef612cd2F71a76FCDAcc2820f332f74415705) |
| `BalancerV3PoolsMeta` ★ | [`0xbF1785E519067f0471eb5C50A634A7eeE0140A21`](https://arbiscan.io/address/0xbF1785E519067f0471eb5C50A634A7eeE0140A21) |
| `CompoundV3CometsMeta`  | [`0xFB12e2105287604013dAdee87597F8b80390fc82`](https://arbiscan.io/address/0xFB12e2105287604013dAdee87597F8b80390fc82) |
| `ERC20Default`          | [`0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6`](https://arbiscan.io/address/0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6) |
| `FluidFTokensMeta` ★    | [`0x0c312178e10ad15a9DC847d664786146f2C88dcf`](https://arbiscan.io/address/0x0c312178e10ad15a9DC847d664786146f2C88dcf) |
| `MorphoMarketsMeta`     | [`0x2a4d53eF5F149199e2958ce8F29AC85c9072589A`](https://arbiscan.io/address/0x2a4d53eF5F149199e2958ce8F29AC85c9072589A) |
| `MorphoVaultsMeta` ★    | [`0x64e1ba8B12ee2bFdBDdFd4E0863EdfaaE824C86a`](https://arbiscan.io/address/0x64e1ba8B12ee2bFdBDdFd4E0863EdfaaE824C86a) |

### BSC (56)

| Adapter        | Address                                                                                                                |
| -------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `ERC20Default` | [`0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6`](https://bscscan.com/address/0x4Bc39Dce61245F5A63189d1FA03E6D76646f1EE6) |

★ = CREATE2, same address on every chain. See [the fleet-wide adapter table](#nav-only-balance-adapters-also-one-address-on-every-chain) above.

***

## Custom price feeds (per chain)

These are plain `CREATE` deployments and their addresses are unique per chain — each feed's constructor takes chain-specific token and oracle addresses, so CREATE2 could not give them a shared address. Chains not listed below have no custom price feeds; their assets are priced by direct feeds registered straight on the NAV.

Every entry below was read back from `getPriceFeeds(asset)` on its chain, so this table lists the feeds the NAV **actually uses**, not merely ones that were deployed.

### Ethereum (1)

| Token     | Feed address                                                                                                            |
| --------- | ----------------------------------------------------------------------------------------------------------------------- |
| ETHx      | [`0x21BAd3b9B08D256639099f6932d93684e1a3C759`](https://etherscan.io/address/0x21BAd3b9B08D256639099f6932d93684e1a3C759) |
| LDO       | [`0x1c876c765e7E0A60Fe6C637B6fef93415e6a60AF`](https://etherscan.io/address/0x1c876c765e7E0A60Fe6C637B6fef93415e6a60AF) |
| NXM       | [`0x8D5B6d7aD70a71663a1d7A0552E904b1DDBF1dC3`](https://etherscan.io/address/0x8D5B6d7aD70a71663a1d7A0552E904b1DDBF1dC3) |
| RWIV      | [`0x668738cdCA8ab586d5BBA7D0a41441b84B42C4B4`](https://etherscan.io/address/0x668738cdCA8ab586d5BBA7D0a41441b84B42C4B4) |
| ankrETH   | [`0x410004373F97fc53145BCD3D72D94BF0BEC69148`](https://etherscan.io/address/0x410004373F97fc53145BCD3D72D94BF0BEC69148) |
| eETH      | [`0xc81C4777a2A6CA69AE42558cB22e821d5114FdAF`](https://etherscan.io/address/0xc81C4777a2A6CA69AE42558cB22e821d5114FdAF) |
| ezETH     | [`0x692b06246bA895D2b7e82c635Cec6F2C3B32302b`](https://etherscan.io/address/0x692b06246bA895D2b7e82c635Cec6F2C3B32302b) |
| lsETH     | [`0x746749660345B1EcB570Af44111eb91a5A8e9d45`](https://etherscan.io/address/0x746749660345B1EcB570Af44111eb91a5A8e9d45) |
| osETH     | [`0x6470d36F9daC1e52993FA7690f7561773ca79D6C`](https://etherscan.io/address/0x6470d36F9daC1e52993FA7690f7561773ca79D6C) |
| rETH      | [`0x28998b0BE5Dc06525FB0d5585Dc7eD7cEa448DF7`](https://etherscan.io/address/0x28998b0BE5Dc06525FB0d5585Dc7eD7cEa448DF7) |
| rsETH     | [`0x39d4D331BbEd4c3Eca4c80f7F674e3268b93b6c3`](https://etherscan.io/address/0x39d4D331BbEd4c3Eca4c80f7F674e3268b93b6c3) |
| sGHO      | [`0x6c258D6B0e7b934cA96e8eA0CF5543FEF045B8c2`](https://etherscan.io/address/0x6c258D6B0e7b934cA96e8eA0CF5543FEF045B8c2) |
| sUSDS     | [`0x1581d5Cecb71fEca102C61572924CC33859714DA`](https://etherscan.io/address/0x1581d5Cecb71fEca102C61572924CC33859714DA) |
| sUSDe     | [`0x901cBc08fAc7296200cF69F27a904D1d218c8D90`](https://etherscan.io/address/0x901cBc08fAc7296200cF69F27a904D1d218c8D90) |
| syrupUSDC | [`0xB88B09725A2d8c3D05f77d0D4225b5DAE673Dfeb`](https://etherscan.io/address/0xB88B09725A2d8c3D05f77d0D4225b5DAE673Dfeb) |
| wARS      | [`0x2e4fFfDB6e1508F3d9A8B9b9761076F14Ffdbceb`](https://etherscan.io/address/0x2e4fFfDB6e1508F3d9A8B9b9761076F14Ffdbceb) |
| wNXM      | [`0x9e032A4536Bd09cF253ec1097d1c4D9540d4273A`](https://etherscan.io/address/0x9e032A4536Bd09cF253ec1097d1c4D9540d4273A) |
| weETH     | [`0x9E435B56E0e210342Db30d30cafeb5855F73c5A4`](https://etherscan.io/address/0x9E435B56E0e210342Db30d30cafeb5855F73c5A4) |
| wstETH    | [`0x1Da18b841caB327C850854dA964D08F1F0ef7EA6`](https://etherscan.io/address/0x1Da18b841caB327C850854dA964D08F1F0ef7EA6) |

### Gnosis (100)

| Token | Feed address                                                                                                             |
| ----- | ------------------------------------------------------------------------------------------------------------------------ |
| osGNO | [`0xd0e852a932490290B5bAACe8DafF04D9ec19c164`](https://gnosisscan.io/address/0xd0e852a932490290B5bAACe8DafF04D9ec19c164) |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kpk.io/funds/infrastructure/onchain-accounting/deployment-addresses.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
