Реалізація генерації та відновлення seed-фрази у мобільному криптогаманці

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація генерації та відновлення seed-фрази у мобільному криптогаманці
Середній
~3-5 днів
Часті запитання

Наші компетенції:

Етапи розробки

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Реалізація генерації та відновлення seed-фрази в мобільному криптокошельку

Seed-фраза — єдина точка відновлення всього кошелька. Якщо мнемоніка згенерована з поганою ентропією або відновлення дає різні адреси — користувач втрачає доступ до коштів. Обидва сценарії трапляються в production.

Генерація: де ошибаються

Найопаснішша помилка — використання псевдовипадкового джерела. Math.random() в JavaScript не криптографічно випадкова. Date.now() як seed — катастрофа. Для BIP-39 потрібно рівно 128 бітів (12 слів) або 256 бітів (24 слова) криптографічно випадкової ентропії.

На iOS правильний шлях — SecRandomCopyBytes:

var entropy = Data(count: 16) // 128 бітів для 12 слів
let result = entropy.withUnsafeMutableBytes {
    SecRandomCopyBytes(kSecRandomDefault, 16, $0.baseAddress!)
}
guard result == errSecSuccess else { throw WalletError.entropyGeneration }

На Android — SecureRandom з java.security, не Random:

val entropy = ByteArray(16)
SecureRandom().nextBytes(entropy)

React Native: react-native-get-random-values полифилит crypto.getRandomValues(), що використовує нативний CSPRNG. Без цього пакета @noble/hashes та @scure/bip39 працюють на небезпечному джерелі.

Відновлення та сумісність

Відновлення — введення 12/24 слів → ті ж адреси. Баги звичайно у нормалізації тексту: лишні пробіли, unicode пробіли (NBSP замість звичайного), регістр. bip39.validateMnemonic() повинна повернути false для таких, але UI повинна нормалізувати введення перед перевіркою — trim() та replace(/\s+/g, ' ') обов'язкові.

Друге джерело несумісності — passphrase. BIP-39 дозволяє опціональну passphrase ("25-е слово"). MetaMask її ігнорує (пуста строка). Trezor підтримує. Якщо ваш кошелек тихо передає пусту passphrase, а користувач відновлюється на пристрої, де вказав passphrase — адреси будуть різними. Потрібно явно запитати при відновленні.

UX для підтвердження seed

Показуйте слова групами по 4, не всі одразу. Після показу — верифікація: випадкові 3–4 слова в довільному порядку, користувач тапає у правильній послідовності. Не дозволяйте копіювання через clipboard за замовчуванням — clipboard читають інші програми. Якщо копіювання дозволено, чистіть clipboard через 60 секунд через UIApplication/ClipboardManager.

На Android 10+ ClipboardManager.clearPrimaryClip() — публічний API. На iOS < 16 прямої очистки немає, встановлюємо у clipboard пусту строку.

Процес

Реалізація, тестування на BIP-39 офіційних векторах, UI підтвердження seed, відновлення з нормалізацією введення. Часова шкала — 3–5 днів. Якщо потрібна підтримка passphrase та сумісність з конкретним зовнішнім кошельком — додайте день на тестування.