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 on the viem fork; there is no .extend() client decorator. Actions take a Viem Client as their first argument.

Installbash
bun add "viem@github:chunter-cb/viem#feat/eip-8130"
Importsts
import { newSmartAccount8130, sendCalls8130 } from 'viem/experimental/eip8130'
import { createPayerClient } from 'viem/experimental/eip8168'

Client setup

Configure a client for your 8130-enabled chain and call register8130Chains so routing helpers know the chain speaks native AA. Use the public RPC https://rpc.vibes.base.org for reads and eth_sendRawTransaction.

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

Resolve addresses with getEip8130Deployment(chainId). Use that chain's deployment only: do not fall back to another chain's policy or account addresses.

Per-chain deploymentts
import { getEip8130Deployment } from 'viem/experimental/eip8130'
const deployment = getEip8130Deployment(client.chain.id)
if (!deployment?.policies) {
throw new Error(`No EIP-8130 policies for chain ${client.chain.id}`)
}
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 // PolicyManager
deployment.policies.sessionPolicy // SessionPolicy

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.