{"id":38931529,"url":"https://github.com/namehash/ensnode","last_synced_at":"2026-05-10T19:31:15.866Z","repository":{"id":269466346,"uuid":"907487388","full_name":"namehash/ensnode","owner":"namehash","description":"The new multichain indexer for ENSv2, powered by Ponder.","archived":false,"fork":false,"pushed_at":"2026-04-21T22:31:58.000Z","size":38003,"stargazers_count":39,"open_issues_count":290,"forks_count":16,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-22T00:28:41.200Z","etag":null,"topics":["ens","indexer","ponder","subgraph"],"latest_commit_sha":null,"homepage":"https://ensnode.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/namehash.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-12-23T17:34:54.000Z","updated_at":"2026-04-21T21:41:12.000Z","dependencies_parsed_at":"2025-04-11T13:40:57.937Z","dependency_job_id":"c007bc8a-06e1-406d-855c-7741df777f48","html_url":"https://github.com/namehash/ensnode","commit_stats":null,"previous_names":["namehash/ens-multichain-indexer","namehash/ensnode"],"tags_count":534,"template":false,"template_full_name":null,"purl":"pkg:github/namehash/ensnode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namehash%2Fensnode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namehash%2Fensnode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namehash%2Fensnode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namehash%2Fensnode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/namehash","download_url":"https://codeload.github.com/namehash/ensnode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/namehash%2Fensnode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32152607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T17:06:48.269Z","status":"ssl_error","status_checked_at":"2026-04-22T17:06:19.037Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ens","indexer","ponder","subgraph"],"created_at":"2026-01-17T15:42:08.509Z","updated_at":"2026-05-10T19:31:15.859Z","avatar_url":"https://github.com/namehash.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- VERTICAL WHITESPACE --\u003e\n\n\u003cbr\u003e\n\n\u003c!-- BANNER IMAGE --\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://ensnode.io\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\".github/assets/ensnode-banner-dark.svg\"\u003e\n      \u003cimg alt=\"ENSNode\" src=\".github/assets/ensnode-banner-light.svg\" width=\"auto\" height=\"80\"\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003c!-- VERTICAL WHITESPACE --\u003e\n\n\u003cbr\u003e\n\n# ENSNode\n\n\u003ca href=\"https://ensnode.io\" target=\"_blank\"\u003eENSNode\u003c/a\u003e is the new multichain indexer for ENS, including [ENSv2](https://roadmap.ens.domains/roadmap/).\n\nFull Documentation ➡︎ \u003ca href=\"https://ensnode.io\" target=\"_blank\"\u003eensnode.io\u003c/a\u003e\n\n[Join us on Telegram](https://t.me/ensnode) to get support, share ideas, and discuss the future of ENSNode.\n\n## The future of ENS indexing\n\nENSNode provides enhanced ENS indexing capabilities beyond the ENS Subgraph, including faster indexing and simpler self-hosted deployments. Initial multichain capabilities include indexing mainnet, Basenames, Lineanames, 3DNS, and more, providing a unified multichain namespace via a subgraph-compatible GraphQL API. When exclusively activating our subgraph plugin, ENSNode has full data equivalency with the ENS Subgraph.\n\n- Multichain ENS Namespace\n  - flattened, unified, multichain and multiregistrar namespace via optional plugins\n  - ✅ All names added to the ENS Registry and the ENS NameWrapper\n    - ✅ All direct subnames of .eth\n  - ✅ [Basenames](https://www.base.org/names) (`.base.eth`)\n  - ✅ [Lineanames](https://names.linea.build/) (`.linea.eth`)\n  - ✅ [3DNS](https://3dns.box) Support (`.box`, `.xyz`, +more)\n  - 🚧 Offchain Names\n    - `.cb.id`, `.uni.id`, + more\n    - [NameStone](https://namestone.com/) Names\n    - [NameSpace](https://namespace.ninja/) Names\n    - [Justaname](https://www.justaname.id/) Names\n  - 🚧 + more\n- Built on [Ponder](https://ponder.sh)\n  - ✅ Rapid Indexing \u0026 Backfill\n    - 10x faster than ENS Subgraph\n    - Mainnet Cached Backfill: **4.5 hours** on M1 Macbook Pro\n  - ✅ More efficient than ENS Subgraph\n    - 35x less disk space and 35% fewer RPC credits [[source]](https://ponder.sh/docs/why-ponder)\n  - ✅ End-to-end type safety\n  - ✅ Automatically reconciles chain reorganizations\n  - ✅ Deploy anywhere with Node.js \u0026 Docker\n- Designed for web developers\n  - ✅ [use ENSNode with ENSjs](https://ensnode.io/docs/usage/with-ensjs)\n  - ✅ [GraphQL APIs](https://ensnode.io/docs/usage/api)\n  - ✅ Custom APIs for your app\n- [1:1 Subgraph Compatibility](https://ensnode.io/docs/concepts/what-is-the-ens-subgraph)\n  - ✅ [100% data equivalency](https://github.com/namehash/ens-subgraph-transition-tools) as compared to Subgraph\n  - ✅ 100% ensjs test suites passing via [ens-test-env](https://github.com/namehash/ens-test-env)\n  - ✅ 100% ens-app-v3 test suites passing via [ens-test-env](https://github.com/namehash/ens-test-env)\n- Own your ENSNode index\n  - ✅ [Deploy ENSNode to your own cloud](https://ensnode.io/docs/deploying) for controlling your own uptime guarantees and private queries\n\n## Why Index ENS? Why ENSNode?\n\nThe ENS protocol enables resolution of names across multiple chains and, increasingly, offchain 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 indexer like ENSNode _must_ be used.\n\nAn indexer aggregates and reorganizes the representation of ENS's state to make important queries like that possible, efficient, and convenient:\n\n```graphql\n# get all of a user's domains by address — not possible on-chain!\nquery Domains($adress: String!) {\n  domains(where: { owner: $address }) {\n    id\n    name\n    ...\n  }\n}\n```\n\nHistorically 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 names or that require [CCIP-Read](https://docs.ens.domains/resolvers/ccip-read), which includes all names stored on L2 chains or offchain.\n\nGiven 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](https://roadmap.ens.domains/roadmap/) and [Namechain](https://app.ens.domains/ens-v2).\n\nENSNode is a modern, multichain indexer for ENS. It supports backwards-compatible Subgraph queries and sets the stage for supporting [ENSv2](https://roadmap.ens.domains/roadmap/), in particular [Namechain](https://app.ens.domains/ens-v2) and the growing set of off-chain ENS names (like `.uni.eth` and `.cb.id`).\n\n## Documentation\n\nDocumentation for the ENSNode suite of apps is available at [ensnode.io](https://ensnode.io).\n\n## Running with Docker\n\n```bash\ndocker compose -f docker/docker-compose.yml up -d\n```\n\nSee [`docker/README.md`](docker/README.md) for all use cases and commands.\n\n## Contributions\n\nWe welcome community contributions and feedback—please see [CONTRIBUTING.md](CONTRIBUTING.md) for more information.\n\n## Sponsors\n\nNameHash has received generous support from the [ENS DAO](https://ensdao.org/) and [Gitcoin](https://www.gitcoin.co/).\n\n\u003cp align=\"middle\"\u003e\n  \u003ca href=\"https://ensdao.org/\" target=\"_blank\"\u003e\u003cimg src=\"./docs/ensnode.io/public/ensdao.png\" width=\"180\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.gitcoin.co/\" target=\"_blank\" style=\"text-decoration: none;\"\u003e\u003cimg src=\"./docs/ensnode.io/public/gitcoin.png\" width=\"180\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Contact Us\n\nVisit our [website](https://namehashlabs.org/) to get in contact, or [join us on Telegram](https://t.me/ensnode).\n\n## License\n\nLicensed under the MIT License, Copyright © 2025-present [NameHash Labs](https://namehashlabs.org).\n\nSee [LICENSE](./LICENSE) for more information.\n\n## Repo Overview\n\nThe ENSNode monorepo contains multiple modules in the following subdirectories:\n\n- [`apps`](apps) executable applications.\n- [`packages`](packages) for libraries that can be embedded into apps.\n- [`docs`](docs) documentation sites.\n\n### [`apps/ensadmin`](apps/ensadmin)\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg alt=\"ENSadmin\" src=\".github/assets/ensadmin-light.svg\" width=\"auto\" height=\"44\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://ensnode.io/ensadmin\" target=\"_blank\"\u003eENSAdmin\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nENSAdmin is a dashboard for ENSNode and the ENS protocol. See the [ENSAdmin documentation](https://ensnode.io/ensadmin) for more details.\n\n### [`apps/ensindexer`](apps/ensindexer)\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg alt=\"ENSIndexer\" src=\".github/assets/ensindexer-light.svg\" width=\"auto\" height=\"44\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://ensnode.io/ensindexer\" target=\"_blank\"\u003eENSIndexer\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nENSIndexer is a Ponder-powered indexer for ENS across multiple chains. See the [ENSIndexer documentation](https://ensnode.io/ensindexer) for more details.\n\n### [`apps/ensrainbow`](apps/ensrainbow)\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg alt=\"ENSRainbow\" src=\".github/assets/ensrainbow-light.svg\" width=\"auto\" height=\"44\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003ca href=\"https://ensnode.io/ensrainbow\" target=\"_blank\"\u003eENSRainbow\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\nENSRainbow heals unknown ENS names: it provides a simple API to recover labels from their labelHashes. See the [ENSRainbow documentation](https://ensnode.io/ensrainbow) for more details.\n\n## Packages\n\n### [`packages/ensdb-sdk`](packages/ensdb-sdk)\n\nSoftware Development Kit for interacting with data in ENSDb.\n\n### [`packages/ensnode-sdk`](packages/ensnode-sdk)\n\nSoftware Development Kit for interacting with ENSNode services and data. Includes common utilities used across ENSNode applications.\n\n### [`packages/ensnode-react`](packages/ensnode-react)\n\nReact hooks and providers for the ENSNode API.\n\n### [`packages/datasources`](packages/datasources)\n\nConvenient catalog of ENSNode-related datasources including chain, contract addresses, start blocks, and event filters.\n\n### [`packages/ensrainbow-sdk`](packages/ensrainbow-sdk)\n\nTypeScript library for interacting with the [ENSRainbow API](apps/ensrainbow).\n\n### [`packages/ponder-sdk`](packages/ponder-sdk)\n\nA utility library for interacting with Ponder apps and data.\n\n### [`packages/ponder-subgraph`](packages/ponder-subgraph)\n\nSubgraph-compatible GraphQL API.\n\n### [`packages/shared-configs`](packages/shared-configs)\n\nShared internal configuration files.\n\n## Docs\n\n### [`docs/ensnode.io`](docs/ensnode.io/)\n\nAstro/Starlight documentation app for ENSNode, ENSIndexer, ENSAdmin, and ENSRainbow.\n\n### [`docs/ensrainbow.io`](docs/ensrainbow.io/)\n\nLanding page for ENSRainbow.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamehash%2Fensnode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnamehash%2Fensnode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnamehash%2Fensnode/lists"}