What the Registry Stores
The Registry holds three logical mappings:| Mapping | Purpose | Example |
|---|---|---|
| Named addresses | Maps human-readable identifiers to contract addresses | "RiskEngine" → 0x5BeffE679B... |
| Underlying → vToken | Maps each asset’s underlying token to its corresponding vToken | USDC → vUSDC |
| Owner → accounts | Maps each user address to the list of their Smart Accounts | 0xUser → [0xAccount1, 0xAccount2] |
| Mapping | Purpose | Example |
|---|---|---|
| (target, selector) → allowed | Whether a specific external contract function is allowlisted for execute() | (Uniswap V2 Router, swapExactTokensForTokens) → true |
How Integrators Use It
In practice, an integration starts with:Why This Pattern
Consider the alternative - hardcoding every address in every integration:- Upgrades break the integration. If Vanna redeploys the Risk Engine to fix a bug, every hardcoded integration becomes wrong.
- New assets require integrations to change. When a new vToken is added, every dashboard that wants to show it has to be updated.
- Multi-chain becomes painful. Each chain has different addresses. An integration that supports Base, Arbitrum, and Optimism would need three constants per contract.
Account Discovery
A wallet integrating Vanna wants to show all of a user’s open Smart Accounts. The Registry exposes this directly:What the Registry Doesn’t Do
- It doesn’t hold value. No tokens, no balances. It’s a pure metadata contract.
- It doesn’t execute operations. It’s read-only from an integrator’s perspective; only privileged roles (governance, deployment scripts) write to it.
- It doesn’t make access-control decisions. The Controller allowlist on EVM happens to live in the Registry, but the decision to allow is governance’s; the Registry merely stores the result.
Privileged Operations
The Registry has admin-gated functions for registering new contracts, updating addresses, and managing the allowlist. These are governance operations and are not part of the integrator surface. The complete list and access control model is in the Security overview.Chain Support
The Registry pattern is identical on every chain - the same lookup functions exist on Soroban and EVM. Only the addresses differ. The canonical Registry addresses for each chain are published in the Address Registry resource page.Related
- Address Registry resource - the canonical list of deployed addresses per chain
- Registry reference - the function-level interface
- Protocol Architecture - how the Registry sits in the dependency graph
- Smart Accounts - the per-user contracts the Registry tracks

