What is Unstoppable Domains Service Technical Architecture Registry Contracts and Web3 Resolution
A comprehensive technical guide to Unstoppable Domains, exploring Polygon ERC-721 domain contracts, multi-chain address resolution SDKs, IPFS decentralized website hosting, and single sign-on authentication models.

As the decentralized web expands, the traditional Domain Name System (DNS) - managed by centralized registries like ICANN and dependent on centralized Certificate Authorities - presents significant censorship, security, and single-point-of-failure risks. Unstoppable Domains provides a decentralized, blockchain-native naming system engineered to replace alphanumeric public key wallet addresses with human-readable domain identifiers (such as alice.crypto, bob.x, or dao.polygon).
Unlike legacy web domains leased annually from registrars like GoDaddy, Unstoppable Domains operate as non-fungible tokens (NFTs) minted primarily on the Polygon Layer 2 network. Once minted, the user maintains absolute, perpetual self-custody of the domain asset inside their Web3 wallet, eliminating recurring renewal fees, arbitrary domain seizures, and third-party registrar lock-ins.
1. Core Architectural Pillars of Blockchain Naming Services
Traditional DNS converts human-readable domain names (e.g., google.com) into IP addresses (e.g., 142.250.190.46). Unstoppable Domains extends this resolution concept into multi-chain asset routing, decentralized storage routing, and cryptographic identity attestation.
Key Technical Characteristics
- One-Time Minting Model: Domains are purchased outright via a single payment transaction. The contract contains no renewal or expiration logic; domain ownership persists as long as the user retains private key control of the underlying NFT wallet.
- Multi-TLD Ecosystem: Unstoppable Domains supports multiple Top-Level Domains (TLDs), including
.crypto,.x,.wallet,.nft,.dao,.polygon,.eth(secondary markets), and custom enterprise extensions. - Multi-Chain Record Mapping: A single domain name can simultaneously resolve to hundreds of distinct cryptocurrency wallet addresses across Ethereum, Bitcoin, Solana, Polygon, Cosmos, and Avalanche.
- Decentralized Website Hosting: Pointing domain records to an InterPlanetary File System (IPFS) Content Identifier (CID) creates censorship-resistant, decentralized websites accessible globally without centralized web servers.
2. On-Chain Smart Contract Mechanics and Registry Architecture
Unstoppable Domains operates via a set of EVM smart contracts deployed on Polygon (and Ethereum mainnet for legacy .crypto domains). The architecture separates domain token ownership from record data storage.
Namehashing and Token IDs
Domain names are stored on-chain as 256-bit cryptographic hashes generated via the Namehash Algorithm. This standard recursively hashes domain labels to compute a unique 32-byte integer (uint256 tokenId):
$$\text{Namehash}("") = 0x0000000000000000000000000000000000000000000000000000000000000000$$
$$\text{Namehash}(\text{label} . \text{context}) = \text{keccak256}(\text{Namehash}(\text{context}) \mathbin{\Vert} \text{keccak256}(\text{label}))$$
For example, computing the token ID for alice.crypto:
- Calculate hash of TLD:
h1 = keccak256(Namehash("") + keccak256("crypto")) - Calculate hash of full domain:
tokenId = keccak256(h1 + keccak256("alice"))
This tokenId serves as the standard ERC-721 token identifier within the Proxy Registry contract.
Key-Value Storage Schema in Resolver Contracts
Record data (such as BTC, ETH, and SOL wallet addresses, or IPFS hashes) is stored within the RecordStorage contract as string key-value pairs:
// Simplified Solidity representation of Unstoppable Domains Record Storage
contract RecordStorage {
/ Maps Token ID => (Record Key => Record Value)
mapping(uint256 => mapping(string => string)) private _records;
event RecordSet(uint256 indexed tokenId, string key, string value);
function setRecord(uint256 tokenId, string calldata key, string calldata value) external {
require(_isApprovedOrOwner(msg.sender, tokenId), "Caller is not owner or approved");
_records[tokenId][key] = value;
emit RecordSet(tokenId, key, value);
}
function getRecord(uint256 tokenId, string calldata key) external view returns (string memory) {
return _records[tokenId][key];
}
}
Standardized record keys include:
crypto.ETH.address: Ethereum mainnet and L2 wallet recipient address.crypto.BTC.address: Bitcoin SegWit/Taproot wallet address.crypto.SOL.address: Solana wallet address.dweb.ipfs.hash: IPFS CID for decentralized website resolution.
3. Integrating Unstoppable Domains via Resolution SDKs
For software engineers building mobile wallets, crypto exchanges, or web applications, integrating domain resolution requires only a few lines of code using official Resolution SDKs (@unstoppabledomains/resolution).
// JavaScript Node.js Integration Example
import { Resolution } from '@unstoppabledomains/resolution';
const resolution = new Resolution({
sourceConfig: {
uns: {
locations: {
Layer2: {
network: 'polygon-mainnet',
url: 'https://polygon-rpc.com',
},
},
},
},
});
async function resolveDomain(domainName, ticker) {
try {
/ Resolve cryptocurrency payment address
const address = await resolution.addr(domainName, ticker);
console.log(`Resolved ${ticker} address for ${domainName}:`, address);
return address;
} catch (error) {
console.error(`Failed to resolve ${domainName}:`, error.code);
}
}
// Example Execution
resolveDomain('brad.crypto', 'ETH');
resolveDomain('brad.crypto', 'BTC');
Python SDK Resolution Pattern
from unstoppable_resolution import Resolution
resolution = Resolution()
try:
eth_address = resolution.addr("alice.crypto", "ETH")
ipfs_hash = resolution.ipfs_hash("alice.crypto")
print(f"Ethereum Address: {eth_address}")
print(f"IPFS Hash: {ipfs_hash}")
except Exception as e:
print(f"Domain resolution failed: {e}")
4. Architectural Comparison: Unstoppable Domains vs. ENS
Understanding the technical trade-offs between Unstoppable Domains (UD) and the Ethereum Name Service (ENS) is essential for Web3 architects and protocol developers.
| Evaluation Metric | Unstoppable Domains (UD) | Ethereum Name Service (ENS) |
|---|---|---|
| Primary Blockchain | Polygon Layer 2 (ERC-721) | Ethereum Layer 1 (Expanding to L2s) |
| Fee Structure | One-time registration fee ($5 - $40+), 0 renewals | Annual lease model ($5 - $640+/yr) based on length |
| Top-Level Domains (TLDs) | Multi-TLD (.crypto, .x, .polygon, .wallet) |
Primarily .eth + ICANN DNSSEC imports |
| Governance Structure | Corporate entity (Unstoppable Domains Inc.) + DAO | ENS DAO ($ENS governance token) |
| Browser Resolution | Native in Brave/Opera, Chrome extension / Unstoppable API | Native in Brave/Opera, .limo / .link HTTPS gateways |
| DNSSEC Integration | Developing ICANN TLD partnerships | Full native DNSSEC cryptographic import for .com/.org |
5. Gasless Meta-Transactions and EIP-712 Signature Resolution
To allow non-technical users to update domain records (such as linking a new Solana or Bitcoin wallet address) without requiring them to pay Polygon MATIC/POL gas fees directly, Unstoppable Domains utilizes EIP-712 Typed Structured Data Signatures and meta-transaction relayers.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
import "@openzeppelin/contracts/utils/cryptography/EIP712.sol";
contract MetaTransactionResolver is EIP712 {
using ECDSA for bytes32;
bytes32 private constant SET_RECORD_TYPEHASH =
keccak256("SetRecord(uint256 tokenId,string key,string value,uint256 nonce)");
mapping(uint256 => uint256) public nonces;
mapping(uint256 => mapping(string => string)) private _records;
event RecordSet(uint256 indexed tokenId, string key, string value);
constructor() EIP712("UnstoppableResolver", "1") {}
function setRecordBySignature(
uint256 tokenId,
string calldata key,
string calldata value,
address owner,
uint256 signatureNonce,
bytes calldata signature
) external {
require(signatureNonce == nonces[tokenId]++, "Resolver: Invalid nonce");
bytes32 structHash = keccak256(
abi.encode(
SET_RECORD_TYPEHASH,
tokenId,
keccak256(bytes(key)),
keccak256(bytes(value)),
signatureNonce
)
);
bytes32 digest = _hashTypedDataV4(structHash);
address recoveredAddress = digest.recover(signature);
require(recoveredAddress == owner, "Resolver: Invalid signature signer");
_records[tokenId][key] = value;
emit RecordSet(tokenId, key, value);
}
}
This meta-transaction pattern enables a frictionless user experience:
- The domain owner signs a typed message (
EIP-712) off-chain in their mobile wallet for free. - A centralized or decentralized relayer submits the signed message to the Polygon smart contract, covering the small transaction gas fee on the user's behalf.
- The contract cryptographically validates the signature and updates the record state.
6. ICANN DNSSEC Bridges and Web2 / Web3 Convergence
A primary challenge facing Web3 domain systems is bridging resolution between traditional Web2 HTTP/HTTPS infrastructure and decentralized blockchain networks.
ICANN Top-Level Domain Expansion
While early Unstoppable Domains utilized non-ICANN TLDs (such as .crypto or .x), recent developments bridge ICANN-accredited TLDs (like .polygon or traditional .com/.net extensions) onto Web3 ledgers using DNSSEC (Domain Name System Security Extensions) verification:
- DNSSEC TXT Records: Domain owners configure a public
TXTrecord on their registrar pointing to their Polygon or Ethereum wallet address. - On-Chain Proof Verification: Smart contracts verify the RSA/ECC cryptographic signatures embedded in the DNSSEC chain of trust, granting on-chain representation of traditional ICANN domains.
7. Decentralized Website Hosting and Single Sign-On (SSO)
Beyond simple wallet address replacement, Unstoppable Domains provides infrastructure for decentralized web publishing and self-custodial user authentication.
Login with Unstoppable (Single Sign-On)
"Login with Unstoppable" offers an alternative to "Sign in with Google" or traditional email/password forms. Leveraging OpenID Connect (OIDC) principles backed by wallet signatures:
- The dApp requests domain authentication via Web3 wallet prompt.
- The user signs a cryptographic challenge message using the private key owning the domain NFT.
- The dApp verifies the signature against the domain owner on-chain, granting instant authentication without storing user passwords in centralized databases.
8. Career Opportunities in Web3 Naming & Identity Infrastructure
As digital identity and cross-chain domain resolution become standard features across mobile wallets, decentralized social platforms (Lens, Farcaster), and Web3 applications, engineering demand for domain specialists continues to grow.
In-Demand Skill Sets
- Smart Contract Development (Solidity): Building ERC-721/ERC-1155 registry contracts, resolution proxies, and gasless meta-transaction relayers.
- Frontend & Mobile SDK Integration: Integrating resolution libraries into React, React Native, Swift, and Kotlin applications.
- Decentralized Storage Protocols: Configuring IPFS gateways, Arweave permanent storage, and Filecoin pinning services.
- Zero-Knowledge Identity: Integrating ZK proof attestations into domain profiles for private KYC verification.
Key Roles in Web3 Identity Engineering
- Domain Resolution Engineer: Develops high-availability RPC caching layers and SDK libraries for multi-chain domain resolution.
- Web3 Identity Product Manager: Designs user onboarding flows, single-sign-on (SSO) frameworks, and cross-chain profile aggregation.
- Smart Contract Security Auditor: Audits domain registries, transfer restrictions, and resolver proxy contracts against access control vulnerabilities.
9. IPFS and Arweave Decentralized Storage Integration
Storing website files (HTML, CSS, JavaScript, media assets) directly on the Polygon blockchain is cost-prohibitive due to state storage fees. Unstoppable Domains solves this by separating identity routing from file storage.
IPFS vs Arweave Storage Mechanics for Domain Owners
- IPFS (InterPlanetary File System): Uses content-addressable hashes (
Qm...orbafy...). Requires active pinning services (such as Pinata or Infura) or persistent node seeding to prevent garbage collection. - Arweave (Permaweb): Uses blockweave transaction hashes (
ar://...). Requires a one-time fee to permanently archive website files for 200+ years, providing true perpetual hosting matching the domain's one-time purchase model.
10. Social Graph Integration (Lens Protocol & Farcaster)
Modern Web3 identity extends beyond payment addresses to decentralized social graphs. Unstoppable Domains integrates with Lens Protocol and Farcaster to serve as unified cross-application identity cards.
- Farcaster FCID Attestation: Binding an Unstoppable Domain to a Farcaster account ID enables users to verify their handle across Warpcast, Supercast, and third-party social clients.
- Lens Protocol NFT Profiles: Linking domain NFTs with Lens handle NFTs establishes unified reputation, follower graphs, and portable messaging channels across Web3 social networks.
11. Technical Interview Questions for Web3 Identity Engineering Positions
When applying for identity and domain infrastructure positions:
- Explain Namehash Collisions: Discuss why Keccak-256 recursive hashing prevents namehash collisions across multi-level domain hierarchies.
- Detail Meta-Transaction Security: Explain how replay attack protections (nonces and domain separators) are constructed in EIP-712 typed signature verification.
- Compare Resolution Latency Solutions: Detail how to construct local client-side caches (Redis, IndexedDB) to avoid querying RPC nodes on every wallet keystroke.
- Detail IPFS Gateway Fallbacks: Explain how resolution SDKs fallback from local IPFS nodes to public HTTP gateways (
ipfs.io,cloudflare-ipfs.com) when local daemon connections time out.
12. Enterprise Subdomain Issuance and Domain Fractionalization
To support organizations, DAOs, and Web3 platforms managing thousands of community members, Unstoppable Domains supports programmatic Subdomain Issuance.
Technical Implementation of Subdomain Registries
- L2 Subdomain Off-Chain Offloading: Rather than minting expensive L1/L2 NFTs for every individual user, enterprise projects construct off-chain Merkle tree registries or Layer 2 sub-resolver contracts.
- Programmatic API Sub-Domain Generation: Protocols issue user handles (e.g.,
user.exchange.crypto) automatically upon account registration using server-side API keys that interact with the Unstoppable Domains Partner API. - Subdomain Permissions & Revocation: Parents can retain root key permissions to revoke subdomains or delegate full non-custodial ownership to the end-user wallet, enabling granular access control for enterprise organizations.
13. Reverse Resolution Architecture and Indexing Pipelines
While forward resolution translates a human-readable domain (e.g., alice.crypto) into a wallet address (0x123...), Reverse Resolution performs the inverse lookup: mapping a wallet address back to its primary display domain.
High-Performance Indexing Infrastructure
Querying the Polygon blockchain on every web page render introduces unacceptable latency. Production Web3 platforms deploy dedicated indexing nodes (utilizing The Graph, Goldsky, or custom PostgreSQL indexers) to maintain real-time local replicas of domain mappings:
-- SQL Schema for Indexing Unstoppable Domains Mappings
CREATE TABLE domain_records (
token_id NUMERIC PRIMARY KEY,
domain_name VARCHAR(255) NOT NULL,
owner_address VARCHAR(42) NOT NULL,
eth_address VARCHAR(42),
btc_address VARCHAR(100),
sol_address VARCHAR(50),
ipfs_cid VARCHAR(255),
updated_at_block BIGINT NOT NULL
);
CREATE INDEX idx_eth_address ON domain_records(eth_address);
CREATE INDEX idx_domain_name ON domain_records(domain_name);
Future Directions in Zero-Knowledge Identity
As Web3 privacy frameworks evolve, domain services are integrating zero-knowledge identity proofs (zk-Passports, Semaphore zero-knowledge groups, and zk-SNARK attestations). This architecture enables users to resolve domain identity records and verify accredited investor status or country of residence without revealing their underlying raw transaction history, IP addresses, or full multi-chain wallet balances to third-party web applications. Furthermore, ongoing research into cross-chain name resolution bridges ensures that identity verification remains consistent across all Layer 1 and Layer 2 ecosystems directly.
Unstoppable Domains represents a critical component of Web3 user experience infrastructure. By replacing cryptographic public key strings with human-readable, self-custodial domain NFTs, it accelerates user onboarding across the global decentralized internet.