Protocol guide

Build with DeName

DeName is a protocol for readable identifiers on Stellar. A DeName combines a label with a zone and resolves to a Stellar or Soroban address through Soroban contracts.

Use the on-chain result whenever your application moves value. The HTTP API is useful for indexed lists and interface data, while the contracts remain the source of truth.

Resolve a DeName

Split the entered DeName into its label and zone, then simulateroot-registry.get_address(name, tld). A successful result is the resolver address currently set by the DeName owner.

const result = await rootRegistry.get_address({
  name: 'alice',
  tld: 'example',
})

const address = result.result

Show the resolved address in the final confirmation screen so the person sending a payment can review it before signing.

Registration flow

Registration uses a commit-reveal flow. A wallet first submits a commitment calculated from the DeName request and a private salt, then submits the reveal transaction to complete the registration. The salt keeps the requested DeName private while the commitment is pending.

Applications can present this as two clear wallet confirmations: reserve the request, then complete the registration.

Protocol roles

Root registry
Routes a zone to its corresponding TLD contract.
TLD contract
Stores DeName ownership, expiry and resolver records for one zone.
TLD factory
Creates and registers zone contracts.
DAO treasury
Receives the protocol share of registration payments.

Contract references

Contract IDs configured for the Stellar Mainnet deployment.

Root registry
CBGDLM4DCPDIOB6WEVTNYJUAMQH2OCF45TYC36ITEHK4GROIJDWQ5LG7
TLD implementation registry
CDHU7LWK3UX4X6BALYSPOPODIYVZ5XUM2ZPI57GLF3PEQVFLX4A75TMI
TLD factory
CBXSWCN5EGTVFHA6R2X7PEIC4KPJMS3I6IY5COTOPQNDOAHQETEM6FWS
DAO treasury
CCELO3DO3AWKUKRVI53BYXXVUMZXZTZSFUO2Y66SIHQXGLRCVBOWQAIP