Skip to content
Elyname

Everything you need to claim, use and build with .ely names.

Claim a name

A .ely name replaces your 0x address and gives you a public page at elyname.com/yourname. You need a wallet with a little HYPE on Elysium.

  • SearchType the name you want. You see at once if it is free and what it costs.
  • CommitConfirm a first transaction that reserves your claim privately, then wait a few seconds.
  • RegisterConfirm the second transaction. The name is yours, and so is its profile page.

Ready? Find your name.

Pricing

One price per year, set by length. Pay for 1 to 5 years at once.

  • 5 characters and more0.065HYPE a year, about $5
  • 4 characters0.13HYPE a year, about $10
  • 3 characters0.19HYPE a year, about $15
  • 1 and 2 charactersBy auction

One and two character names are sold only through launch auctions. Highest bid wins and gets the name for a year.

Renew and expiry

Anyone can renew a name, at the same yearly price, from My names or any wallet.

After expiry the owner keeps a 30 day grace period to renew. The name then opens to everyone with a premium that starts at 100 HYPE, halves every day and reaches zero after 21 days.

Primary name

Your primary name is the one apps show instead of your address. You can own many names but only one is primary.

Set it when you claim, or later from My names. It only shows when the name also points to your address.

Profile records

Records are what your profile shows: avatar, X, Telegram, site, Discord and GitHub. They live on chain and any app can read them.

Keys follow ENS conventions: avatar, url, com.twitter, org.telegram, com.discord, com.github, description.

Resolve a name

Elyname is ENS compatible: ask the registry for the resolver of a name, then ask the resolver. There is no universal resolver, so call them directly.

Registry0xf315ea757625d7bc103f6d002ef84e1a409698fa
Public resolver0xa23591153ab8a9b1b4f2413b33bd16803df5aef7
import { createPublicClient, http, namehash, parseAbi } from "viem";const client = createPublicClient({ transport: http("https://rpc-live.boxa.club") });const abi = parseAbi([  "function resolver(bytes32 node) view returns (address)",  "function addr(bytes32 node) view returns (address)",  "function text(bytes32 node, string key) view returns (string)",]);const registry = "0xf315ea757625d7bc103f6d002ef84e1a409698fa";// alice.ely → 0x addressconst node = namehash("alice.ely");const read = (address, functionName, args) => client.readContract({ address, abi, functionName, args });const resolver = await read(registry, "resolver", [node]);const address = await read(resolver, "addr", [node]);const x = await read(resolver, "text", [node, "com.twitter"]);
// 0x address → primary nameconst rnode = namehash(`${address.slice(2).toLowerCase()}.addr.reverse`);const rres = await read(registry, "resolver", [rnode]);const name = await client.readContract({  address: rres,  abi: parseAbi(["function name(bytes32 node) view returns (string)"]),  functionName: "name",  args: [rnode],});// show it only if name resolves back to the same address

Public API

Read only JSON, no key needed, rate limited per IP. All prices are in HYPE.

  • GET /api/names/[label]Availability, price for one year, owner and records of a name.
  • GET /api/names?sort=recentLatest registrations. Use sort=expiring for names expiring soon.
  • GET /api/resolve?name=alice.elyThe address and records a name points to.
  • GET /api/resolve?address=0x…The primary name of an address.
  • GET /api/profile/[label]Public profile: records, owner, other names, expiry.
  • GET /api/account/[address]Every name a wallet owns, and its primary name.
  • GET /api/avatar/[label]The avatar image of a name, or a generated placeholder.
  • GET /api/auctionsLive, upcoming and ended short-name auctions.
  • GET /api/pricingYearly price per length, grace and premium rules.
  • GET /api/statsNames registered, owners, volume.

Your name is waiting.

Claim my name