FAQ
Everything you need to know about Lyre and ENS subnames for NFT collections.
General
What is Lyre? +
Lyre is an ENSIP-10 wildcard ENS resolver that binds ENS subnames to ERC-721 NFT ownership. It lets NFT collection owners give every token holder a subname under their ENS name — no on-chain subname registration needed. For example, if a collection owns nouns.eth, token #1337 automatically resolves 1337.nouns.eth to the current owner of that token.
What are ENS subnames? +
ENS subnames are names nested under a parent ENS name, like sub.parent.eth. They can have their own addresses and records. Normally creating subnames requires an on-chain transaction for each one, but Lyre uses wildcard resolution to serve them automatically based on NFT ownership.
What problem does Lyre solve? +
Without Lyre, giving each NFT holder a subname would require creating and managing thousands of individual on-chain subname registrations. Lyre replaces all of that with a single contract deployment. Once set up, subnames are resolved dynamically — they always reflect the current NFT owner with zero ongoing maintenance.
How It Works
What is ENSIP-10 wildcard resolution? +
ENSIP-10 is an ENS standard that allows a resolver on a parent name to answer queries for any subname, even ones that don’t have their own records in the ENS registry. When someone looks up 1337.nouns.eth, ENS first checks if that exact subname has a resolver. If not, it walks up to nouns.eth and calls its resolver’s resolve() function. That’s where Lyre handles the request.
How does Lyre resolve a subname like 1337.nouns.eth? +
When 1337.nouns.eth is looked up:
- ENS checks the registry — no resolver is set for
1337.nouns.eth - ENS walks up to
nouns.ethand finds Lyre as the ENSIP-10 resolver - Lyre parses the token ID (1337) from the DNS-encoded name
- Lyre calls
ownerOf(1337)on the NFT contract and returns the current owner - If the label isn’t a valid integer, Lyre returns empty (no error)
What happens if I create an explicit subname for the same name? +
Explicit subname records always take priority — this is handled by the ENS protocol itself, not by Lyre. If you create an explicit record for treasury.nouns.eth pointing to a multisig, that will always be used, and Lyre is never consulted. This means collection owners can reserve specific subnames while still using Lyre for token-ID-based subnames.
What happens with non-numeric subnames like random.nouns.eth? +
Non-numeric labels and non-existent token IDs return address(0) or an empty string instead of reverting. This avoids ResolverError in ENSIP-23 Universal Resolver clients and makes the experience graceful for any lookup that doesn’t match a real token.
Setup
What do I need to set up Lyre for my collection? +
You need three things:
- An ENS name you control (e.g.
nouns.eth) - An ERC-721 NFT contract address
- A wallet with enough ETH to deploy the Lyre contract and set the resolver
How does the deployment process work? +
- Connect your wallet and sign in
- Enter your collection name, ENS name, and NFT contract address
- Click “Deploy” — this deploys the Lyre contract and sets it as the resolver for your ENS name in a single flow (two transactions)
After that, subnames like {tokenId}.yourname.eth will automatically resolve to the current token owners.
Does the NFT contract need to be modified? +
No. Lyre works with any standard ERC-721 contract. It only reads ownerOf(tokenId), which is part of the base ERC-721 interface. No modifications, upgrades, or permissions are needed on the NFT contract side.
Text Records
What are text records? +
ENS text records are key-value pairs stored on-chain alongside an ENS name. Common keys include avatar, com.twitter, com.github, url, and description. Lyre lets NFT holders set text records on their subnames so apps and profiles can display richer information.
Who can set text records? +
Only the current owner of a token can set text records for that token’s subname. The setText function on the Lyre contract checks ownerOf(tokenId) and reverts if the caller isn’t the current owner.
What text record keys are supported? +
Lyre supports any arbitrary string key — there are no restrictions. You can use standard ENS keys like avatar, com.twitter, or url, or define your own custom keys.
Ownership & Transfers
What happens when an NFT is transferred? +
The subname immediately resolves to the new owner. Since Lyre calls ownerOf(tokenId) at query time, address resolution always reflects the current on-chain owner with zero delay or additional transactions.
Do text records persist after a transfer? +
Yes. Text records are stored per token ID, not per wallet address, so they persist across transfers. The new owner inherits existing records and can update or overwrite them. The previous owner can no longer modify them since setText requires current ownership.
Security
Who controls the Lyre contract? +
The deployer is the initial owner. Ownership can be transferred via transferOwnership. The owner role is limited — it does not grant the ability to modify token subnames or text records. Only individual token holders can set records for their own tokens.
Can the contract be upgraded? +
No. Lyre is a non-upgradeable contract with immutable constructor parameters. The NFT contract address and parent node are set at deployment and cannot be changed. If you need different parameters, you deploy a new contract.
Is Lyre audited? +
Lyre has not undergone a formal audit. The contract is intentionally simple — a single file with minimal logic — making it straightforward to review. The full source code is open and verifiable on-chain.
Costs
What does it cost to deploy Lyre? +
Deploying the Lyre contract is a single transaction. The gas cost depends on current network conditions but is comparable to deploying any moderately-sized smart contract. There is no fee charged by Lyre itself — you only pay the standard Ethereum gas cost.
Are there recurring fees? +
No. Lyre has no recurring fees, subscriptions, or per-lookup costs. Once deployed and set as the resolver, it works indefinitely. The only ongoing cost is renewing your parent ENS name, which is an ENS fee unrelated to Lyre.
Does it cost gas for token holders to set text records? +
Yes. Setting a text record via setText is an on-chain transaction that writes to contract storage, so it costs gas. Reading/resolving subnames is free since it’s a view call.