Мы сталкивались с ситуацией, когда 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
- Зарегистрируйте приложение в Privy Dashboard, получите
appId. - Установите SDK:
npm install @privy-io/react-auth. - Оберните приложение в
PrivyProviderс конфигурацией loginMethods и embeddedWallets. - Используйте хуки
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 узлов должны согласиться для восстановления ключа.
Подробнее о Privy
Privy — один из самых популярных провайдеров 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 | Скорость |
|---|---|---|---|
| Средняя | Лёгкий | Мгновенная | |
| 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%. Закажите аудит вашего проекта у нас. Получите консультацию: свяжитесь с нами через форму на сайте.







