Choosing an infra provider
ZeroDev is compatible with any account abstraction infra provider. Check out these guides for integrating with a specific provider:
Read on to learn how to integrate with a custom provider.
Interop with Bundlers
For the most part, bundlers are perfectly interoperable between different providers. You simply specify the bundler RPC when you construct a Kernel client:
import { createKernelAccountClient } from "@zerodev/sdk";
import { http } from "viem";
const kernelClient = createKernelAccountClient({
// other options...
bundlerTransport: http("BUNDLER_RPC"),
});
Interop with Paymasters
If the Paymaster supports ERC-7677 paymaster methods, you can simply pass the Paymaster RPC URL to createZeroDevPaymasterClient
:
import { createKernelAccountClient, createZeroDevPaymasterClient } from "@zerodev/sdk"
const paymasterClient = createZeroDevPaymasterClient({
chain,
transport: http('PAYMASTER_RPC'),
})
const kernelClient = createKernelAccountClient({
// other options...
paymaster: paymasterClient
})
To integrate with a paymaster which doesn't support ERC-7677, you need to implement the getPaymasterData
function:
const kernelClient = createKernelAccountClient({
// other options...
paymaster: {
getPaymasterData(userOperation) {
// return `paymasterAndData` for `EntryPoint 0.6` or `paymaster` and `paymasterData` for `EntryPoint 0.7`
}
}
})