ENSNode Plugins
What is an ENSNode Plugin?
Section titled “What is an ENSNode Plugin?”An ENSNode Plugin is an abstract specification that defines how onchain data relevant to ENS should be indexed into ENSDb. It is not an implementation — it is a standard that any ENSDb Writer can implement and that any ENSDb Reader can read.
Each ENSNode Plugin defines:
- Name — e.g.
unigraph,protocol-acceleration,subgraph. - Datasources — which onchain contracts should be indexed, as a function of an ENS namespace.
- Dependency relationships — other plugins that must (or must not) be activated concurrently.
- Indexed data model — the tables, columns, and indexes that implementations of the plugin must produce in ENSDb.
- Standards and invariants — rules for how onchain events from the datasources are translated into the indexed data model during indexing.
- Versioning — a version number that can be stored in the ENSNode Metadata, to track which version of the plugin standard is being created by an ENSDb Writer and is available to ENSDb Readers.
Why ENSNode Plugins Matter
Section titled “Why ENSNode Plugins Matter”ENSNode Plugins are a key architectural piece that enables a decoupling between ENSDb Writers and ENSDb Readers, so that anyone can create their own implementations of these. For example, any team working on indexing infrastructure can implement an ENSDb Writer and have it produce a standards-compliant ENSDb. On the other hand, any team working on products or infrastructure in the ENS ecosystem can build their own standards-compliant ENSDb Reader and have it query ENSDb.
When new ENSNode plugins are created, it becomes possible for the ENS Omnigraph API (or other APIs built by any ENSDb Reader) to unify the ability to query across ENSNode plugins in a single query. For example, you could query both ENS state from the unigraph and EFP state about followers from the efp plugin in a single Omnigraph GraphQL query.
Existing Plugins
Section titled “Existing Plugins”ENSIndexer is a reference implementation of an ENSDb Writer that implements multiple existing ENSNode Plugin specifications. The code for each plugin inside ENSIndexer is a reference implementation of that plugin’s abstract specification. The ENSNode Plugins implemented in ENSIndexer today are:
| Plugin | Description |
|---|---|
unigraph | Unified ENSv1 + ENSv2 data model with polymorphic entities |
protocol-acceleration | Accelerated lookups for ENS resolution |
subgraph | Legacy ENS Subgraph-compatible data model |
basenames | Basenames (.base.eth) subname indexing |
lineanames | Lineanames (.linea.eth) subname indexing |
threedns | 3DNS (.box) name indexing |
registrars | Registration and renewal lifecycle tracking |
tokenscope | NFT tokenization of ENS names |
New Plugins
Section titled “New Plugins”Under Development
Section titled “Under Development”An efp plugin for the Ethereum Follow Protocol is already under active development by the EthId team.
Build Your Own
Section titled “Build Your Own”If you are interested in defining a new ENSNode plugin or implementing an existing one, reach out to the NameHash Labs team — we are happy to provide support and additional info. Join us on Telegram for any questions.