05 // documentation
Integrate .ely
elynames follows the ENS architecture (registry, resolvers, reverse records, namehash), so anything that can talk ENS can talk .ely. For most apps one contract is enough: the Lens. No API keys, no backend required.
Quickstart
resolve.ts
import { createPublicClient, http } from "viem";
import { elysium, createElyNames } from "@elynames/sdk";
const client = createPublicClient({ chain: elysium, transport: http() });
const ely = createElyNames(client);
await ely.resolve("satoshi.ely"); // 0x… or 0x000… if unknown / expired
await ely.primaryName("0x7099…79C8"); // "satoshi.ely" (forward-verified) or ""
await ely.primaryNames([addrA, addrB]); // batch for leaderboards, holder tables
await ely.texts("satoshi.ely", ["avatar", "com.twitter"]);Without the SDK, call the Lens directly from any EVM library:
abi
function resolveName(string name) view returns (address) // "alice", "alice.ely", "pay.alice.ely"
function primaryNameOf(address account) view returns (string) // verified on-chain
function primaryNamesOf(address[] accounts) view returns (string[])
function texts(string name, string[] keys) view returns (string[])
// label-based API for apps that already integrated .ely lookups
function resolve(string label) view returns (address)
function text(string label, string key) view returns (string)Rules that keep users safe
- Normalize input: trim, lowercase, strip a trailing .ely. Labels are a–z, 0–9 and inner hyphens, so homoglyph spoofing is impossible.
- Resolve at the moment of sending. Never cache a name → address mapping for later payments.
- Treat 0x000… as “not found”. Expired names resolve to nothing on purpose.
- Show names with primaryNameOf; it already checks the name points back to the address.
Contracts
Mainnet addresses are published here at launch (9 Nov 2026).
LensTBARead gateway: resolve, primary names, name info, portfolios
RegistryTBAENS-compatible registry (EIP-137)
RegistrarTBAERC-721 for .ely names, expiry, on-chain metadata
ControllerTBACommit / register / renew, pricing, referrals
ResolverTBAaddr, multicoin addr, text, contenthash, name
ReverseRegistrarTBAPrimary names (addr.reverse)
MarketTBANon-custodial fixed-price listings
PriceOracleTBALength tiers + launch / re-release auctions
MetadataTBAOn-chain SVG + traits
Events to index
events
Registrar NameRegistered(uint256 indexed id, string label, address indexed owner, uint256 expires)
Registrar NameRenewed(uint256 indexed id, uint256 expires)
Registrar Transfer(address indexed from, address indexed to, uint256 indexed tokenId) // ERC-721
Controller NameRegistered(string name, bytes32 indexed label, address indexed owner, uint256 baseCost, uint256 premium, uint256 expires, address indexed referrer)
Resolver AddrChanged / AddressChanged / TextChanged / NameChanged / VersionChanged // ENS-compatible
Market Listed / Cancelled / SoldIndexer API
Optional, for feeds and discovery. Base URL: https://api.elynames.xyz
GET /v1/activity?limit=20&kind=registerLatest registrations, renewals, transfers, listings and sales, with verified primary names
GET /v1/statsActive names, holders, 24h registrations, volumes
GET /v1/market/listings?sort=price&length=3Live listings with filters (length, charset, club)
GET /v1/name/:labelIndexed name + full history
GET /v1/owner/:addressNames held by an address
GET /v1/search?q=satRegistered names by prefix
GET /v1/leaderboard/referrersTop referrers
GET /v1/priceHYPE/USD (cached from Hyperliquid)