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

Ми стикалися з ситуацією, коли GameFi-проект із 200k MAU втрачав 30% користувачів на етапі встановлення MetaMask. Конверсія у підписання першої транзакції була нижче 5%. Користувачі просто не хотіли встановлювати розширення. Embedded wallet вирішив проблему: юзер натискав «Увійти через Google», отри

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

Часті запитання

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

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

Ми стикалися з ситуацією, коли 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%. Замовте аудит вашого проекту у нас. Отримайте консультацію: зв'яжіться з нами через форму на сайті.