# Deployment matrix

Chamber's contracts are deployed on seven public chains. The Guard System, SDK, and subgraph support is not uniform across all of them — which protocols a vault can use, and which assets it can hold, depends on the chain.

## Supported chains

| Chain    | Chain ID | Notes                                                                                                                    |
| -------- | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| Ethereum | 1        |                                                                                                                          |
| Optimism | 10       |                                                                                                                          |
| Polygon  | 137      |                                                                                                                          |
| Base     | 8453     |                                                                                                                          |
| Arbitrum | 42161    |                                                                                                                          |
| Plasma   | 9745     |                                                                                                                          |
| HyperEVM | 999      | Hyperliquid's EVM chain. Perps-native asset support via Hyperliquid guards (see [guard system](/build/guard-system.md)). |

For the canonical list of deployed contract addresses per chain, see [contract addresses](/build/contract-addresses.md).

## What differs between chains

Not every chain supports every protocol. Each deployment ships with its own set of:

* **Contract guards** — which protocols a vault can call (Aave, Uniswap, GMX, Velodrome, etc.). A protocol that doesn't exist on a chain obviously isn't supported; a protocol that does exist may still be absent if a guard hasn't been written or whitelisted for it.
* **Asset guards** — which asset types a vault can hold (plain ERC20, Aave aTokens, Uniswap V3 positions, GMX perps, etc.).
* **Asset allowlist** — the specific token addresses and price feeds that are approved for deposit/trade on that chain.

A vault deployed on Base cannot hold positions on Arbitrum. Chamber does not do cross-chain accounting inside a single vault.

See [chain capabilities matrix](/manage/chain-capabilities.md) for the manager-facing version of this (which protocols are available on which chain). For the full list of guards, see the [guard system](/build/guard-system.md) page.

## Checking support at runtime

Rather than hard-coding protocol support in your integration, query it onchain:

* `PoolFactory.getAssetGuard(assetAddress)` — returns the asset guard for a given token. Zero address means the asset is not supported.
* `PoolFactory.getContractGuard(contractAddress)` — returns the contract guard for a given protocol destination. Zero address means calls to that address will revert with `dh23` at the vault entrypoint.
* `PoolManagerLogic.isSupportedAsset(address)` and `isDepositAsset(address)` — check per-vault support and deposit eligibility.

These are the source of truth. Governance can add or swap guards at any block, so cached allowlists can go stale.

## SDK chain coverage

The [`@dhedge/v2-sdk`](/build/sdk.md) exposes a `Network` enum covering the supported EVM chains. Coverage moves with releases — pin a version and check the enum on it.

## Subgraph chain coverage

The [subgraph](/build/subgraph.md) is deployed per chain. Each chain has its own GraphQL endpoint. The hosted chains are the same set of EVM chains listed above; check the subgraph repo for the current endpoint per network.

## See also

* [Contract addresses](/build/contract-addresses.md) — canonical per-chain addresses
* [Guard system](/build/guard-system.md) — how to enumerate supported protocols and assets
* [Chain capabilities matrix](/manage/chain-capabilities.md) — manager-facing view of what's available where


---

# Agent Instructions: 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:

```
GET https://docs.chamberfi.com/build/deployment-matrix.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
