Реалізація підтримки ENS/Unstoppable Domains у мобільному гаманці

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

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація підтримки ENS/Unstoppable Domains у мобільному гаманці
Середній
~2-3 дні
Часті запитання

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

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

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

  • 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

Реалізація підтримки ENS/Unstoppable Domains у мобільних гаманцях

Адреси вроді 0x742d35Cc6634C0532925a3b8D4C9C3... ніхто не запам'ятовує й не вводить вручну без помилок. ENS та Unstoppable Domains вирішують цю проблему: vitalik.eth або myname.crypto розв'язуються на адресу. Реалізація у мобільному гаманці потребує розуміння обох систем — вони працюють по-різному.

ENS: Ethereum Name Service

ENS — децентралізована система імен на Ethereum. Домени .eth зберігаються у смарт-контракті за адресою 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (mainnet). Розв'язання імені — це послідовність викликів контрактів.

Прямий шлях через ethers.js (для бекенду або React Native з Web3-бібліотеками):

const provider = new ethers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_KEY');
const address = await provider.resolveName('vitalik.eth');
// returns '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'

Для нативного iOS/Android використовуйте ENS REST API від публічних провайдерів або власного RPC-вузла. Алгоритм розв'язання: ENS Registry → ENS Resolver → addr() метод.

CCIP-Read (EIP-3668): сучасні ENS імена можуть використовувати offchain резолвери — контракт повертає URL для HTTP-запитів за даними. Це ускладнює пряму реалізацію. Використовуйте готові бібліотеки: ensjs для JS, Swift SDK від ENS Labs, або REST API https://api.ens.domains/.

Зворотне розв'язання (адреса → ім'я): reverseResolve(address) повертає Primary ENS Name якщо користувач його встановив. Корисно для відображення "vitalik.eth" замість адреси в UI.

Unstoppable Domains

Unstoppable Domains підтримує .crypto, .wallet, .nft, .blockchain та інші TLD. Зберігаються на Polygon (для більшості нових) або Ethereum. Протокол розв'язання — UNS (Unstoppable Name Service).

Офіційний підхід — Resolution Libraries. Для iOS: resolution-swift від Unstoppable Domains, для Android: resolution-java.

import UnstoppableDomainsResolution

let resolution = try Resolution()
resolution.addr(domain: "brad.crypto", ticker: "ETH") { result in
    switch result {
    case .success(let address):
        print(address)
    case .failure(let error):
        print("Error: \(error)")
    }
}

Або використовуйте їхній REST API: https://resolve.unstoppabledomains.com/domains/brad.crypto — простіша інтеграція, залежить від їхнього сервісу.

Що реалізуємо у гаманці

При відправці трансакції: поле адреси приймає як 0x... так і ENS/UD домени. При введенні домену показуємо лоадер → розв'язуємо → відображаємо отриманий адрес для підтвердження. Користувач повинен бачити реальну адресу перед відправкою.

vitalik.eth → [розв'язування...] → 0xd8dA...96045 ✓

Кешування: результати розв'язання кешуємо з TTL. ENS TTL зберігається у самому контракті (зазвичай 300–3600 секунд). Для Unstoppable Domains кешуємо на 5–10 хвилин. Застарілий кеш при відправці трансакції — ризик втрати коштів.

ENS аватари: text(node, 'avatar') повертає URI аватара. Може бути IPFS URI (ipfs://), HTTP URL або NFT посилання (eip155:1/erc721:0x...). Для відображення аватара в профілі користувача потрібна підтримка всіх форматів.

Обробка помилок

Розв'язання може впасти з різних причин: домен не зареєстрований, немає запису для потрібної монети, RPC-вузол недоступний. Показуємо конкретну помилку — «Адреса ETH для цього домену не знайдена» замість загального «Помилка».

Особливий випадок: ENS імена чутливі до нормалізації (ENSIP-15). VITALIK.ETH та vitalik.eth — одне ім'я, але якщо передати ненормалізоване ім'я в контракт, отримаємо неверний результат. Нормалізація через ens-normalize бібліотеку обов'язкова.

Період: підтримка ENS або Unstoppable Domains окремо — 5–7 днів. Обидва протоколи з кешуванням, аватарами й коректною обробкою помилок — 2–3 тижні.