Разработка системы 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: User device (localStorage encrypted / SecureEnclave) Key Share 2: Provider server (HSM) Key Share 3: Recovery factor (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,000. Наша команда имеет 10+ лет опыта в блокчейне, более 50 проектов с embedded wallet. Результат — конверсия в подписание транзакций растёт до 3 раз, а отток пользователей снижается на 30%. Закажите аудит вашего проекта у нас. Получите консультацию: свяжитесь с нами через форму на сайте.