Avok ships a chain registry. Your app does not declare a list of chains; it picks one per send from
the registry, and supplies its own RPC endpoints for production.
The registry
@avokjs/contracts carries a profile for every supported chain: the EIP-7702 delegate address, the
fee-token list, capability flags, and a default RPC. “Supported” is concrete. It means the Avok
wallet implementation is deployed there. A chain that is not in the registry has no profile, so a
send to it throws rather than guessing.
EVM wallets are smart EOAs through EIP-7702; Solana is a first-class second rail. To add a chain, you
deploy the Avok contract there and add a profile to @avokjs/contracts.
You pick a chain per send
There is no “register your chains” step. Each send names its chain: chainId on EVM, cluster on
Solana. The value must be a registry chain, so an app opts into whichever chains it actually sends on
by using their ids.
RPC endpoints
You do not have to supply an RPC for the SDK to run. Every registry chain has a public default, and
resolution is simple:
The public defaults are development-only. They are rate-limited, carry no SLA, and the public
Solana endpoints reject or hang on getTokenAccountsByOwner, which makes SPL balances read zero. Set
rpcUrls before production.
An RPC is a trust boundary, not just a data source. It answers “what address does this name resolve
to,” so a dishonest endpoint can redirect a user’s funds. That is why Avok never picks one for you.
Overrides are per chain, so you point the chains you use at endpoints you trust and leave the rest on
defaults:
You have three ways to supply an endpoint, none of which needs Avok to run anything: your own
provider URL (a domain-allowlisted key is safe in a browser bundle), a proxy you host that keeps the
key server-side, or a URL your end user supplies.
isPublicDefaultRpc() reports whether a chain is still on a public default, so your app can warn “you
are on a public dev endpoint” instead of degrading silently.
Fee tokens
Each chain profile also lists the fee tokens it supports for sponsored sends. A fee token is checked
against the target chain’s registry and rejected if it means nothing there, since an address that is
USDC on one chain is not USDC on another. See Sponsorship.