Проблема: користувач платить газ зі свого гаманця — бар'єр для масового прийняття
Кожного разу, коли новий користувач хоче mint NFT або обміняти токен у вашому dApp, він повинен мати ETH на гаманці для gas. Це відсікає до 80% аудиторії, яка не хоче морочитися з купівлею нативного токена. Alchemy Account Kit вирішує це завдання через Account Abstraction (ERC-4337): користувач може платити за газ у токенах, або ви спонсоруєте gas через Paymaster.
Ми впровадили Account Kit для кількох DeFi-протоколів та ігор. Результат: onboarding скорочується з 5 до 1 кліка, а конверсія реєстрацій зростає на 35-40%. Нижче розберемо, як ми це робимо — з кодом, таблицями та типовими підводними каменями.
Компоненти Alchemy Account Kit
Light Account — мінімалістична реалізація ERC-4337. Дешевша в деплої та використанні, ніж Safe. Підтримує: single owner, session keys, EIP-1271.
Modular Account — розширюваний акаунт на базі ERC-6900 (Modular Smart Account). Дозволяє додавати плагіни: multisig, spending limits, соціальне відновлення.
Gas Manager (Paymaster) — спонсорування газу з політиками: за сумою, за кількістю операцій, за whitelist адрес контрактів.
Alchemy Bundler — вбудований bundler з SLA 99.9% та підтримкою всіх major EVM ланцюгів.
Що вибрати: Light Account чи Modular Account?
| Характеристика | Light Account | Modular Account |
|---|---|---|
| Стандарт | ERC-4337 базовий | ERC-6900 (модульний) |
| Кастомізація | мінімальна, тільки owner | плагіни: multisig, spending limits, social recovery |
| Газ | дешевше (один contract) | дорожче, але гнучкіше |
| Коли брати | MVP, прості застосунки | складна логіка, enterprise |
Чому варто використовувати вбудований Alchemy Bundler?
Бандлер — найкритичніший компонент: він агрегує user operations, підписує та відправляє в мережу. Alchemy запускає власний bundler з SLA 99.9% та підтримкою всіх major L2 (Polygon, Arbitrum, Optimism, Base). Після налаштування синхронізація з мережею займає хвилини, а не дні. Для продакшену ми рекомендуємо саме його — так ви отримуєте гарантію uptime та пріоритетну підтримку.
Як налаштувати Gas Manager (Paymaster)?
Gas Manager дозволяє спонсорувати газ за допомогою політик. В Alchemy Dashboard ви створюєте policy, задаєте ліміти та отримуєте policyId. Приклад конфігурації:
Приклад налаштування в коді (натисніть, щоб розгорнути)
import { createModularAccountAlchemyClient } from "@alchemy/aa-alchemy"; import { LocalAccountSigner, sepolia } from "@alchemy/aa-core"; import { http } from "viem"; const client = await createModularAccountAlchemyClient({ apiKey: "YOUR_ALCHEMY_API_KEY", chain: sepolia, signer: LocalAccountSigner.privateKeyToAccountSigner(privateKey), gasManagerConfig: { policyId: "YOUR_GAS_POLICY_ID", }, }); // Відправка user operation без ETH на гаманці const { hash } = await client.sendUserOperation({ uo: { target: contractAddress, data: encodeFunctionData({ abi, functionName: "mint", args: [] }), value: 0n, }, }); await client.waitForUserOperationTransaction({ hash }); Після інтеграції користувач не помічає, що транзакція платна — все оплачується за рахунок dApp. Наші клієнти економлять до 40% на газі завдяки оптимальним політикам.
React хуки
Account Kit надає @alchemy/aa-alchemy/react з готовими хуками:
import { AlchemyAccountProvider, useSmartAccountClient, useSendUserOperation, } from "@alchemy/aa-alchemy/react"; function MintButton() { const { client } = useSmartAccountClient({ type: "ModularAccount" }); const { sendUserOperation, isSendingUserOperation } = useSendUserOperation({ client, waitForTxn: true, }); return ( <button onClick={() => sendUserOperation({ uo: { target: NFT_ADDRESS, data: mintCalldata, value: 0n }, }) } disabled={isSendingUserOperation} > {isSendingUserOperation ? "Minting..." : "Mint NFT"} </button> ); } Session Keys
Account Kit підтримує session keys — тимчасові ключі з обмеженими правами. Користувач один раз підтверджує створення session key, потім застосунок може виконувати транзакції без щоразу запитувати підпис:
const sessionKey = await client.createSessionKey({ expirationTime: Math.floor(Date.now() / 1000) + 3600, // 1 година permissions: [ { type: "contract", address: GAME_CONTRACT, functionSelectors: [MOVE_SELECTOR, ATTACK_SELECTOR], // тільки конкретні функції }, ], spendingLimit: parseEther("0.01"), // максимум 0.01 ETH за сесію }); Це особливо цінно для ігор та застосунків з частими дрібними транзакціями.
Як ми інтегруємо Account Kit: покроковий процес
| Етап | Тривалість | Результат |
|---|---|---|
| Аналітика | 1-2 дні | Збираємо архітектуру dApp, auth flow, частоту транзакцій, бюджет на газ |
| Вибір типу акаунту | 1 день | Рішення: Light чи Modular Account. Якщо потрібні session keys — тільки Modular |
| Налаштування Gas Manager | 2-3 дні | Політики, бюджет, тест на testnet |
| Інтеграція SDK | 3-4 дні | Підключаємо @alchemy/aa-alchemy, налаштовуємо signer (Web3Auth, Privy або email) |
| UI-колл | 2 дні | Замінюємо кнопку "Send" на компонент з useSendUserOperation |
| Тестування | 2-3 дні | Тестуємо reorg, insufficient gas, відхилені операції з Tenderly |
| Деплой | 1 день | Публікуємо на mainnet, моніторимо через Alchemy dashboard |
Весь цикл займає 1-2 тижні. Включаємо документацію з прикладами коду та навчання команди.
Що входить в послугу
- Вибір та кастомізація smart account (Light або Modular) — під ключ
- Налаштування Gas Manager з політиками спонсорування
- Інтеграція з існуючим auth (email, social, Web3)
- Адаптація React UI під хуки Account Kit
- Тестування на testnet та mainnet
- Документація та сторібук компонентів
Ми виконали десятки інтеграцій для DeFi-протоколів та NFT-маркетплейсів. Alchemy Account Kit — зрілий інструмент, але вимагає глибокого розуміння ERC-4337. Оцінимо ваш проєкт безкоштовно — напишіть нам.
Типові помилки при інтеграції
При інтеграції важливо уникати: використання LocalAccountSigner в production небезпечно — замініть на Web3Auth або WalletConnect; не забувайте про nonce management, відмінний від EOA; обов'язково тестуйте політики газ-менеджера, щоб уникнути перевищення бюджету. Ми враховуємо ці моменти в кожному проєкті.
Замовте інтеграцію вже сьогодні, щоб підвищити конверсію вашого dApp. Зв'яжіться з нами — обговоримо деталі.







