Разработка White-label криптокошелька
White-label кошелёк — это не "скачать MetaMask и поставить другой логотип". Это полноценный продукт с вашим брендом, вашей бизнес-логикой и вашим контролем над пользовательским опытом. Разница принципиальная: когда пользователь работает через MetaMask или Trust Wallet, данные аналитики, точки входа и монетизация принадлежат им. Когда через ваш кошелёк — вам. Ниже — реальная архитектура, не маркетинговые тезисы.
Архитектурные решения: что выбрать в основе
Custodial vs Non-custodial vs MPC
Первое архитектурное решение определяет всё остальное.
Custodial — ключи хранятся на ваших серверах. Пользователь работает через логин/пароль. Проще в UX, но: вы несёте полную юридическую ответственность за средства, требуется лицензия в большинстве юрисдикций, вы становитесь target для хакеров. Подходит для B2B-продуктов с корпоративными клиентами под NDA.
Non-custodial (HD Wallet) — ключи генерируются и хранятся на устройстве пользователя, BIP-32/39/44 деривация. Вы не можете восстановить средства если пользователь потерял seed phrase. Стандарт для consumer-facing продуктов.
MPC (Multi-Party Computation) — приватный ключ никогда не существует целиком ни на одном устройстве. Key shares распределены между клиентом и серверами. Схема 2-of-2 или 2-of-3 (TSS — Threshold Signature Scheme). Провайдеры: Fireblocks MPC, Web3Auth MPC, Lit Protocol. Золотая середина: пользователь не хранит seed phrase, но средства non-custodial. Это направление — индустриальный тренд 2024–2025.
Выбор SDK и базового кода
WalletCore от Trust Wallet (open source) — C++ ядро с биндингами под iOS (Swift), Android (Kotlin/Java), WebAssembly. Поддержка 100+ блокчейнов. Самый зрелый open source вариант для multi-chain HD кошелька. Сложность интеграции — высокая, зато криптографически проверенный код.
Coinbase Wallet SDK — open source, фокус на EVM + Base. Хорош если ваша аудитория ориентирована на Ethereum-экосистему.
WalletKit от Reown (ex-WalletConnect) — SDK для интеграции WalletConnect v2 протокола в ваш кошелёк. Обязателен если хотите, чтобы ваш кошелёк работал с dApps.
Собственная реализация — используем @noble/curves (Constantine, secp256k1, ed25519) + @scure/bip32 + @scure/bip39. Полный контроль, нет зависимости от сторонних SDK. Оправдан для специализированных продуктов.
Ключевые технические компоненты
Генерация и хранение ключей
Безопасность начинается с генерации энтропии. crypto.getRandomValues() в браузере, /dev/urandom на сервере — только CSPRNG.
import { generateMnemonic, mnemonicToSeedSync } from "@scure/bip39";
import { wordlist } from "@scure/bip39/wordlists/english";
import { HDKey } from "@scure/bip32";
// Генерация 24-словного мнемоника (256 бит энтропии)
const mnemonic = generateMnemonic(wordlist, 256);
const seed = mnemonicToSeedSync(mnemonic);
const masterKey = HDKey.fromMasterSeed(seed);
// BIP-44 деривация: m/44'/60'/0'/0/0 для первого ETH адреса
const ethKey = masterKey.derive("m/44'/60'/0'/0/0");
Хранение на мобильных устройствах: iOS Keychain с kSecAttrAccessibleWhenUnlockedThisDeviceOnly, Android Keystore с аппаратной привязкой. Никакого AsyncStorage, SharedPreferences без шифрования.
В вебе — дополнительная сложность: нет нативного secure storage. Варианты: зашифрованный IndexedDB (ключ шифрования — производная от пароля через Argon2/PBKDF2), или отказ от browser extension в пользу mobile-first.
Multi-chain поддержка
Типовой набор для white-label продукта 2025 года:
| Экосистема | Сети | Стандарт деривации |
|---|---|---|
| EVM | Ethereum, BSC, Polygon, Arbitrum, Optimism, Base, Avalanche | BIP-44, coin type 60 |
| Bitcoin | BTC mainnet/testnet | BIP-84 (Native SegWit), BIP-86 (Taproot) |
| Solana | Mainnet, Devnet | BIP-44, coin type 501 |
| TON | Mainnet | BIP-44, coin type 607 |
| Cosmos | Atom, Osmosis + IBC chains | BIP-44, coin type 118 |
Каждая экосистема — отдельный провайдер в коде. Абстракция через интерфейс:
interface ChainProvider {
getBalance(address: string): Promise<bigint>;
sendTransaction(tx: UnsignedTransaction, key: Uint8Array): Promise<string>;
estimateGas(tx: UnsignedTransaction): Promise<bigint>;
getTransactionHistory(address: string): Promise<Transaction[]>;
}
WalletConnect v2 интеграция
Без WalletConnect v2 кошелёк не работает с большинством dApps. Протокол использует relay servers от Reown для передачи сообщений между кошельком и dApp через QR-код или deep link.
import { Core } from "@walletconnect/core";
import { Web3Wallet } from "@walletconnect/web3wallet";
const core = new Core({ projectId: YOUR_PROJECT_ID });
const wallet = await Web3Wallet.init({
core,
metadata: {
name: "Your Wallet Name",
description: "Your wallet description",
url: "https://yourwallet.com",
icons: ["https://yourwallet.com/icon.png"],
},
});
// Обработка session proposal от dApp
wallet.on("session_proposal", async ({ id, params }) => {
const session = await wallet.approveSession({
id,
namespaces: buildNamespaces(params.requiredNamespaces),
});
});
// Обработка запроса на подпись транзакции
wallet.on("session_request", async ({ topic, params, id }) => {
const { request } = params;
if (request.method === "eth_sendTransaction") {
// показать пользователю детали транзакции, получить подтверждение
const txHash = await signAndSend(request.params[0]);
await wallet.respondSessionRequest({ topic, response: { id, result: txHash, jsonrpc: "2.0" } });
}
});
Balances и транзакции: агрегация данных
Прямые RPC вызовы к нодам — не масштабируются при multi-chain кошельке. Используем специализированные API:
Alchemy / Infura / QuickNode — JSON-RPC доступ к EVM сетям с rate limiting и надёжностью.
Moralis / Covalent / Ankr Advanced API — агрегированные API для балансов, NFT, истории транзакций по всем EVM сетям одним запросом. Экономит 80% backend кода.
TrustWallet Assets — open source репозиторий с метаданными токенов (иконки, decimals, контракты) для 100+ сетей. Интегрируем как npm пакет или self-hosted.
Helius (Solana) — аналог Alchemy для Solana, с API для токенов и NFT.
Кастомизация и белый лейбл
Что реально кастомизируется
- Визуальный брендинг — цвета, шрифты, иконки, splash screen, onboarding флоу. Через design tokens в Tailwind/StyleSheet.
- Список поддерживаемых сетей — конфигурационный файл, не хардкод.
- Встроенные функции — включить/отключить swap, стейкинг, NFT галерею, fiat on/off ramp.
- Fiat on-ramp провайдер — MoonPay, Transak, Ramp Network. Все предоставляют white-label виджеты.
- In-app browser для dApps — WebView с инжектированным EIP-1193 провайдером.
- Push уведомления — Firebase Cloud Messaging + мониторинг адресов через WebSocket или webhook от Alchemy Notify.
Что не стоит пересобирать с нуля
Криптографические примитивы — никогда. secp256k1 подпись, keccak256, BIP-32 деривация — используем проверенные библиотеки, не собственную реализацию. Ошибка в криптографии = потеря средств пользователей и ваша репутационная катастрофа.
Мобильное приложение vs браузерное расширение
React Native — единый кодебейс для iOS и Android. react-native-quick-crypto для нативной криптографии (в 10–100x быстрее JS реализации). Expo SDK упрощает сборку, но ограничивает нативные возможности — для production кошелька лучше bare React Native.
Browser Extension — Manifest V3 (Chrome/Firefox/Edge). service_worker вместо background_page, что создаёт сложности с persistent WebSocket соединениями. Используем Plasmo framework — значительно упрощает разработку расширений с hot reload.
Web App (PWA) — наиболее доступный вариант но с ограничениями: нет нативного secure storage, ограниченный доступ к биометрии, нет deep links для WalletConnect.
Безопасность и compliance
Биометрическая аутентификация — TouchID/FaceID на iOS, BiometricPrompt на Android. Обязательна для любого production кошелька. Не заменяет шифрование, а защищает доступ к расшифрованному ключу в памяти.
Jailbreak/root detection — react-native-jail-monkey или нативные проверки. При обнаружении — предупреждение или полная блокировка.
Certificate pinning — для backend API. Предотвращает MITM атаки через компрометированные CA.
Transaction simulation — перед подписью показываем пользователю ожидаемые изменения балансов. Интегрируем Tenderly Simulation API или Blowfish (специализирован на security checks, детектирует drainer контракты).
Сроки и бюджет
| Вариант | Состав | Срок | Ориентировочный бюджет |
|---|---|---|---|
| MVP (EVM only, mobile) | RN приложение, BIP-44, WC v2, Alchemy | 6–8 нед | $30k–60k |
| Стандартный white-label | Multi-chain, swap, fiat on-ramp, браузер | 3–5 мес | $100k–200k |
| Полнофункциональный | + MPC, extension, аудит, compliance | 6–10 мес | $250k–500k |
Реалистичная оценка: большинство клиентов начинают с MVP под конкретную сеть, затем итеративно расширяют. Это правильно — пробовать всё сразу дорого и рискованно.







