ENS Registry, Registrar and Controller Explained
When something goes wrong with a .eth name, the fix almost always depends on knowing which of three contracts you are dealing with. They are separate, they hold different things, and confusing them is the source of most wasted time in ENS support threads.
The registry
The registry is the core contract of ENS. It maintains a mapping from domain name, at any level, to owner, resolver and time-to-live. All lookups start with the registry.
If you want to know who owns a name at the protocol level, the registry is the answer. It is also where the resolver field lives, which is what points a name at its records.
The registrar
A registration is a registrar's record of ownership. It is distinct from the owner field in the registry. Registrations are maintained in the registrar contract and additionally store information such as expiry date and fees paid.
This is why expiry lives in one place and ownership lives in another. The registry tells you who owns the name. The registrar tells you when it expires and what was paid for it.
The controller
The controller is the contract that registration and renewal are actually delegated to. The owner of the eth TLD delegates registration and renewal to the ETHRegistrarController contract, which acts as a subname registrar for the name eth.
This layering exists so that registration policy, pricing, and the mechanics of committing and revealing a registration can change without touching the registry that everything else depends on.
Controllers can be enabled and disabled for the .eth registrar, which is what affects registration and renewal policy across all .eth names.
Registrant and owner are the same thing
The registrant address is the owner of a name. It is the same value returned by calling ownerOf() on the Base Registrar Controller. A registrant or owner may transfer ownership and assign a controller or manager.
So when documentation says registrant and when it says owner, it is describing one role with two names. The term that is genuinely different is manager.
Owner versus manager
Drift between the two is a common practical problem; see how to keep ENS records in sync. The owner holds the name. The manager, sometimes called the controller in user-facing tools, is permitted to make changes such as setting records.
This split is deliberate and useful. A common setup is to hold ownership in a hardware wallet or multisig while a separate address manages records day to day, so routine updates never risk the ownership key.
Why the distinction matters in practice
Wrapped names add a further ownership layer on top of these contracts; see wrapped and unwrapped ENS names.
- A name that will not resolve is usually a resolver or record problem, not an ownership problem.
- A name you cannot edit is usually a manager problem. Ownership may be correct while the manager is an address you do not control.
- An expiry question belongs to the registrar, not the registry.
- A transfer changes the registry owner, and can leave the manager pointing somewhere unintended if you do not update it.
Next steps
See the ENS learning hub for the full set. Read resolvers and records explained for the layer above this, or the grace period guide for what happens to a registration at expiry.
Sources
- ENS Documentation - registry, registrar and registration terminology
- ENS Documentation - ETHRegistrarController and delegation of registration
- ENS Documentation - registrant, owner and manager roles