Skip to content

Conversation

@shrugs
Copy link
Collaborator

@shrugs shrugs commented Jan 13, 2026

makes a new temporary namespace for the test deployments of ensv2 contracts on sepolia.

this pr represents the temporary ad hoc deployment of ensv2 to the sepolia chain as an independent sepolia namespace to avoid interrupting mainstream usage of the existing sepolia namespace

confirmed indexed to latest

@changeset-bot
Copy link

changeset-bot bot commented Jan 13, 2026

🦋 Changeset detected

Latest commit: 765a332

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 18 packages
Name Type
@ensnode/datasources Patch
ensadmin Patch
ensapi Patch
ensindexer Patch
fallback-ensapi Patch
@ensnode/ensnode-sdk Patch
@namehash/namehash-ui Patch
ensrainbow Patch
@namehash/ens-referrals Patch
@ensnode/ensnode-react Patch
@ensnode/ensrainbow-sdk Patch
@ensnode/ponder-metadata Patch
@ensnode/ensnode-schema Patch
@ensnode/ponder-subgraph Patch
@ensnode/shared-configs Patch
@docs/ensnode Patch
@docs/ensrainbow Patch
@docs/mintlify Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel
Copy link

vercel bot commented Jan 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
admin.ensnode.io Ready Ready Preview, Comment Jan 27, 2026 6:41am
ensnode.io Ready Ready Preview, Comment Jan 27, 2026 6:41am
ensrainbow.io Ready Ready Preview, Comment Jan 27, 2026 6:41am

Copy link
Member

@lightwalker-eth lightwalker-eth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shrugs Thanks for updates. Seeking your advice, thanks 👍

@shrugs shrugs changed the title feat: enable latest sepolia namespace with ensv2 feat: new sepolia-v2 namespace for temp ensv2 deployment Jan 26, 2026
Copilot AI review requested due to automatic review settings January 26, 2026 08:24
@coderabbitai
Copy link

coderabbitai bot commented Jan 26, 2026

📝 Walkthrough

Walkthrough

Adds an experimental "sepolia-v2" ENS namespace/datasource, updates SDK/UI/admin mappings to include SepoliaV2, removes ENSv2 entries from existing Sepolia/Mainnet datasources, and refactors API/indexer/plugins to use dynamic contract lookups and additional guards for ENSv2 bridging and cache handling.

Changes

Cohort / File(s) Summary
Changeset & Namespace IDs
.changeset/short-cobras-bathe.md, packages/datasources/src/lib/types.ts, packages/datasources/src/namespaces.ts
Adds a changeset and SepoliaV2 namespace id; removes two exported utility types from types.ts.
New Sepolia-V2 datasource
packages/datasources/src/sepolia-v2.ts
Adds sepolia-v2 datasource extending Sepolia with ENSRoot and Namechain ENSv2 contract entries (ABIs, addresses, startBlock).
Datasource removals (Sepolia/Mainnet)
packages/datasources/src/sepolia.ts, packages/datasources/src/mainnet.ts
Removes ENSv2 ABI imports and related ENSRoot/Namechain contract entries from Sepolia and Mainnet configs.
GraphQL API: registry lookup & bridging
apps/ensapi/src/graphql-api/lib/get-domain-by-fqdn.ts
Replaces hard-coded registry lookups with runtime maybeGetDatasourceContract calls; adds guards, logging, v1/v2 bridging invariants, early returns when registries are unavailable, and deferral to v1 when appropriate.
Indexer & Plugins
apps/ensindexer/src/lib/ponder-helpers.ts, apps/ensindexer/src/plugins/ensv2/plugin.ts, apps/ensindexer/src/plugins/protocol-acceleration/plugin.ts
Always include computed disableCache in chain configs for local chains; add presence guards to ENSv2 reduce pipelines and conditionally include Registry chain config when Registry contract is absent.
Admin defaults
apps/ensadmin/src/lib/default-records-selection.ts
Adds DefaultRecordsSelection entry for SepoliaV2 mirroring Sepolia's coin types and TEXTS.
SDK registrar mappings
packages/ensnode-sdk/src/registrars/basenames-subregistry.ts, packages/ensnode-sdk/src/registrars/ethnames-subregistry.ts, packages/ensnode-sdk/src/registrars/lineanames-subregistry.ts
Adds SepoliaV2 cases mapping to the same managed names as Sepolia for each subregistry.
SDK / The Graph
packages/ensnode-sdk/src/shared/thegraph.ts
Adds SepoliaV2 case to makeTheGraphSubgraphUrl (currently falls through to null).
UI utilities
packages/namehash-ui/src/utils/ensManager.ts, packages/namehash-ui/src/utils/ensMetadata.ts
Adds SepoliaV2 handling returning null for manager/metadata URLs (ephemeral namespace).
Package overrides
package.json
Updates pnpm overrides for tar, lodash, and lodash-es versions.

Sequence Diagram(s)

sequenceDiagram
  participant Client as Client
  participant API as GraphQL API
  participant DS as DatasourceLayer
  participant Registry as ENSRoot ETHRegistry
  participant Namechain as Namechain ETHRegistry

  Client->>API: getDomainByFqdn(fqdn)
  API->>DS: maybeGetDatasourceContract(ENSRoot)
  DS-->>API: ENSRoot ETHRegistry or null
  API->>DS: maybeGetDatasourceContract(Namechain)
  DS-->>API: Namechain ETHRegistry or null
  alt both registries missing
    API-->>Client: return null (early exit)
  else registries available
    API->>Registry: validate leaf.registryId == ENS_ROOT_V2_ETH_REGISTRY_ID
    alt leaf belongs to ENSRoot
      API->>API: v2_getDomainIdByFqdn (validate depth/path/leaf)
      API-->>Client: domainId or defer
    else leaf not on ENSRoot
      API->>Namechain: compute 2LD node & check active ENSv1 registration
      alt active ENSv1 registration exists
        API->>API: call v1_getDomainIdByFqdn
        API-->>Client: v1 result
      else
        API->>Namechain: v2_getDomainIdByFqdn (shortened name)
        Namechain-->>API: domainId or null
        API-->>Client: result or null
      end
    end
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Suggested labels

ensnode-sdk

Poem

🐰 A tiny hop for Sepolia, V2 in sight,
New namespaces sprout in the moonlit byte.
Contracts shuffled, bridges learn to dance,
I nibble logs and give the code a glance.
A happy twitch — deployment feels just right!

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Description check ❓ Inconclusive The description is vague and lacks required template sections; missing detailed summary, clear justification with issue links, testing methodology, and pre-review checklist completion. Expand the description using the template: add structured summary bullets, link related GitHub issues, detail how the changes were tested, and complete the pre-review checklist.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: introducing a new sepolia-v2 namespace for temporary ENSv2 deployment testing.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/ensv2-sepolia

Comment @coderabbitai help to get the list of available commands and usage tips.

…ended for testing of ephemeral ENSv2 deployments to the Sepolia chain. This feature is intended for developers of the ENS protocol, and should be considered highly experimental and unstable.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new temporary sepolia-v2 namespace to support ENSv2 test deployments on the Sepolia testnet. This creates a separate namespace from the original Sepolia ENS deployment, allowing both ENSv1 and ENSv2 contracts to coexist for testing purposes.

Changes:

  • Created a new sepolia-v2 namespace that extends the base Sepolia namespace with ENSv2 contracts
  • Removed ENSv2 contract stubs from the original Sepolia and Mainnet namespaces
  • Updated all namespace-specific utility functions to handle SepoliaV2 consistently with Sepolia

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated no comments.

Show a summary per file
File Description
packages/datasources/src/sepolia-v2.ts New file defining the SepoliaV2 namespace with ENSv2 contracts on ENSRoot and a new Namechain datasource
packages/datasources/src/namespaces.ts Registers the sepolia-v2 namespace in the namespace map
packages/datasources/src/lib/types.ts Adds SepoliaV2 to ENSNamespaceIds enum and removes unused MergeNamespaces type
packages/datasources/src/sepolia.ts Removes ENSv2 contract stubs and commented-out Namechain configuration
packages/datasources/src/mainnet.ts Removes ENSv2 contract stubs and commented-out Namechain configuration
packages/namehash-ui/src/utils/ensMetadata.ts Adds SepoliaV2 case to use Sepolia metadata service URL
packages/namehash-ui/src/utils/ensManager.ts Adds SepoliaV2 case to use Sepolia ENS manager URL
packages/ensnode-sdk/src/shared/thegraph.ts Adds SepoliaV2 case to use Sepolia subgraph URL
packages/ensnode-sdk/src/registrars/*.ts Adds SepoliaV2 cases to return appropriate managed names for subregistries
apps/ensindexer/src/plugins/protocol-acceleration/plugin.ts Adds conditional check for Registry contract existence for backwards compatibility
apps/ensindexer/src/plugins/ensv2/plugin.ts Adds conditional checks for ENSv2 contract existence and refactors reduce logic
apps/ensindexer/src/lib/ponder-helpers.ts Refactors disableCache logic into a variable for better readability
apps/ensapi/src/graphql-api/lib/get-domain-by-fqdn.ts Refactors ENSv2 contract lookups to use maybeGetDatasourceContract for backwards compatibility
apps/ensadmin/src/lib/default-records-selection.ts Adds default records selection for SepoliaV2 namespace

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@vercel vercel bot temporarily deployed to Preview – admin.ensnode.io January 26, 2026 08:59 Inactive
@vercel vercel bot temporarily deployed to Preview – ensrainbow.io January 26, 2026 08:59 Inactive
@vercel vercel bot temporarily deployed to Preview – ensnode.io January 26, 2026 08:59 Inactive
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 18 out of 19 changed files in this pull request and generated 1 comment.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In `@apps/ensapi/src/graphql-api/lib/get-domain-by-fqdn.ts`:
- Around line 201-209: The fallback call to v2_getDomainIdByFqdn is not
receiving the caller's custom now value, causing inconsistent expiry checks;
update the call in get-domain-by-fqdn so it forwards the now parameter (e.g.,
v2_getDomainIdByFqdn(NAMECHAIN_V2_ETH_REGISTRY_ID, nameWithoutTld, now)) and
ensure any intermediary helpers (interpretedLabelsToInterpretedName /
interpretedNameToInterpretedLabels usage) remain unchanged; if
v2_getDomainIdByFqdn signature lacks a now param, add it and thread the now
argument through the recursive ENSv2 lookup path.
- Around line 133-199: The early Namechain lookup (maybeGetDatasourceContract ->
NAMECHAIN_V2_ETH_REGISTRY) and its null-return guard should be deferred so ENSv1
fallback can run; remove the early `if (!NAMECHAIN_V2_ETH_REGISTRY) return
null;` and move the Namechain datasource lookup and construction of
NAMECHAIN_V2_ETH_REGISTRY_ID to just before the code that actually uses it
(after the ENSv1 check that calls makeENSv1DomainId, getLatestRegistration,
isRegistrationFullyExpired and v1_getDomainIdByFqdn); ensure the
ENS_ROOT_V2_ETH_REGISTRY lookup and its null guard remain as-is and keep the
label/path invariants unchanged.

In `@package.json`:
- Around line 43-45: Replace the unbounded greater-than ranges in the overrides
for tar and lodash with caret ranges to prevent accidental major upgrades:
update the override entries "tar@<=7.5.3" from ">=7.5.4" to use "^7.5.4" and
update "lodash@<=4.17.22" and "lodash-es@<=4.17.22" from ">=4.17.23" to use
"^4.17.23" so the intent is expressed as compatible-semver rather than an
open-ended >= constraint.

@coderabbitai
Copy link

coderabbitai bot commented Jan 26, 2026

Note

Unit test generation is an Early Access feature. Expect some limitations and changes as we gather feedback and continue to improve it.


Generating unit tests... This may take up to 20 minutes.

coderabbitai bot added a commit that referenced this pull request Jan 26, 2026
Docstrings generation was requested by @shrugs.

* #1516 (comment)

The following files were modified:

* `apps/ensapi/src/graphql-api/lib/get-domain-by-fqdn.ts`
* `apps/ensindexer/src/lib/ponder-helpers.ts`
* `packages/ensnode-sdk/src/registrars/basenames-subregistry.ts`
* `packages/ensnode-sdk/src/registrars/ethnames-subregistry.ts`
* `packages/ensnode-sdk/src/registrars/lineanames-subregistry.ts`
* `packages/namehash-ui/src/utils/ensManager.ts`
* `packages/namehash-ui/src/utils/ensMetadata.ts`
@coderabbitai
Copy link

coderabbitai bot commented Jan 26, 2026

Caution

The CodeRabbit agent's plans did not produce any file changes.

@namehash namehash deleted a comment from coderabbitai bot Jan 26, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 18 out of 19 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)

apps/ensindexer/src/plugins/protocol-acceleration/plugin.ts:159

  • The code should check if "Registry" exists in namechain.contracts before accessing it, similar to how it's checked for ensroot.contracts on line 148. This would make the code more defensive and consistent with the approach in the ensv2 plugin. Consider adding the check: ...(namechain && "Registry" in namechain.contracts &&
            ...(namechain &&
              chainConfigForContract(
                config.globalBlockrange,
                namechain.chain.id,
                namechain.contracts.Registry,
              )),

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Member

@lightwalker-eth lightwalker-eth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shrugs Looks great. Thanks! Shared a few small feedback items. Please take the lead to merge when ready 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants