ENS/Unstoppable Domains Support in Mobile Wallet

BLACKSPARC.TECH is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1All 1735 services
ENS/Unstoppable Domains Support in Mobile Wallet
Medium
~2-3 days
Frequently Asked Questions

Our competencies:

Development stages

Latest works

  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    495

Implementing ENS/Unstoppable Domains Support in Mobile Wallets

Addresses like 0x742d35Cc6634C0532925a3b8D4C9C3... nobody remembers or enters manually without mistakes. ENS and Unstoppable Domains solve this: vitalik.eth or myname.crypto resolve to an address. Implementing this in a mobile wallet requires understanding both systems—they work differently.

ENS: Ethereum Name Service

ENS is a decentralized naming system on Ethereum. .eth domains are stored in a smart contract at address 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e (mainnet). Resolving a name involves a sequence of contract calls.

The direct path using ethers.js (for backend or React Native with Web3 libraries):

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

For native iOS/Android, use ENS REST API from public providers or your own RPC node. Resolution algorithm: ENS Registry → ENS Resolver → addr() method.

CCIP-Read (EIP-3668): modern ENS names may use offchain resolvers—the contract returns a URL for HTTP data requests. This complicates direct implementation. Use ready-made libraries: ensjs for JS, ENS Labs Swift SDK, or REST API https://api.ens.domains/.

Reverse resolution (address → name): reverseResolve(address) returns the Primary ENS Name if the user set one. Useful for displaying "vitalik.eth" instead of the address in UI.

Unstoppable Domains

Unstoppable Domains supports .crypto, .wallet, .nft, .blockchain, and other TLDs. Stored on Polygon (for most new ones) or Ethereum. Resolution protocol is UNS (Unstoppable Name Service).

The official approach uses Resolution Libraries. For iOS: resolution-swift from Unstoppable Domains; for 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)")
    }
}

Or use their REST API: https://resolve.unstoppabledomains.com/domains/brad.crypto—simpler integration, depends on their service.

What to Implement in the Wallet

When sending transactions: accept both 0x... addresses and ENS/UD domains in the address field. When a domain is entered, show a loader → resolve → display the resulting address for confirmation. Users must see the real address before sending.

vitalik.eth → [resolving...] → 0xd8dA...96045 ✓

Caching: cache resolution results with TTL. ENS TTL is stored in the contract itself (usually 300–3600 seconds). For Unstoppable Domains, cache for 5–10 minutes. Stale cache when sending a transaction is a risk of losing funds.

ENS Avatars: text(node, 'avatar') returns an avatar URI. Can be IPFS URI (ipfs://), HTTP URL, or NFT reference (eip155:1/erc721:0x...). Supporting all formats is needed for displaying avatars in user profiles.

Error Handling

Resolution can fail for several reasons: domain not registered, no record for the needed coin, RPC node unavailable. Show specific errors—"ETH address for this domain not found" instead of generic "Error".

Special case: ENS names are sensitive to normalization (ENSIP-15). VITALIK.ETH and vitalik.eth are one name, but passing an unnormalized name to the contract gives the wrong result. Normalization via ens-normalize library is mandatory.

Timeline: supporting either ENS or Unstoppable Domains separately—5–7 days. Both protocols with caching, avatars, and proper error handling—2–3 weeks.