ar.io Logoar.io Documentation

Returned Names

Overview

When an ArNS name expires or is voluntarily returned to the protocol, it enters a Returned Name Dutch Auction before becoming available for standard registration. This mechanism prevents name squatting at expiry and provides fair pricing through a time-decaying premium.

Dutch Auction Mechanics

Returned names start at a high premium and decay to the base price over a return window:

  • Starting price: premium above the base registration price
  • Ending price: standard registration price
  • Decay: decreases over time until standard pricing resumes

Revenue Split

When a returned name is purchased during the Dutch auction:

  • 50% goes to the protocol balance (funds epoch rewards)
  • 50% goes to the previous owner (the ANT holder at the time of return)

This incentivizes name owners to voluntarily release names they no longer need, since they receive half the resale value.

How Names Enter the Returned Pool

Lease Expiration

When a leased name's term ends and the grace period elapses without renewal or conversion to permanent ownership, the name enters the returned pool.

Voluntary Release

Permanent name owners can voluntarily release their name back to the protocol. This places the name in the returned pool.

Lifecycle

PhaseDurationPriceAction
Active leaseAs registeredN/AName is in use
Grace periodAfter expiryN/AOwner can renew or convert
Dutch auctionReturn windowPremium → standard priceAnyone can purchase
Standard registrationIndefiniteBase priceNormal ArNS purchase

Querying Returned Names

Use the SDK to check available returned names and their current auction price:

const ario = ARIO.mainnet();

// Get all active returned names
const returnedNames = await ario.getArNSReturnedNames({
  limit: 100,
  sortBy: 'endTimestamp',
  sortOrder: 'asc',
});

// Get a specific returned name
const name = await ario.getArNSReturnedName({ name: 'example' });

// Check current cost (includes auction premium)
const cost = await ario.getTokenCost({
  intent: 'Buy-Name',
  name: 'example',
  type: 'permabuy',
});

How is this guide?