ENSNode is the new multichain indexer for ENS, including ENSv2.
Full Documentation ➡︎ ensnode.io
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
- ✅ Rapid Indexing & Backfill
- Designed for web developers
- ✅ use ENSNode with ENSjs
- ✅ GraphQL APIs
- ✅ Live Queries & React Hooks
- ✅ Custom APIs for your app
- 1:1 Subgraph Compatibility
- ✅ 100% data equivalency as compared to Subgraph
- ✅ 100% ensjs test suites passing via ens-test-env
- 🚧 100% ens-app-v3 test suites passing via ens-test-env
- Own your ENSNode index
- ✅ Deploy ENSNode to your own cloud for controlling your own uptime guarantees and private queries
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 for the ENSNode suite of apps is available at ensnode.io.
We welcome community contributions and feedback—please see CONTRIBUTING.md for more information.
NameHash has received generous support from the ENS DAO and Gitcoin.
Visit our website to get in contact.
Licensed under the MIT License, Copyright © 2025-present NameHash Labs.
See LICENSE for more information.
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 is a dashboard for ENSNode and the ENS protocol. See the ENSAdmin documentation for more details.
ENSIndexer |
ENSIndexer is a Ponder-powered indexer for ENS contracts across mulitple chains. See the ENSIndexer documentation for more details.
ENSRainbow |
ENSRainbow heals unknown ENS names: it provides a simple API to recover labels from their labelHashes. See the ENSRainbow documentation for more details.
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
Astro/Starlight documentation app for ENSNode, ENSIndexer, ENSAdmin, and ENSRainbow.
Landing page for ENSRainbow.