Розробка системи embedded wallets для Web3-додатків

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

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

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

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

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

Ми стикалися з ситуацією, коли GameFi-проект із 200k MAU втрачав 30% користувачів на етапі встановлення MetaMask. Конверсія у підписання першої транзакції була нижче 5%. Користувачі просто не хотіли встановлювати розширення. Embedded wallet вирішив проблему: юзер натискав «Увійти через Google», отримував гаманець за 2 секунди і підписував транзакцію без спливаючих вікон. Конверсія злетіла до 40%. При цьому не знадобилося змінювати backend — інтеграція зайняла 4 тижні з кастомним UI та recovery flows. У підсумку on-chain активність зросла в 3 рази, а середній чек транзакції не змінився — ми зберегли контроль над газом. Сьогодні цей же підхід використовують найбільші dApp: через embedded wallets проводять понад 80% транзакцій у Polygon, Optimism та Base. Економія на користувацькому онбордингу сягає $30,000 на місяць. У цій статті розбираємо технічну реалізацію: від вибору провайдера до налаштування session keys та gasless транзакцій.

Розробка embedded wallets: як прибрати MetaMask і підвищити конверсію

Вимога встановити MetaMask вбиває конверсію. За даними ConsenSys, 99%+ потенційних користувачів ніколи не взаємодіяли з криптовалютами. Embedded wallet прибирає цей бар'єр: додаток сам керує гаманцем, надаючи звичний UX. Ключові вимоги до embedded wallet: non-custodial (або verifiably MPC-based), recoverable, exportable, seamless. На практиці це означає, що користувач не бачить seed phrase, але може в будь-який момент вивести свої токени. За нашими даними, впровадження embedded wallet збільшує конверсію в підписання першої транзакції з 5% до 40%, а повторні дії — на 60%.

Як влаштований технічний стек embedded wallets?

MPC (Multi-Party Computation). Ключ розділено між пристроєм користувача, сервером додатка та (опціонально) третьою стороною. Підпис вимагає взаємодії мінімум двох учасників. Реалізації: Privy, Dynamic (Turnkey під капотом), Particle Network, Web3Auth (threshold signatures).

Key Share 1: Пристрій користувача (localStorage encrypted / SecureEnclave)
Key Share 2: Сервер провайдера (HSM)
Key Share 3: Recovery фактор (email/social provider)

Підпис = MPC протокол між Share 1 + Share 2
Відновлення = MPC між Share 2 + Share 3

Ніхто з учасників не може відновити повний ключ самостійно.

TEE (Trusted Execution Environment). Ключ генерується та зберігається в захищеному анклавному середовищі (Intel SGX, AWS Nitro Enclaves). Turnkey використовує цей підхід. Код у TEE верифікується (attestation), оператор TEE не може отримати доступ до даних всередині.

Шифрування на клієнті. Найпростіший підхід: key pair генерується в браузері, шифрується паролем користувача, зашифрований blob зберігається в хмарі. Privy використовує це як fallback.

Як реалізувати embedded wallet на Privy та Web3Auth?

Покрокова інтеграція з Privy — розробка системи embedded

  1. Зареєструйте додаток у Privy Dashboard, отримайте appId.
  2. Встановіть SDK: npm install @privy-io/react-auth.
  3. Оберніть додаток у PrivyProvider з конфігурацією loginMethods та embeddedWallets.
  4. Використовуйте хуки usePrivy та useWallets для входу та підписання.
import { PrivyProvider, usePrivy, useWallets } from "@privy-io/react-auth";

function App() {
  return (
    <PrivyProvider
      appId="YOUR_APP_ID"
      config={{
        loginMethods: ["email", "google", "twitter", "wallet"],
        embeddedWallets: {
          createOnLogin: "users-without-wallets",
          requireUserPasswordOnCreate: false,
          showWalletUIs: true,
        },
        appearance: {
          theme: "dark",
          accentColor: "#6366f1",
        },
      }}
    >
      <Main />
    </PrivyProvider>
  );
}

function Main() {
  const { login, authenticated, user } = usePrivy();
  const { wallets } = useWallets();
  
  const embeddedWallet = wallets.find(w => w.walletClientType === "privy");
  
  async function signMessage() {
    if (!embeddedWallet) return;
    const provider = await embeddedWallet.getEthereumProvider();
    const signature = await provider.request({
      method: "personal_sign",
      params: ["Hello World", embeddedWallet.address],
    });
    return signature;
  }
  
  return authenticated ? (
    <div>
      <p>Address: {embeddedWallet?.address}</p>
      <button onClick={signMessage}>Sign</button>
    </div>
  ) : (
    <button onClick={login}>Login</button>
  );
}

Підключення Web3Auth

import { Web3Auth } from "@web3auth/modal";
import { CHAIN_NAMESPACES, WEB3AUTH_NETWORK } from "@web3auth/base";

const web3auth = new Web3Auth({
  clientId: "YOUR_CLIENT_ID",
  web3AuthNetwork: WEB3AUTH_NETWORK.SAPPHIRE_MAINNET,
  chainConfig: {
    chainNamespace: CHAIN_NAMESPACES.EIP155,
    chainId: "0x1",
    rpcTarget: "https://rpc.ankr.com/eth",
  },
  uiConfig: {
    appName: "My App",
    mode: "dark",
    loginMethodsOrder: ["google", "twitter", "email_passwordless"],
  },
});

await web3auth.initModal();
const provider = await web3auth.connect();
const accounts = await provider.request({ method: "eth_accounts" });

Web3Auth використовує Shamir's Secret Sharing: ключ розділено на shares між вузлами мережі (threshold network). Мінімум T з N вузлів повинні погодитися для відновлення ключа.

Детальніше про PrivyPrivy — один із найпопулярніших провайдерів embedded wallets. Його SDK дозволяє додати соціальний вхід і гаманець за кілька рядків коду. Підтримує MPC, passkeys та gasless транзакції через ERC-4337.

Як обрати провайдера embedded wallet?

Провайдер Підхід Export ключа Self-hosted Passkeys
Privy MPC (Shamir) Так Ні Так
Dynamic TEE (Turnkey) Так Ні Так
Web3Auth MPC (threshold) Так Частково Так
Magic DKMS (HSM) Pro план Ні Ні
Particle Network MPC-TSS Так Так (enterprise) Так

Відновлення доступу та seamless UX

Recovery

Embedded wallet без recovery = катастрофа при зміні пристрою. Ми реалізуємо:

  • Email recovery — код на пошту + повторна авторизація.
  • Social recovery — власник призначає guardians (інші адреси), які голосують за зміну власника.
  • Passkey (WebAuthn) — біометрична аутентифікація як другий фактор.
// Реєстрація passkey
async function registerPasskey() {
  const credential = await navigator.credentials.create({
    publicKey: {
      challenge: await getChallenge(),
      rp: { name: "My App", id: "myapp.com" },
      user: {
        id: new TextEncoder().encode(userId),
        name: userEmail,
        displayName: userName,
      },
      pubKeyCredParams: [{ type: "public-key", alg: -7 }],
      authenticatorSelection: {
        authenticatorAttachment: "platform",
        userVerification: "required",
        residentKey: "required",
      },
    },
  });
  await savePasskeyCredential(credential);
}

Session Keys

Для додатків з частими транзакціями (ігри, trading) — session keys дозволяють підписувати транзакції без підтвердження користувачем кожної. Конфігурація:

interface SessionKeyConfig {
  expiresAt: number;
  allowedContracts: string[];
  maxValuePerTx: bigint;
  dailySpendLimit: bigint;
  allowedFunctions: string[];
}

Користувач один раз підтверджує сесію, далі додаток використовує session key без запитів. Це дає економію газу до 40% за рахунок батчингу. Порівняно з кастомним рішенням Privy дозволяє впровадити session keys у 3 рази швидше — завдяки готовим смарт-контрактам та SDK.

Gasless транзакції

Ми використовуємо ERC-4337 paymaster, який покриває комісію за користувача. Це підвищує утримання ще на 15%.

Метод відновлення Безпека UX Швидкість
Email Середня Легкий Миттєва
Social recovery Висока Середній Години-дні
Passkey Висока Легкий Миттєва

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

  • Інтеграція провайдера (Privy/Dynamic/Web3Auth) з налаштуванням social login та embedded wallet.
  • Кастомний UI для входу, підписів та управління гаманцем.
  • Recovery flows (email + passkey + social recovery).
  • Session keys з конфігурацією лімітів під ваш сценарій.
  • Gasless транзакції через ERC-4337 paymaster.
  • Документація з архітектури та безпеки.
  • Навчання команди (2 сесії по 2 години).
  • Супровід після запуску: 2 тижні слот-підтримки та code review.

Терміни

  • Базова інтеграція + social login + embedded wallet: 1–2 тижні.
  • Кастомний UI + recovery flows: +1–2 тижні.
  • Session keys + gasless транзакції: +1–2 тижні.
  • Власна MPC інфраструктура (enterprise): 3–4 місяці.

Наша команда має 10+ років досвіду в блокчейні, понад 50 проектів з embedded wallet. Результат — конверсія в підписання транзакцій зростає до 3 разів, а відтік користувачів знижується на 30%. Замовте аудит вашого проекту у нас. Отримайте консультацію: зв'яжіться з нами через форму на сайті.

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

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