Skip to content

ENSNode Plugins

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.

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.

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:

PluginDescription
unigraphUnified ENSv1 + ENSv2 data model with polymorphic entities
protocol-accelerationAccelerated lookups for ENS resolution
subgraphLegacy ENS Subgraph-compatible data model
basenamesBasenames (.base.eth) subname indexing
lineanamesLineanames (.linea.eth) subname indexing
threedns3DNS (.box) name indexing
registrarsRegistration and renewal lifecycle tracking
tokenscopeNFT tokenization of ENS names

An efp plugin for the Ethereum Follow Protocol is already under active development by the EthId team.

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.