Skip to content

What is ENSRainbow?

ENSRainbow is an open-source public good designed to make the “unknown, known” by healing millions of unknown ENS (Ethereum Name Service) names. It functions as a sidecar service for ENSNode, the multichain indexer for ENSv2.

ENSRainbow builds upon foundational work from The Graph Protocol (original rainbow tables) and ENS Labs (ENS Subgraph development and maintenance). It is part of the Namehash Labs suite of tools dedicated to supporting the growth of the ENS Protocol.

The Problem: Unknown Labels

Many ENS names can appear with encoded labelhashes (e.g., [428...b0b]) in applications. These represent unknown labels that, without a service like ENSRainbow, would not display correctly, impacting user experience across the ENS ecosystem. A core value proposition of the ENS protocol is to provide human-readable names for blockchain addresses, effectively acting as a decentralized identity layer. These cryptic labels directly undermine this value by making names unintelligible, thereby eroding the user-friendliness and overall utility of ENS.

How ENSRainbow Helps

ENSRainbow significantly improves “name healing” coverage compared to relying solely on services like the ENS Subgraph. Its goal is to heal as many ENS names as possible, abstracting away technical complexities for the end-user.

Key aspects of ENSRainbow include:

  • Resolving Encoded Labelhashes: It translates cryptic labelhashes into human-readable names.
  • Sidecar to ENSNode: It integrates with ENSNode to provide comprehensive name data.
  • Improved Coverage: Aims for a high percentage of name healing, far exceeding previous capabilities.
HTTP API

ENSRainbow serves an HTTP API for healing labels documented below.

Client SDK

ENSRainbow provides an official TypeScript client SDK @ensnode/ensrainbow-sdk to simplify integrations with the API.

Self-hosting and Deploying

ENSRainbow is designed to be self-hosted and deployed by anyone and everyone.

For details of how to deploy, see the deployment guide, or for details on how to run locally, check the contributing guide.