ENSNode Plugins
What is an ENSNode Plugin?
Section titled “What is an ENSNode Plugin?”An ENSNode Plugin is an abstract specification that defines how a specific aspect of the ENS namespace is indexed into ENSDb. It is not an implementation — it is a standard that any ENSDb Writer can implement.
Each ENSNode Plugin defines:
- Name — e.g.
unigraph,protocol-acceleration,subgraph. - Datasources — which onchain contracts should be indexed, as a function of the ENS namespace.
- Dependency relationships — other plugins that must (or must not) be activated concurrently.
- Indexed data model — the tables, columns, and indexes that the plugin produces in ENSDb.
- Standards and invariants — rules for how onchain events are translated into the indexed data model during indexing.
- Versioning — a version number that can be stored in ENSNode Metadata, to track which version of the plugin implementation is being used by ENSDb Writers and ENSDb Readers.
Why ENSNode Plugins Matter
Section titled “Why ENSNode Plugins Matter”ENSNode Plugins are the 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 for 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 GraphQL query.
Core Plugins
Section titled “Core Plugins”ENSIndexer is a reference implementation of an ENSDb Writer that implements multiple core plugins following the ENSNode Plugins specification. The code for each plugin inside ENSIndexer is a reference implementation of that plugin’s abstract specification. The core plugins implemented in ENSIndexer today are:
All core ENSNode Plugins are built by the NameHash team. We welcome contributions and collaborations to expand the ecosystem of plugins.
| 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 and marketplace activity |
Community Plugins
Section titled “Community Plugins”Under Development
Section titled “Under Development”The efp plugin is a new plugin currently under development by the EthId team:
- EFP (Ethereum Follow Protocol) — onchain social graph protocol
- Grails — by the EthId Foundation
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.