Інтеграція TON DNS у dApps: резолвінг доменів .ton
Ви запускаєте dApp на TON і стикаєтеся з проблемою: користувачі вводять довгі адреси гаманців (EQD...), а Web3-аудиторія звикла до читабельних імен. Без TON DNS ваша програма виглядає як сирий прототип. Ми вирішуємо це завдання: підключаємо резолвінг .ton доменів, знижуємо поріг входу для користувачів Telegram і забезпечуємо сумісність зі стандартами TON. Кожен виклик смарт-контракту DNS коштує приблизно 0.01 TON газу, що в десятки разів дешевше за аналогічні операції на Ethereum. При кешуванні результатів середній час відповіді не перевищує 300 мс. Така економія особливо важлива при масовому завантаженні профілів або маппінгу гаманців.
Які проблеми вирішує інтеграція TON DNS
Зручність для користувачів
Люди не хочуть запам'ятовувати hex-рядки. Домен mywallet.ton простіше, ніж EQD4.... При інтеграції через TON Connect ми відображаємо ім'я замість адреси — це підвищує довіру та знижує кількість помилок при переказах. За статистикою, понад 90% користувачів віддають перевагу читабельному домену.
Децентралізований хостинг (TON Sites)
Сайти на TON Sites використовують .ton домени. Інтеграція дозволяє резолвити їх через стандартний API. Ми налаштовуємо клієнт для роботи з TON Storage та DNS — сайт стає доступним через браузер з підтримкою TON.
Економія газу
Кожен виклик TON DNS використовує менше газу, ніж аналоги на Ethereum. Ми оптимізуємо запити: кешуємо результати резолвінгу та обираємо правильну категорію (wallet, dapp, site). Це дає до 30% зниження комісій при масових операціях.
Як працює резолвінг домену TON DNS?
Використовуємо TonClient і смарт-контракт DNS resolver. Нижче — робочий код на TypeScript:
Приклад коду резолвінгу
import { TonClient, Address } from "@ton/ton"; const client = new TonClient({ endpoint: "https://toncenter.com/api/v2/jsonRPC", apiKey: TON_API_KEY, }); // Резолвінг .ton домену async function resolveTONDomain(domain: string): Promise<string | null> { // Видаляємо .ton суфікс якщо є const name = domain.endsWith(".ton") ? domain.slice(0, -4) : domain; try { const result = await client.runMethod( Address.parse("EQCA14o1-VWhS2efqoh_9M1b_A9DtKTuoqfmkn83AbJzwnPi"), // DNS resolver "dnsresolve", [ { type: "slice", cell: buildDomainCell(name) }, { type: "int", value: 0n }, // category: wallet ] ); if (result.stack.remaining > 0) { const address = result.stack.readAddress(); return address.toString(); } } catch { return null; } return null; } Критичні моменти: коректне кодування імені в Cell (використовуйте Cell.foreignMessage()) та вибір категорії (0 — wallet, 1 — site, 2 — dapp). Ми тестуємо резолвінг на mainnet та testnet, покриваючи граничні випадки. Рекомендуємо додати кеш з TTL 5 хвилин для зниження навантаження.
Як інтегрувати TON DNS з TON Connect у Telegram Mini App?
Для відображення домену в UI замість адреси використовуємо хук:
import { useTonAddress } from "@tonconnect/ui-react"; function WalletDisplay() { const address = useTonAddress(); const [domain, setDomain] = useState<string | null>(null); useEffect(() => { if (address) { resolveReverseTON(address).then(setDomain); } }, [address]); return <span>{domain ?? formatAddress(address)}</span>; } Функція resolveReverseTON виконує зворотний пошук: за адресою знаходить домен. Це коштує 1-2 виклики смарт-контракту. Ми також додаємо fallback — якщо домену немає, показуємо скорочену адресу.
Чому TON DNS критичний для вашого dApp?
- Зростання екосистеми TON: понад 10 млн активних гаманців. Користувачі очікують читабельні імена.
- Telegram Web3: Mini Apps з TON Connect повинні відображати .ton домени для впізнаваності.
- SEO для децентралізованих сайтів: домени .ton індексуються деякими ботами і підвищують довіру.
Процес роботи: від запиту до деплою
| Етап | Що робимо | Результат |
|---|---|---|
| Аналіз | Вивчаємо ваше dApp, поточний стек, вимоги до резолвінгу | Технічне завдання з метриками |
| Проектування | Обираємо архітектуру: прямий TonClient або TON Connect + API | Документація схеми інтеграції |
| Реалізація | Пишемо код резолвінгу, UI-компоненти, тести | Працююча інтеграція в staging |
| Тест | Навантажувальне тестування, перевірка газових витрат, fallback | Звіт із замірами |
| Деплой | Публікуємо на mainnet, моніторинг, передача документації | Доступ до коду та dev-консолі |
Ми використовуємо Foundry для деплою смарт-контрактів (якщо потрібно) та Tenderly для моніторингу. Замовте інтеграцію TON DNS для вашого проекту.
Строки та обсяг робіт
Інтеграція базового резолвінгу (читання доменів) займає від 1 до 2 днів. Повний цикл (двонаправлений резолвінг, підтримка TON Connect, кастомні категорії) — до 5 днів. Вартість розраховується індивідуально під проект — напишіть нам, отримайте консультацію та технічну оцінку.
Типові помилки при інтеграції TON DNS
- Невірна категорія
intпри викликуdnsresolve(wallet=0, site=1, dapp=2). - Відсутність обробки fallback: якщо домен не резолвиться — показувати адресу.
- Ігнорування кешування: кожен виклик смарт-контракту коштує газу.
- Неправильне кодування імені в
Slice(використовуйтеbeginCell().storeStringTail(name).endCell()).
Ми гарантуємо, що інтеграція пройде без цих помилок. Наш досвід — 5+ проектів на TON, включаючи високонавантажені dApps та Telegram Mini Apps. Отримайте консультацію та замовте інтеграцію.
Порівняння TON DNS та ENS
| Характеристика | TON DNS | ENS |
|---|---|---|
| Базовий стандарт | Смарт-контракти TON | Смарт-контракти Ethereum |
| Газ за резолвінг | Низький (~0.01 TON) | Високий (~0.001 ETH у піку) |
| Ієрархія | Корінь → зони → домени | Реєстр → резолвер → домен |
| Зона | .ton |
.eth |
| NFT доменів | Так (ERC-721 на TON) | Так (ERC-721) |
| Покупка | Аукціон, вторинний ринок | Аукціон, регулярні ціни |
| Інтеграція з Telegram | Нативна (TON DNS + TON Sites) | Через ботів |
TON DNS у 10 разів дешевший за газом, ніж ENS, що робить його оптимальним для проектів в екосистемі TON. Замовте інтеграцію TON DNS сьогодні та отримайте консультацію по вашому проекту.







