Интеграция с ZeroDev (smart accounts)
ZeroDev — инфраструктура для smart accounts на базе Kernel — модульной реализации ERC-4337. Kernel поддерживает плагины (validators, executors, hooks), что делает его одним из наиболее гибких smart account frameworks. ZeroDev предоставляет bundler, paymaster и SDK для работы с Kernel аккаунтами.
Kernel — модульная архитектура
Kernel разделяет логику на:
- Validators — кто может подписывать (EOA, multisig, passkey, session key)
- Executors — что можно делать (custom execution logic)
- Hooks — pre/post выполнение (spending limits, access control)
Это позволяет менять логику аутентификации без деплоя нового кошелька.
Интеграция через ZeroDev SDK
import { createKernelAccount, createKernelAccountClient, createZeroDevPaymasterClient } from "@zerodev/sdk";
import { signerToEcdsaValidator } from "@zerodev/ecdsa-validator";
import { ENTRYPOINT_ADDRESS_V07, bundlerActions } from "permissionless";
import { http, createPublicClient } from "viem";
import { sepolia } from "viem/chains";
const publicClient = createPublicClient({
chain: sepolia,
transport: http(SEPOLIA_RPC_URL),
});
// Создание ECDSA validator (стандартная EOA подпись)
const ecdsaValidator = await signerToEcdsaValidator(publicClient, {
signer: walletClient,
entryPoint: ENTRYPOINT_ADDRESS_V07,
});
// Создание Kernel Account
const account = await createKernelAccount(publicClient, {
plugins: { sudo: ecdsaValidator },
entryPoint: ENTRYPOINT_ADDRESS_V07,
});
// Создание клиента с paymaster
const kernelClient = createKernelAccountClient({
account,
chain: sepolia,
entryPoint: ENTRYPOINT_ADDRESS_V07,
bundlerTransport: http(BUNDLER_RPC),
middleware: {
sponsorUserOperation: async ({ userOperation }) => {
const paymasterClient = createZeroDevPaymasterClient({
chain: sepolia,
entryPoint: ENTRYPOINT_ADDRESS_V07,
transport: http(PAYMASTER_RPC),
});
return paymasterClient.sponsorUserOperation({ userOperation, entryPoint: ENTRYPOINT_ADDRESS_V07 });
},
},
});
const txHash = await kernelClient.sendTransaction({
to: TARGET_ADDRESS,
data: calldata,
});
Session Keys через ZeroDev
Session keys — killer feature Kernel. Пользователь подписывает policy один раз, приложение работает автономно в рамках этой policy:
import { signerToSessionKeyValidator, ParamOperator } from "@zerodev/session-key";
// Создание session key validator с ограниченными правами
const sessionKeyValidator = await signerToSessionKeyValidator(publicClient, {
signer: sessionKeySigner, // временный ключ (хранится в приложении)
validatorData: {
paymaster: PAYMASTER_ADDRESS,
permissions: [
{
target: GAME_CONTRACT,
functionAbi: MOVE_ABI,
valueLimit: parseEther("0.001"), // max 0.001 ETH за вызов
args: [
{
offset: 0,
condition: ParamOperator.LESS_THAN,
value: pad(toHex(100n)), // первый аргумент < 100
},
],
},
],
},
});
Passkey validator
ZeroDev поддерживает WebAuthn passkeys как validator — биометрическая подпись без private key:
import { toPasskeyValidator, toWebAuthnKey, WebAuthnMode } from "@zerodev/passkey-validator";
// Регистрация passkey
const webAuthnKey = await toWebAuthnKey({
passkeyName: "My Account",
passkeyServerUrl: PASSKEY_SERVER_URL,
mode: WebAuthnMode.Register,
});
const passkeyValidator = await toPasskeyValidator(publicClient, {
webAuthnKey,
entryPoint: ENTRYPOINT_ADDRESS_V07,
});
ZeroDev интегрируется за 1-2 недели. Главное преимущество перед другими AA провайдерами — зрелость session keys и passkey поддержка из коробки. Подходит для игр, trading приложений — везде где нужны частые транзакции без постоянного подтверждения пользователем.







