You're launching a dApp on TON and facing a problem: users input long wallet addresses (EQD...), but the Web3 audience is used to readable names. Without TON DNS, your application looks like a raw prototype. We solve this: we integrate .ton domain resolution, lower the entry barrier for Telegram users, and ensure compatibility with TON standards. Each DNS smart contract call costs about 0.01 TON in gas, which is tens of times cheaper than similar operations on Ethereum. With caching, the average response time does not exceed 300 ms. This savings is especially important for mass profile loading or wallet mapping.
What problems does TON DNS integration solve?
User convenience
People don't want to memorize hex strings. The domain mywallet.ton is easier than EQD4.... When integrated via TON Connect, we display the name instead of the address—this increases trust and reduces errors in transfers. According to statistics, over 90% of users prefer to see a readable domain.
Decentralized hosting (TON Sites)
Sites on TON Sites use .ton domains. Integration allows resolution via standard API. We configure the client to work with TON Storage and DNS—the site becomes accessible through a browser with TON support.
Gas savings
Each TON DNS call uses less gas than analogous calls on Ethereum. We optimize requests: cache resolution results and choose the correct category (wallet, dapp, site). This provides up to 30% reduction in fees for mass operations.
How does TON DNS domain resolution work?
We use TonClient and the DNS resolver smart contract. Below is working TypeScript code:
Resolution code example
import { TonClient, Address } from "@ton/ton"; const client = new TonClient({ endpoint: "https://toncenter.com/api/v2/jsonRPC", apiKey: TON_API_KEY, }); // Resolve a .ton domain async function resolveTONDomain(domain: string): Promise<string | null> { // Remove .ton suffix if present 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; } Critical points: correct name encoding into Cell (use Cell.foreignMessage()) and category selection (0 — wallet, 1 — site, 2 — dapp). We test resolution on mainnet and testnet, covering edge cases. We recommend adding a cache with TTL of 5 minutes to reduce load.
How to integrate TON DNS with TON Connect in a Telegram Mini App?
To display the domain in the UI instead of the address, use this hook:
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>; } The resolveReverseTON function performs reverse lookup: finds the domain by address. This costs 1-2 smart contract calls. We also add a fallback—if no domain is found, a truncated address is displayed.
Why is TON DNS critical for your dApp?
- TON ecosystem growth: over 10 million active wallets. Users expect readable names.
- Telegram Web3: Mini Apps with TON Connect must display .ton domains for recognition.
- SEO for decentralized sites: .ton domains are indexed by some bots and increase trust.
Process: from request to deployment
| Stage | What we do | Result |
|---|---|---|
| Analysis | Study your dApp, current stack, resolution requirements | Technical specification with metrics |
| Design | Choose architecture: direct TonClient or TON Connect + API | Documentation of integration scheme |
| Implementation | Write resolution code, UI components, tests | Working integration on staging |
| Test | Load testing, gas cost verification, fallback | Report with measurements |
| Deployment | Publish to mainnet, monitoring, handover of documentation | Access to code and dev console |
We use Foundry for smart contract deployment (if needed) and Tenderly for monitoring. Order TON DNS integration for your project.
Timelines and scope of work
Basic resolution (reading domains) takes 1 to 2 days. Full cycle (bidirectional resolution, TON Connect support, custom categories) takes up to 5 days. Cost is calculated individually per project—contact us for a consultation and technical assessment.
Typical mistakes when integrating TON DNS
- Incorrect
intcategory when callingdnsresolve(wallet=0, site=1, dapp=2). - Missing fallback handling: if the domain doesn't resolve, show the address.
- Ignoring caching: each smart contract call costs gas.
- Incorrect name encoding into
Slice(usebeginCell().storeStringTail(name).endCell()).
We guarantee an integration free of these mistakes. Our track record: 5+ projects on TON, including high-load dApps and Telegram Mini Apps. Get a consultation and order integration.
Comparison of TON DNS and ENS
| Characteristic | TON DNS | ENS |
|---|---|---|
| Base standard | TON smart contracts | Ethereum smart contracts |
| Gas for resolution | Low (~0.01 TON) | High (~0.001 ETH at peak) |
| Hierarchy | Root → zones → domains | Registry → resolver → domain |
| Zone | .ton |
.eth |
| NFT domains | Yes (ERC-721 on TON) | Yes (ERC-721) |
| Purchase | Auction, secondary market | Auction, regular prices |
| Integration with Telegram | Native (TON DNS + TON Sites) | Through bots |
TON DNS is 10 times cheaper in gas than ENS, making it optimal for projects in the TON ecosystem. Order TON DNS integration today and get a consultation for your project.







