Supported Ecosystems

Each adapter implements the subset of the 17 capability interfaces that its blockchain supports. Summary counts match the capability matrix below: one checkmark per implemented factory in the adapter's CapabilityFactoryMap, plus EVM-only RWA capabilities available as sub-path exports.

AdapterNetworksCapabilitiesStatus
EVMEthereum, Polygon, Arbitrum, Base, Optimism, ...17/17Production
StellarStellar Public, Stellar Testnet13/17Production
PolkadotPolkadot Hub, Moonbeam, Moonriver13/17 (EVM path)Production
MidnightMidnight Testnet12/17Production
SolanaDevnet, Testnet, Mainnet Beta12/17 (scaffolding)In Progress

EVM (@openzeppelin/adapter-evm)

The EVM adapter targets Ethereum and all EVM-compatible chains. It implements all 17 capabilities and supports all 5 profiles. Standard createRuntime profiles expose 14 capabilities (including nameResolution); the three RWA/token-standard capabilities (erc3643, erc4626, irs) are available as dedicated sub-path exports for opt-in composition.

Supported Networks: Ethereum Mainnet, Sepolia, Polygon, Polygon Amoy, Arbitrum One, Arbitrum Sepolia, Base, Base Sepolia, Optimism, Optimism Sepolia, and more.

Profiles Supported: Declarative, Viewer, Transactor, Composer, Operator

Highlights

  • Name Resolution: Forward and reverse ENS resolution via viem and the Universal Resolver. Network-scoped, with optional mainnet-L1 miss-fallback for testnets.
  • Contract Loading: Fetches ABIs from Etherscan and Sourcify with automatic fallback ordering. Detects proxy contracts and resolves implementation ABIs.
  • Type Mapping: Maps all Solidity types (uint256, address, bytes32, tuples, dynamic arrays) to UI-friendly form fields.
  • Execution Strategies: Pluggable EOA (direct wallet signing via Wagmi/Viem) and OpenZeppelin Relayer strategies.
  • Wallet Integration: Built on Wagmi and RainbowKit with React context providers and hooks.
  • Access Control: Full role management including grantRole, revokeRole, renounceRole, ownership transfers, and role enumeration.
  • RWA / Token Standards (sub-path exports): erc3643 (T-REX permissioned tokens), erc4626 (tokenized vaults), and irs (ONCHAINID / Identity Registry Storage) for regulated-asset workflows.

Configuration Resolution

The EVM adapter resolves RPC URLs and explorer API keys through a layered priority system:

  1. User-provided config: settings from the end-user (stored in localStorage)
  2. Application config: deployer settings via app.config.json or environment variables
  3. Default config: values from the NetworkConfig the adapter was instantiated with

Internal Architecture

@openzeppelin/adapter-evm is a thin public layer that re-exports capabilities from @openzeppelin/adapter-evm-core. The core package centralizes all reusable EVM implementations:

Core ModuleResponsibility
ABI loadingEtherscan / Sourcify fetching, proxy detection
Schema transformationABI → ContractSchema conversion
Input/output conversionSolidity type ↔ form field mapping
Query helpersPublic client creation, view function calls
Transaction executionCalldata formatting, strategy dispatch
Wallet infrastructureWagmi config, RainbowKit setup, session management
RelayerRelayer SDK integration, network service forms
Access ControlRole queries, grant/revoke operations

Stellar (@openzeppelin/adapter-stellar)

The Stellar adapter provides a complete Soroban implementation with 13 of 17 capabilities (all profile capabilities except nameResolution and the EVM-only RWA trio).

Supported Networks: Stellar Public, Stellar Testnet

Profiles Supported: Declarative, Viewer, Transactor, Composer, Operator

Highlights

  • Contract Loading: Loads Soroban contract specifications and transforms them into the shared ContractSchema.
  • Type Mapping: Maps Soroban types (Address, i128, Bytes, Vec<T>, Map<K,V>) to form fields with input validation.
  • Execution: Parses form values into Soroban ScVal arguments. Supports both EOA and Relayer execution strategies.
  • Wallet Integration: Uses Stellar Wallets Kit with React UI providers and hooks.
  • Access Control: First-class support for Ownable and AccessControl patterns, including role queries, ownership actions, and optional indexer-backed historical lookups.
  • SAC Support: Detects Stellar Asset Contracts and dynamically loads their specifications.

Polkadot (@openzeppelin/adapter-polkadot)

The Polkadot adapter targets EVM-compatible parachains and relay chains, reusing the shared EVM core for most capabilities.

Supported Networks: Polkadot Hub, Kusama Hub, Moonbeam, Moonriver

Profiles Supported: Declarative, Viewer, Transactor, Composer (EVM execution path)

Highlights

  • EVM Core Reuse: Delegates ABI loading, queries, transaction execution, and wallet infrastructure to adapter-evm-core.
  • Polkadot Metadata: Exposes relay chain associations and network category distinctions.
  • React Wallet Provider: Ships wallet provider utilities for consumer applications.
  • Future Substrate Path: Structured to support native Substrate/Wasm modules alongside the current EVM path.

Non-EVM execution paths (native Substrate) are not yet implemented. Requesting a profile that requires execution on a non-EVM network will throw UnsupportedProfileError.

Midnight (@openzeppelin/adapter-midnight)

The Midnight adapter enables browser-based interaction with Midnight contracts using zero-knowledge proof workflows. It implements 12 of 17 capabilities: all profile capabilities except nameResolution, accessControl, and the EVM-only RWA trio (erc3643, erc4626, irs).

Supported Networks: Midnight Testnet

Highlights

  • Artifact Ingestion: Supports ZIP-based artifact bundles for contract evaluation and ZK proof orchestration entirely in the browser.
  • Lace Wallet: Integrates with the Lace wallet for signing and execution.
  • Runtime Secrets: Handles organizer-only secrets as in-memory execution-time inputs, not persisted configuration.
  • Lazy Polyfills: Midnight-specific browser polyfills are lazy-loaded so they don't affect other ecosystem bundles.
  • Export Bootstrap: Supports exporting self-contained applications that bundle Midnight contract artifacts for standalone use.

Build Requirements

Midnight requires host-provided plugin factories for WASM and top-level await:

import { loadOpenZeppelinAdapterViteConfig } from '@openzeppelin/adapters-vite';

const adapterConfigs = await loadOpenZeppelinAdapterViteConfig({
  ecosystems: ['midnight'],
  pluginFactories: {
    midnight: { wasm, topLevelAwait },
  },
});

Solana (@openzeppelin/adapter-solana)

The Solana adapter is scaffolding only and is not yet production-ready.

The Solana package defines the package boundaries and network configurations for a future adapter. Its CapabilityFactoryMap currently registers 12 of 17 capabilities (Tier 1 through relayer); nameResolution, accessControl, and the EVM-only RWA trio are absent. Tier 2–3 factories exist as scaffolding stubs and are not production-ready.

  • Solana network configurations (Devnet, Testnet, Mainnet Beta)
  • Package structure and sub-path export scaffolding
  • Tier 1 capability implementations (Addressing, Explorer, NetworkCatalog, UiLabels) plus stub Tier 2–3 factories

The Operator profile is explicitly unsupported. Calling createRuntime('operator', ...) throws UnsupportedProfileError because accessControl factories are not yet implemented.

Capability Support Matrix

CapabilityEVMStellarPolkadotMidnightSolana
Addressing
Explorer
NetworkCatalog
UiLabels
NameResolution----
ContractLoading
Schema
TypeMapping
Query
Execution✅ (EVM)
Wallet
UiKit
Relayer
AccessControl--
ERC3643✅†----
ERC4626✅†----
IRS✅†----

† EVM-only. Available via @openzeppelin/adapter-evm/erc3643, /erc4626, and /irs sub-path exports; not assembled into standard profile runtimes.

Counts are derived from each adapter's CapabilityFactoryMap in openzeppelin-adapters (profiles/shared*.ts), plus the three EVM RWA sub-path factories. Midnight is missing nameResolution, accessControl, and the RWA trio (12 ✅). Solana registers stub Tier 2–3 factories but remains scaffolding.