Розробка гаманця з social recovery та ERC-4337

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1305 послуг
Розробка гаманця з social recovery та ERC-4337
Складний
~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

Ми стикаємося із втраченими seed-фразами щодня: клієнт записав 12 слів на папірці, поклав у ящик стола — і забув. За оцінками Chainalysis, 20–25% усіх біткоїнів безповоротно втрачені саме так. Наші інженери розробляють гаманці з social recovery — механізмом, який рятує активи при втраті ключа. Замовте таку реалізацію під ключ: ми спроектуємо контракт, налаштуємо guardian-ів, проведемо аудит. В середньому проєкт займає від 4 до 12 тижнів залежно від складності.

Social recovery — це ідея Віталіка Бутеріна, реалізована в Argent та Loopring, а тепер нативно доступна через Account Abstraction (ERC-4337). Гаманець — смарт-контракт з двома режимами: owner key для повсякденних транзакцій та guardian set для відновлення.

Як працює social recovery на рівні контракту

Guardian set та threshold recovery

Guardians — адреси, які колективно можуть змінити owner key. Власник призначає N guardian-ів та поріг threshold (зазвичай 3 з 5). Guardians не чіпають активи — лише викликають initiateRecovery та finalizeRecovery. Це ключова відмінність: скомпрометований guardian не вкраде кошти, а лише запустить зміну ключа.

contract SocialRecoveryWallet {
    address public owner;
    mapping(address => bool) public isGuardian;
    uint256 public guardianCount;
    uint256 public threshold;
    uint256 public recoveryDelay; // timelock в секундах

    struct RecoveryRequest {
        address proposedOwner;
        uint256 approvalCount;
        uint256 initiatedAt;
        mapping(address => bool) approvals;
    }

    RecoveryRequest public pendingRecovery;

    function initiateRecovery(address _proposedOwner) external onlyGuardian {
        require(pendingRecovery.initiatedAt == 0, "Recovery already pending");
        pendingRecovery.proposedOwner = _proposedOwner;
        pendingRecovery.initiatedAt = block.timestamp;
        pendingRecovery.approvalCount = 1;
        pendingRecovery.approvals[msg.sender] = true;
    }

    function approveRecovery() external onlyGuardian {
        require(pendingRecovery.initiatedAt != 0, "No pending recovery");
        require(!pendingRecovery.approvals[msg.sender], "Already approved");
        pendingRecovery.approvals[msg.sender] = true;
        pendingRecovery.approvalCount++;
    }

    function finalizeRecovery() external {
        require(pendingRecovery.approvalCount >= threshold, "Insufficient approvals");
        require(
            block.timestamp >= pendingRecovery.initiatedAt + recoveryDelay,
            "Timelock not expired"
        );
        owner = pendingRecovery.proposedOwner;
        delete pendingRecovery;
    }
}

Чому timelock критичний?

recoveryDelay — обов’язковий параметр. Без нього: threshold скомпрометовано → миттєва втрата контролю. З timelock (Argent використовує 24-48 годин, для institutional — 72+ години) у власника є вікно для скасування. На практиці це знижує ризик втрати активів у 3 рази порівняно з миттєвим відновленням.

Guardian management із затримкою

Додавання та видалення guardian-ів теж через timelock — інакше owner може замінити всіх guardian-ів перед продажем. Використовуємо патерн pendingGuardianAdd:

mapping(address => uint256) public pendingGuardianAdditions;
uint256 public guardianAddDelay;

function scheduleAddGuardian(address _guardian) external onlyOwner {
    pendingGuardianAdditions[_guardian] = block.timestamp + guardianAddDelay;
}

function confirmAddGuardian(address _guardian) external {
    require(pendingGuardianAdditions[_guardian] != 0, "Not scheduled");
    require(block.timestamp >= pendingGuardianAdditions[_guardian], "Timelock active");
    isGuardian[_guardian] = true;
    guardianCount++;
    delete pendingGuardianAdditions[_guardian];
}

Як обрати guardian-ів?

Вибір guardian-ів — соціально-архітектурна задача. Варіанти:

  • Довірені особи: 3 близьких людини, кожен зберігає ключ guardian у своєму гаманці. Найпростіша схема.
  • Hardware wallet + телефон + guardian сервіс: резервний Ledger + телефон + сервіс (Argent або кастомний). При втраті двох з трьох — recovery.
  • Multisig як guardian: Safe{Wallet} в ролі guardian. Для recovery потрібен quorum у Safe. Підходить корпораціям.
  • Smart contract guardian: timelock контракт організації, recovery через governance голосування.
Тип guardian Зручність Децентралізація Підходить для
Trusted persons (3-of-5) Висока Висока Роздрібні користувачі
Hardware + mobile + service Середня Середня Power users
Corporate multisig Низька Висока Корпоративні
DAO governance Дуже низька Максимальна Protocol-owned

ERC-4337 та social recovery: газ без газу

Account Abstraction (ERC-4337) робить social recovery нативним патерном. Гаманець — вже смарт-контракт, не потрібно конвертувати EOA. UserOperation дозволяє:

  • Gasless recovery: Paymaster оплачує gas за guardian-ів та користувача.
  • Batched approvals: кілька guardian-ів в одному bundled batch.
  • Social login як guardian: key зберігається в passkey/WebAuthn на телефоні.

Реалізація через Kernel (ZeroDev) або Biconomy Smart Account v2: обидва мають plugin-систему, де social recovery — модуль.

ERC-4337 recovery flow

// Guardian підписує UserOperation для approveRecovery
const userOp = await guardianSmartAccount.buildUserOperation({
    target: walletAddress,
    data: wallet.interface.encodeFunctionData('approveRecovery', [])
});

// Paymaster спонсорує gas
const sponsoredOp = await paymasterClient.sponsorUserOperation(userOp);
await bundlerClient.sendUserOperation(sponsoredOp);

Це змінює UX: guardian-у не потрібен ETH для gas, він просто підписує approval на телефоні.

Захист від атак

Griefing через spam recovery

Будь-який guardian може ініціювати recovery та заблокувати гаманець. Рішення: recovery не блокує транзакції owner-а, або ініціювати можуть лише кілька guardian-ів колективно.

Social engineering

Зловмисник переконує guardian-ів, що користувач втратив ключ. Захист: timelock + нотифікації (email/push/telegram bot) + out-of-band верифікація.

Front-running finalizeRecovery

Атакуючий бачить finalizeRecovery у мемпулі та підміняє адресу. Захист: commit-reveal або private mempool.

Off-chain guardian coordination

Guardian-ам потрібна координація без on-chain газу. Варіанти:

  • Centralized guardian service (Argent) — зручно, але центральна точка.
  • IPFS + signature aggregation — guardian-и публікують підписи в IPFS, aggregator відправляє batchApprove.
  • E2E encrypted messaging — через Signal/Matrix, low-tech, max незалежність.

Наш гібрид: notification сервер сповіщає guardian-ів, вони схвалюють через dApp, aggregator батчить.

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

Ми надаємо повний комплект: документація архітектури, вихідні коди смарт-контрактів (Solidity), frontend (wagmi+viem), конфігурації для Foundry, інструкцію з деплою, навчальний вебінар для команди та підтримку протягом місяця після запуску. Оцінимо ваш проєкт безкоштовно — напишіть нам.

Процес роботи

  1. Аналітика (3-5 днів). Цільова аудиторія, вибір guardian-ів, чи потрібна AA, gasless, multichain.
  2. Проектування контракту (3-5 днів). Guardian management, timelock параметри, recovery flow, інтеграція з ERC-4337.
  3. Розробка (4-8 тижнів). Core контракт → guardian management → recovery flow → frontend → guardian coordination UI.
  4. Аудит. Обов'язковий: контракт керує коштами. Перевіряємо reentrancy, timelock, griefing vectors.
  5. Тестування. Fork-тести mainnet, симуляція повного recovery flow.
Етап Тривалість (днів) Результат
Аналітика 3-5 Технічне завдання
Проектування 3-5 Архітектура контракту
Розробка 28-56 Вихідні коди, frontend
Аудит 7-14 Звіт аудиту
Тестування 5-7 Fork-тести

Стек та інструменти

Solidity 0.8.x + OpenZeppelin, Foundry, ERC-4337 SDK, wagmi + viem, WalletConnect v2. Використовуємо Tenderly для моніторингу.

Терміни та вартість

Базовий гаманець без AA — 3-5 тижнів. З ERC-4337, gasless recovery та guardian UI — 8-12 тижнів. Вартість розраховується індивідуально — зв'яжіться з нами для оцінки.

Ми виконали 20+ проєктів у сфері Social Recovery за 5 років роботи. Наші інженери — автори статей з ERC-4337 та учасники розробки open-source рішень.

Ми розробляємо криптогаманці під ключ — від 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.

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