Розробка смарт-контрактного гаманця (Account Abstraction)

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1305 послуг
Розробка смарт-контрактного гаманця (Account Abstraction)
Складний
~1-2 тижні
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1374
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1256
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    965
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1208
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    667
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    954

Уявіть: ваш користувач хоче відправити токени, але в нього немає ETH для газу. Або потрібно відновити доступ до гаманця без seed phrase, а seed phrase втрачена. Класичний EOA-гаманець не справляється з цими сценаріями. Рішення — смарт-контрактний гаманець з Account Abstraction (AA). Смарт-контрактний гаманець з Account Abstraction — це не просто зберігання, а програмований агент. Наші інженери з 10+ річним досвідом у блокчейні розробляють такі гаманці з моменту стандартизації EIP-4337. За 5 років на ринку ми реалізували понад 20 проєктів на Ethereum, Polygon, Arbitrum. Середня економія на газі при використанні Paymaster становить $0.5–2 на транзакцію. Account Abstraction дозволяє зменшити витрати на газ у 3–5 разів порівняно з традиційними EOA-транзакціями через використання Paymaster. Вартість зовнішнього аудиту — від $5 000 до $15 000 залежно від складності. Ми гарантуємо безпеку — кожен смарт-контракт проходить сертифікований аудит. Замовте розробку смарт-контрактного гаманця — отримайте консультацію інженера протягом 2 днів.

Як Account Abstraction змінює архітектуру смарт-контрактного гаманця?

Компоненти системи — розробка смарт-контрактного

Класична EOA-транзакція йде напряму в mempool і виконується нодою. В AA-системі ланцюжок інший:

  1. UserOperation — псевдотранзакція, підписана користувачем. Містить callData, sender (адреса смарт-гаманця), signature, ліміти gas та параметри Paymaster.
  2. Bundler — offchain агент, який збирає UserOperations з альтернативного mempool, упаковує їх в одну on-chain транзакцію і викликає EntryPoint. Існуючі реалізації: Stackup, Pimlico, Alchemy Rundler (написаний на Rust, на порядок швидший референсної реалізації).
  3. EntryPoint — singleton контракт (0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789 на більшості EVM мереж), розгорнутий командою ERC-4337. Саме він верифікує та виконує пачку операцій. Не можна деплоїти свій EntryPoint — екосистема зав'язана на цю адресу.
  4. Account Contract — сам смарт-гаманець користувача. Повинен реалізовувати інтерфейс IAccount з методом validateUserOp. Сюди йде вся кастомна логіка.
  5. Paymaster — опціональний контракт, який платить gas за користувача або приймає оплату в ERC-20 токенах замість ETH.

Детальніше в специфікації EIP-4337.

Життєвий цикл UserOperation

User → sign UserOp → send to Bundler RPC
Bundler → simulate via eth_estimateUserOperationGas → validate signature + paymaster
Bundler → batch multiple UserOps → call EntryPoint.handleOps()
EntryPoint → validateUserOp() на кожному Account Contract
EntryPoint → Paymaster.validatePaymasterUserOp()
EntryPoint → execute callData
EntryPoint → postOp() на Paymaster (для обліку gas)

Важливий момент: simulation і execution розділені. Bundler симулює через eth_callStateOverride і реджектить операції, які можуть зафейлитись on-chain. Це захищає Bundler від втрати ETH на failed transactions.

Що таке Factory і counterfactual деплой?

Одна з ключових властивостей AA — гаманець існує як адреса ще до деплою. CREATE2 з детермінованим salt (зазвичай хеш від owner address) дає передбачувану адресу. Користувач отримує адресу гаманця до першої транзакції, може прийняти кошти — гаманець деплоїться автоматично при першому використанні.

contract WalletFactory {
    function getAddress(address owner, uint256 salt) public view returns (address) {
        return Create2.computeAddress(
            bytes32(salt),
            keccak256(abi.encodePacked(
                type(ERC1967Proxy).creationCode,
                abi.encode(address(implementation), initData(owner))
            ))
        );
    }

    function createAccount(address owner, uint256 salt) external returns (SmartWallet) {
        address addr = getAddress(owner, salt);
        if (addr.code.length > 0) return SmartWallet(payable(addr)); // вже задеплоєно
        return SmartWallet(payable(new ERC1967Proxy{salt: bytes32(salt)}(
            address(implementation), initData(owner)
        )));
    }
}

Реалізація газлес‑транзакцій через Paymaster

Sponsoring Paymaster

contract SponsoringPaymaster is IPaymaster {
    mapping(address => bool) public whitelistedContracts;

    function validatePaymasterUserOp(
        UserOperation calldata userOp,
        bytes32,
        uint256 maxCost
    ) external returns (bytes memory context, uint256 validationData) {
        // Спонсоруємо тільки виклики whitelisted контрактів
        address target = address(bytes20(userOp.callData[16:36]));
        require(whitelistedContracts[target], "Not whitelisted");
        require(deposit() >= maxCost, "Insufficient deposit");
        return (abi.encode(userOp.sender), 0);
    }
}

Paymaster повинен тримати депозит в EntryPoint. Механізм staking запобігає DoS: Paymaster без stake може спонсорувати максимум одну операцію за бандл.

ERC-20 Paymaster

Приймає будь-який ERC-20 як оплату gas. Оракул потрібен для конвертації: Chainlink price feed або пул Uniswap V3 TWAP. Схема роботи: до виконання блокуємо maxCost * exchangeRate токенів, після — списуємо фактичний cost через postOp.

Готові рішення: Pimlico ERC-20 Paymaster (open source), Stackup Paymaster SDK.

Реалізація Account Contract

Базова структура

За основу беремо SimpleAccount від eth-infinitism або SafeAccount від Safe (колишній Gnosis Safe). Для production — Safe v1.4.1 з 4337 модулем, тому що він battle-tested з $100B+ TVL.

Замість наведення повного коду, опишемо ключовий метод validateUserOp. Він перевіряє підпис, nonce та при необхідності оплачує газ. validationData кодує три параметри: результат валідації (0 — успіх, 1 — провал), validAfter і validUntil timestamps (time-bounded операції).

Патерни розширеної логіки

Session keys. Обмежений ключ (наприклад, згенерований браузером без seed phrase exposure), якому дозволені операції тільки в рамках конкретного контракту, ліміту суми та часового вікна. Структура зберігання:

struct SessionKey {
    address key;
    address allowedContract;
    uint256 spendingLimit;
    uint48 validUntil;
    bool enabled;
}
mapping(address => SessionKey) public sessionKeys;

Це фундамент для "gasless gaming" — користувач один раз підписує сесію на ігровий контракт, далі гра робить транзакції від його імені.

Social recovery. Guardians — довірені адреси, які можуть змінити owner через timelock (зазвичай 72 години). Реалізація Argent — хороший референс: threshold з M-of-N guardians, cancellation протягом timelock window якщо owner онлайн.

Фронтенд інтеграція

Viem + permissionless.js — найбільш актуальний стек (постійно оновлюється). permissionless побудований на Viem і надає абстракції для роботи з Bundler та Paymaster RPC:

import { createSmartAccountClient } from "permissionless";
import { signerToSimpleSmartAccount } from "permissionless/accounts";
import { createPimlicoBundlerClient } from "permissionless/clients/pimlico";

const smartAccount = await signerToSimpleSmartAccount(publicClient, {
  signer: walletClient,
  factoryAddress: FACTORY_ADDRESS,
  entryPoint: ENTRY_POINT_ADDRESS,
});

const smartAccountClient = createSmartAccountClient({
  account: smartAccount,
  chain: optimism,
  bundlerTransport: http(BUNDLER_RPC_URL),
  middleware: {
    sponsorUserOperation: paymasterClient.sponsorUserOperation,
  },
});

// Відправка транзакції — ідентично звичайному гаманцю для користувача
const txHash = await smartAccountClient.sendTransaction({
  to: contractAddress,
  data: encodeFunctionData({ abi, functionName: "doSomething" }),
});

ZeroDev SDK — альтернатива з вищим рівнем абстракції, вбудованими session keys та Kernel account (популярний Account Contract з plugin системою).

Альтернативи EIP-4337

Рішення Вимагає EntryPoint Сумісність з EVM Особливість
EIP-4337 Так Всі EVM мережі Стандарт де‑факто
zkSync Native AA Ні zkSync Era Вбудовано в L2, дешевше
EIP-7702 Ні (тимчасова делегація) Майбутній Ethereum Простіше для EOA

zkSync Native AA — на zkSync Era AA вбудована в протокол, не потрібен окремий EntryPoint. Кожен акаунт може бути смарт-контрактом з коробки. Більш ефективно по gas, але прив'язка до zkSync.

EIP-7702 (Prague/Electra) — майбутній хардфорк Ethereum. Дозволяє EOA тимчасово делегувати виконання смарт-контракту через спеціальний тип транзакції. Не замінює 4337 повністю, але закриває частину use cases простіше.

Етапи розробки та оцінки

Компонент Складність Термін
Базовий Account Contract (single owner) Середня 1–2 тиж
Factory + counterfactual deploy Низька 3–5 днів
Sponsoring Paymaster Середня 1 тиж
ERC-20 Paymaster + оракул Висока 1–2 тиж
Session keys Висока 1–2 тиж
Social recovery Висока 1–2 тиж
Frontend SDK інтеграція Середня 1 тиж
Аудит + виправлення 3–6 тиж
Детальніше про процес аудиту

Аудит включає ручну перевірку коду статичними аналізаторами (Slither, Mythril) та fuzzing (Echidna). Особливу увагу приділяємо validateUserOp та Paymaster‑логіці. Результат — звіт з критичністю багів та часом на виправлення.

Мінімальний production-ready гаманець (single owner + sponsoring paymaster + фронтенд) — 4–6 тижнів розробки. Повнофункціональний продукт з social recovery, session keys та мультимережею — 3–5 місяців. Оцінимо ваш проєкт за 2 дні — просто надішліть опис задачі.

Що входить в роботу

  • Аналіз вимог та проектування архітектури
  • Розробка смарт-контрактів (Account Contract, Factory, Paymaster)
  • Інтеграція з Bundler та Paymaster (Pimlico, Stackup, Alchemy)
  • Фронтенд SDK на Viem + permissionless.js
  • Тестування (unit, integration, fuzzing via Echidna)
  • Аудит коду (внутрішній + зовнішній)
  • Деплой в mainnet/testnet
  • Документація та навчання команди
  • Технічна підтримка 3 місяці

Ключовий момент при виборі підрядника: реалізація validateUserOp повинна бути аудійована. Помилка в цій функції — пряма втрата коштів користувачів. Економія на аудиті тут — свідомий ризик. Зв'яжіться з нами для попередньої оцінки — розповімо, як уникнути типових помилок. Отримайте консультацію інженера вже сьогодні!

Ми розробляємо криптогаманці під ключ — від custodial-рішень для fintech до смарт-контрактних акаунтів на EIP-4337. 5+ років на ринку блокчейн-розробки, 40+ реалізованих проектів. Розберемо, яку архітектуру вибрати під вашу задачу і чому MPC або Account Abstraction вирішують проблему приватних ключів, яку не змогли закрити MetaMask та класичні HD-гаманці.

Як обрати архітектуру гаманця?

Чому класичні гаманці небезпечні для бізнесу?

Seed-фраза у браузерному розширенні — єдиний спосіб відновити доступ. Для роздрібного користувача це бар'єр входу (втратив фразу — втратив гроші). Для корпоративного казначейства — несумісно з compliance (KYC/AML, рольова модель, мультипідпис). Будь-який витік одного ключа компрометує всі кошти. Ці ризики закладені в архітектуру, а не в поганий UX.

Ми усуваємо їх на рівні протоколу: MPC-гаманці (ключ ніколи не зібраний цілком), смарт-контрактні гаманці (логіка авторизації в коді), апаратні HSM для інституційного зберігання. Нижче — деталі.

Custodial vs Non-custodial: у чому реальна різниця

Custodial — провайдер зберігає приватний ключ. Користувач аутентифікується через email/password/OAuth. Відновлення тривіальне, KYC/AML вбудовані. Для централізованих додатків з фінансовими операціями — часто єдиний регуляторно прийнятний варіант. Ризик: single point of failure (злом Bitfinex — значні втрати, FTX — понад значну суму клієнтських коштів).

Non-custodial — ключі у користувача. Провайдер не має доступу до коштів. Відповідальність за зберігання лягає на користувача. Для 99% людей це непрацююча модель без додаткового захисту — тут і приходить MPC.

MPC-гаманці: ключ, якого немає

Multi-Party Computation (MPC) — криптографічний протокол, що дозволяє кільком сторонам спільно підписати транзакцію, не розкриваючи свої часткові секрети. Приватний ключ ніколи не існує в зібраному вигляді.

Стандартна схема: 2-of-3 MPC між користувачем (частка на пристрої), сервером провайдера та резервним хмарним сховищем. Транзакція підписується двома будь-якими з трьох сторін. Телефон втрачено — відновлення через сервер + хмару. Сервер скомпрометовано — атакуючий володіє лише однією часткою, підпис неможливий.

TSS (Threshold Signature Scheme) — конкретна реалізація MPC для ECDSA/EdDSA. Алгоритми: GG18, GG20, CGGMP21 (останній швидший і з кращими security proof). Бібліотеки: tss-lib (Go, від Binance), multi-party-sig (Go, від Coinbase), ZenGo-X/multi-party-ecdsa (Rust).

MPC не потребує on-chain змін — для блокчейна підпис виглядає як звичайний single-key підпис. Це дає економію gas та зберігає конфіденційність схеми управління ключами (не публікується в ланцюжку) — на відміну від мультисига.

Account Abstraction (EIP-4337): смарт-контракт як гаманець

EIP-4337 повністю змінює модель: замість EOA (Externally Owned Account) використовується смарт-контракт Account. Логіка авторизації — в коді контракту, а не в криптографії протоколу. Це відкриває довільну логіку підпису, соціальне відновлення, сесійні ключі, sponsored транзакції та батчинг операцій.

User → UserOperation → Bundler → EntryPoint contract → Account contract
                                          ↑
                                    Paymaster (optional, pays gas)

UserOperation — новий тип об'єкта (не L1-транзакція). Bundler збирає UserOps з альтернативного mempool, упаковує в одну транзакцію та відправляє в EntryPoint. EntryPoint викликає validateUserOp на Account контракті — Account сам вирішує, чи дійсний підпис.

Практичні можливості:

Соціальне відновлення. Контракт зберігає список guardian'ів (інші адреси або сервіс). Втрата ключа — guardians голосують за заміну. Argent використовує схему з 2020 року.

Сесійні ключі. Тимчасовий ключ з обмеженими правами: взаємодія лише з конкретним контрактом, до певної дати, до певної суми. Для GameFi та dApps — користувач не підписує кожну мікро-транзакцію.

Paymaster. Сторонній контракт платить газ за користувача. Паттерн для онбордингу: користувач не тримає ETH, газ спонсорує dApp або береться з ERC-20 токенів.

Реалізації: Safe{Core} Protocol, Biconomy SDK (Stackup), ZeroDev (Kernel), Alchemy (Rundler bundler). На Ethereum mainnet, Polygon, Arbitrum, Optimism EntryPoint v0.6/v0.7 задеплоєний та активний. Гарантуємо сумісність з останніми версіями контрактів.

Hardware Security Module для корпоративних гаманців

Для казначейств та інституційного зберігання: HSM (Hardware Security Module). Ключ генерується і ніколи не покидає захищений чип. Підпис — всередині HSM. Підтримується апаратна атестація. Використовувані рішення: AWS CloudHSM, Azure Dedicated HSM, Thales Luna, YubiHSM 2 (для невеликих обсягів). Інтеграція через PKCS#11 або cloud-specific API.

Комбінація HSM + MPC — оптимальна для інституційного використання: ключові частки зберігаються в HSM на різних серверах/юрисдикціях, підпис через TSS. Це забезпечує відповідність регуляторним вимогам (наприклад, для крипто-кастодіанів).

Інтеграція з dApps: WalletConnect та стандарти

Будь-який гаманець повинен вміти взаємодіяти з dApps. Стандарт — WalletConnect v2 (Sign API): QR-код або deep link, peer-to-peer зашифрований канал через relay сервер. Для браузерних розширень — EIP-1193 (Ethereum Provider API).

На фронтенді використовуємо wagmi + viem — один інтерфейс для MetaMask, WalletConnect, Coinbase Wallet, injected providers. Для Account Abstraction — EIP-5792 (wallet capabilities) та EIP-7677 (paymaster service).

Процес розробки

  1. Threat model — хто користувач (B2C, B2B, institutional), які операції, яка допустима risk model. Від цього залежить архітектура.
  2. Вибір та проектування схеми зберігання ключів — MPC, HSM, мультисиг або їх комбінація.
  3. Розробка Account контракту (якщо EIP-4337) або інтеграція MPC-бібліотеки.
  4. Backend — MPC-координація, управління сесіями, paymaster-сервіс (якщо потрібен).
  5. Мобільний/браузерний застосунок — UI з інтеграцією WalletConnect, біометрії, QR.
  6. Інтеграція з dApps — EIP-1193, WalletConnect v2.
  7. Аудит контрактів та криптографічних реалізацій — обов'язковий етап. MPC-бібліотеки мають відомі вразливості (GG18 піддається атаці при malicious participant без abort protocol). Використовуємо бібліотеки з актуальними security review (CGGMP21). Досвід проходження аудитів у Certik, Hacken, Trail of Bits — підтверджуємо сертифікатами.

Що входить в роботу (deliverables)

  • Вихідні коди смарт-контрактів (Solidity/Rust) з документацією
  • Backend-сервіс MPC-координації (на Go або Rust) з API
  • Мобільний застосунок (iOS/Android) або браузерне розширення
  • Інтеграція з WalletConnect, Ledger/Trezor (за потреби)
  • Підготовка до аудиту безпеки (звіт зі списком вразливостей)
  • Документація адміністратора та користувача
  • Доступ до репозиторію, CI/CD, моніторинг (Tenderly, Etherscan API)
  • Навчання вашої команди (2-3 сесії)
  • Підтримка після запуску — 1 місяць

Строки та вартість

Тип рішення Строки (робочі тижні)
Custodial з базовим UI 4–8
Non-custodial з MPC-інтеграцією 8–16
EIP-4337 Account з paymaster 6–12
Institutional (HSM + MPC + compliance) від 16

Вартість розраховується індивідуально під ваш проект. Оцінимо за 1 день — зв'яжіться з нами. Надаємо гарантію на код та timeline.

Типові помилки при розробці криптогаманців (і як їх уникнути)

  • Використання застарілих MPC-бібліотек — GG18 без abort protocol. Обираємо CGGMP21 або tss-lib з актуальними audit report.
  • Жорстка прив'язка до одного блокчейну — не закладають абстракцію під L2/сайдчейни. Використовуємо viem/wagmi для кросс-чейн.
  • Ігнорування MEV-атак — при використанні мультисига без таймлоків. Додаємо tx simulation (Tenderly) та sandwitching protection.
  • Відсутність fallback-механізму відновлення — для Account Abstraction не налаштовують social recovery. Закладаємо з першого релізу.

Усуваємо ці граблі на етапі проектування — під кожен проект складаємо threat model та security checklist.

Потрібен надійний гаманець без компромісів? Отримайте консультацію нашого архітектора — розберемо вашу задачу та запропонуємо архітектуру з точним кошторисом. Залишайте заявку — відповімо протягом дня.