Интеграция с Unstoppable Domains
Unstoppable Domains — альтернатива ENS с одним ключевым отличием: имена приобретаются один раз без ежегодной оплаты. .crypto, .wallet, .nft, .x, .blockchain и другие TLD. Домены хранятся как ERC-721 NFT в Polygon и Ethereum.
Resolution через официальный SDK
import Resolution from "@unstoppabledomains/resolution";
const resolution = new Resolution({
sourceConfig: {
uns: {
locations: {
Layer1: {
url: `https://mainnet.infura.io/v3/${INFURA_KEY}`,
network: "mainnet",
},
Layer2: {
url: `https://polygon-mainnet.infura.io/v3/${INFURA_KEY}`,
network: "polygon-mainnet",
},
},
},
},
});
// Резолвинг ETH адреса
const ethAddress = await resolution.addr("brad.crypto", "ETH");
// Другие криптовалюты
const btcAddress = await resolution.addr("brad.crypto", "BTC");
// Email из профиля
const email = await resolution.email("brad.crypto");
// Все записи
const allRecords = await resolution.allRecords("brad.crypto");
Ключевые отличия от ENS
| Параметр | Unstoppable Domains | ENS |
|---|---|---|
| Модель оплаты | Однократная покупка | Ежегодная аренда |
| Сеть (основная) | Polygon L2 | Ethereum mainnet |
| TLD | .crypto, .wallet, .nft... | .eth |
| Стандарт | UNS (кастомный) | ERC-137 |
| Reverse resolution | Ограниченная | Полная |
Интеграция в UI
Паттерн использования: поддерживать оба стандарта (ENS + Unstoppable) в полях ввода адреса.
async function resolveAddress(input: string): Promise<string | null> {
// ENS
if (input.endsWith(".eth")) {
return await provider.resolveName(input);
}
// Unstoppable Domains TLDs
const udTLDs = [".crypto", ".wallet", ".nft", ".x", ".blockchain", ".dao"];
if (udTLDs.some(tld => input.endsWith(tld))) {
try {
return await resolution.addr(input, "ETH");
} catch {
return null;
}
}
// Raw address
if (ethers.isAddress(input)) return input;
return null;
}
Интеграция с Unstoppable Domains в существующий dApp — 1-2 рабочих дня. Поддержка всех record types и профилей — до 3 дней.







