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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

fc6e005 · Mar 5, 2025
Mar 3, 2025
Mar 4, 2025
Jan 30, 2025
Mar 4, 2025
Mar 3, 2025
Feb 27, 2025
Mar 3, 2025
Feb 13, 2025
Feb 27, 2025
Jan 22, 2025
Feb 4, 2025
Feb 27, 2025
Jan 24, 2025
Feb 27, 2025
Feb 27, 2025
Feb 27, 2025
Mar 3, 2025
Mar 5, 2025
Mar 5, 2025

Repository files navigation

ENSNode

ENSNode is the multichain indexer for ENSv2.

Full Documentation ➡︎ ensnode.io

ENSNode is the new multichain indexer for ENS and ENSv2. It provides enhanced ENS indexing capabilities beyond the ENS Subgraph, including faster indexing and simpler deployments. Initial multichain capabilities include indexing mainnet, Basenames, and Linea, providing a unified multichain namespace in 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)
    • 🚧 + 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 even 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.

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

# get all of a user's domains by address
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. For example: The ENS Subgraph can only index a single chain at a time (ex: mainnet). 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.

The main ENSNode indexer application enabling multichain indexing for ENS.

A sidecar service for healing ENS labels. It provides a simple API to recover labels from their hashes. This optimizes a number of ENS use cases, including indexing of ENS data. 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 API compatibility layer

Shared configuration files

Docs

Astro/Starlight documentation app for ENSNode and ENSRainbow.

Landing page for ENSRainbow.