Guide

Getting started

Stand up a Viem client on an EIP-8130-enabled chain, register the chain id, and resolve canonical deployment addresses. Then you are ready to create an account and send a transaction.

Install

EIP-8130 helpers live under a dedicated experimental entrypoint; there is no .extend() client decorator. Actions take a Viem Client as their first argument.

Importsts
import {
newSmartAccount8130,
sendCalls8130,
estimateGas8130,
} from 'viem/experimental/eip8130'

Client setup

Configure a client for your 8130-enabled chain and call register8130Chains so routing helpers know the chain speaks native AA.

Vibenet clientts
import { createClient, http, defineChain } from 'viem'
import { register8130Chains } from 'viem/experimental/eip8130'
export const vibenet = defineChain({
id: 84_538_453,
name: 'Vibenet Devnet',
nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
rpcUrls: { default: { http: ['https://rpc.vibes.base.org'] } },
})
export const client = createClient({ chain: vibenet, transport: http() })
// Mark the chain as EIP-8130 enabled (empty by default).
register8130Chains(vibenet.id)

Deployment addresses

Protocol contracts are deployed deterministically and are identical on every chain running the same bytecode. Resolve them per chain id:

Canonical deploymentts
import {
getEip8130Deployment,
canonicalEip8130Deployment,
} from 'viem/experimental/eip8130'
const deployment =
getEip8130Deployment(84_538_453) ?? canonicalEip8130Deployment
deployment.accountConfiguration // factory + actor-config registry
deployment.accounts.upgradeable // default smart-account impl
deployment.accounts.default // EIP-7702 delegate target
deployment.accounts.defaultHighRate // immutable / high-throughput
deployment.accounts.erc4337 // portable ERC-4337 impl
deployment.authenticators.p256
deployment.policies?.manager // example session PolicyManager

Account implementations

  • UpgradeableAccount: default smart account behind an ERC-1967 proxy.
  • CanonicalHighRatePayerAccount: immutable, ERC-1167 proxy. prefer for throughput-oriented accounts.
  • DefaultAccount: bare building block; EIP-7702 delegation target for EOAs.
  • BackwardsCompatible4337Account portable path for non-native chains via bundlers.

Fund and explore

On Vibenet, use the faucet from the Vibenet page or vibes.base.org.