TON DNS
TON DNS is a service for translating human-readable domain names (such as example.ton or mysite.temp.ton) into TON smart contract addresses, ADNL addresses used by services on the TON Network, and other network entities.
What TON DNS resolves
Section titled “What TON DNS resolves”TON DNS records can point to several types of addresses:
- Wallet addresses: on-chain smart contract addresses, allowing cryptocurrency transfers to a human-readable domain name instead of a raw address.
- ADNL addresses: used to locate TON Sites running on the TON Network.
- TON Storage Bag IDs: identifiers for files and data stored via TON Storage.
- Next resolver references: delegation of subdomains to another DNS smart contract.
- Text records: arbitrary UTF-8 text associated with a domain name.
Implementation
Section titled “Implementation”TON DNS is built as a three-level tree of smart contracts:
| Contract | Role |
|---|---|
| Root DNS | Lives on the masterchain (config param #4). Routes queries to zone resolvers (.ton, .t.me). |
| Collection (resolver) | Implements dnsresolve and acts as an NFT collection (TEP-0062). Mints one NFT item per registered domain. |
| Item (domain NFT) | Holds DNS records. Manages auctions. Transferable through any NFT-compatible wallet or marketplace. |
The DNS resolution interface follows TEP-0081.
The .t.me namespace operates as a delegated sub-resolver on the same infrastructure, implementing the same dnsresolve interface and supporting the same record types as .ton domains.
.ton vs .t.me
Section titled “.ton vs .t.me”.ton domains are on-chain NFTs registered through a public auction, owned by whoever controls the item contract, and fully transferable on any NFT marketplace. They are suited for permanent on-chain identity, dApp front-ends, and services that require trustless ownership verification. .t.me domains are Telegram usernames delegated into the DNS tree: ownership is tied to the Telegram account, not to an on-chain key, and transfer is handled through Telegram’s platform rather than a TON smart contract. Use .ton when on-chain verifiability and transferability matter; use .t.me when the primary audience is Telegram users and the username already exists.
Every DNS smart contract exposes a dnsresolve get-method that accepts a subdomain slice and a category hash, returning the number of bits consumed and a cell containing the DNS record. If fewer bits were consumed than the full subdomain length, the returned cell is a dns_next_resolver pointing to the contract that resolves the remainder. Full interface details are in the TON DNS reference.
Domain lifecycle
Section titled “Domain lifecycle”Domains must be renewed annually. Expiration triggers a re-auction: anyone can call op::dns_balance_release() on an expired domain contract. The attached value must meet the minimum auction price, which depends on domain length. If a domain expires while a resolution is in progress, the resolver returns the stale records until the contract state changes; callers should treat a zero owner address as an unowned domain. The registration guide covers renewal and re-auction mechanics.
Ecosystem integration
Section titled “Ecosystem integration”TON domain names such as .ton domains are recognized by wallet applications and explorers in the TON ecosystem. Users can send cryptocurrency to a TON DNS domain name instead of copying a 256-bit account identifier.
TON DNS also integrates with other TON services:
- TON Sites: a
dns_adnl_addressrecord pointing to an ADNL address gives a site a human-readable.tondomain. - TON Storage: a
dns_storage_addressrecord maps a domain name to a Bag ID, making stored files addressable by name. - TON Proxy: resolves
.tondomains to ADNL addresses before routing HTTP traffic to the target site.
Related pages
Section titled “Related pages”- How to register a TON domain: domain acquisition, record assignment, and renewal
- TON DNS reference: record types, TL-B schemas, and the
dnsresolveinterface - TON DNS subdomains: subdomain creation and delegation