Skip to content

The new multichain indexer for ENSv2, powered by Ponder.

License

Notifications You must be signed in to change notification settings

namehash/ensnode

Repository files navigation


ENSNode


ENSNode

ENSNode is the new multichain indexer for ENS, including ENSv2.

Full Documentation ➡︎ ensnode.io

The future of ENS indexing

ENSNode provides enhanced ENS indexing capabilities beyond the ENS Subgraph, including faster indexing and simpler self-hosted deployments. Initial multichain capabilities include indexing mainnet, Basenames, and Linea, providing a unified multichain namespace via a subgraph-compatible GraphQL api. When indexing just mainnet, it has full data equivalency with the ENS Subgraph.

  • Multichain ENS Namespace
    • flattened, unified, multichain and multiregistrar namespace via optional plugins
    • ✅ Mainnet ENS Names
    • ✅ Basenames (.base.eth)
    • ✅ Linea Names (.linea.eth)
    • 🚧 Tokenized DNS Names
    • 🚧 Offchain Names
    • 🚧 + more
  • Built on Ponder
    • ✅ Rapid Indexing & Backfill
      • 10x faster than ENS Subgraph
      • Mainnet Backfill: 7 hours on M1 Macbook
    • ✅ More efficient than ENS Subgraph
      • 35x less disk space and 35% fewer RPC credits [source]
    • ✅ End-to-end type safety
    • ✅ Automatically reconciles chain reorganizations
    • ✅ Deploy anywhere with Node.js & Docker
  • Designed for web developers
  • 1:1 Subgraph Compatibility
  • Own your ENSNode index

Why Index ENS? Why ENSNode?

The ENS protocol enables resolution of names across multiple chains and, increasingly, off-chain data sources. ENS smart contracts optimize for some operations, but not others: for example, if you wanted to list all of a user's owned names, there's no practical way to do this through ENS contracts, and an off-chain indexer like ENSNode must be used.

An indexer aggregates and reorganizes the representation of ENS's state to make important queries like that possible, efficient, and convenient:

# get all of a user's domains by address — not possible on-chain!
query Domains($adress: String!) {
  domains(where: { owner: $address }) {
    id
    name
    ...
  }
}

Historically the ENS Subgraph has served this purpose, but the Subgraph's limitations are increasingly severe as the ENS protocol grows: the ENS Subgraph can only index a single chain at a time (ex: mainnet) and can't integrate with off-chain names that require CCIP-Read.

Given how the majority of ENS names are now issued off of mainnet, only a small percentage of ENS names can be indexed by the ENS Subgraph. This issue will only grow more severe with the launch of ENSv2 and Namechain.

ENSNode is a modern, multichain indexer for ENS. It supports backwards-compatible Subgraph queries and sets the stage for supporting ENSv2, in particular Namechain and the growing set of off-chain ENS names (like .uni.eth and .cb.id).

Documentation

Documentation for the ENSNode suite of apps is available at ensnode.io.

Contributions

We welcome community contributions and feedback—please see CONTRIBUTING.md for more information.

Sponsors

NameHash has received generous support from the ENS DAO and Gitcoin.

Contact Us

Visit our website to get in contact.

License

Licensed under the MIT License, Copyright © 2025-present NameHash Labs.

See LICENSE for more information.

Repo Overview

The ENSNode monorepo contains multiple modules in the following subdirectories:

  • apps executable applications.
  • packages for libraries that can be embedded into apps.
  • docs documentation sites.
ENSadmin ENSAdmin

ENSAdmin is a dashboard for ENSNode and the ENS protocol. See the ENSAdmin documentation for more details.

ENSIndexer ENSIndexer

ENSIndexer is a Ponder-powered indexer for ENS contracts across mulitple chains. See the ENSIndexer documentation for more details.

ENSRainbow ENSRainbow

ENSRainbow heals unknown ENS names: it provides a simple API to recover labels from their labelHashes. See the ENSRainbow documentation for more details.

Packages

Convenient catalog of ENS deployments including chain, contract addresses, start blocks, and event filters.

TypeScript library for interacting with the ENSRainbow API.

Common utilities used across ENSNode applications

Shared Ponder schema definitions

Subgraph-compatible GraphQL API

Shared internal configuration files

Docs

Astro/Starlight documentation app for ENSNode, ENSIndexer, ENSAdmin, and ENSRainbow.

Landing page for ENSRainbow.