Інтеграція з ZeroDev (смарт-рахунки)
ZeroDev — інфраструктура для смарт-рахунків на базі Kernel — модульної реалізації ERC-4337. Kernel підтримує плагіни (validators, executors, hooks), що робить його одним з найбільш гнучких смарт-рахунок фреймворків. ZeroDev надає bundler, paymaster та SDK для роботи з Kernel рахунками.
Kernel — модульна архітектура
Kernel розділяє логіку на:
- Validators — хто може підписувати (EOA, multisig, passkey, session key)
- Executors — що можна робити (кастомна execution логіка)
- 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"), // макс 0.001 ETH за вызов
args: [
{
offset: 0,
condition: ParamOperator.LESS_THAN,
value: pad(toHex(100n)), // перший аргумент < 100
},
],
},
],
},
});
Passkey validator
ZeroDev підтримує WebAuthn passkeys як validator — біометрична підпис без приватного ключа:
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 застосунків — везде де потрібні частові транзакції без постійного підтвердження користувачем.







