Проблема: пользователь платит газ из своего кошелька — барьер для массового принятия
Каждый раз, когда новый пользователь хочет 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. Свяжитесь с нами — обсудим детали.







