Account Migration Counts
Count an account's ENSv1 vs ENSv2 domains to gauge its migration progress. Terminal window Terminal window Terminal window
Run in ENSAdmin
Open an interactive playground to execute this example on our sepolia-v2
ENSNode instance.
GraphQL
query AccountMigratedNames($address: Address!) { account(by: { address: $address }) { v1DomainsCount: domains(where: { version: ENSv1 }) { totalCount } v2DomainsCount: domains(where: { version: ENSv2 }) { totalCount } }} Variables
{ "address": "0xffffffffff52d316b7bd028358089bc8066b8f80"} Output
{ "data": { "account": { "v2DomainsCount": { "totalCount": 1249 }, "v1DomainsCount": { "totalCount": 6 } } }}Output matches a GraphQL Response from sepolia-v2 ; live output depends on your ENSNode instance.
Opens an editable StackBlitz project with this snippet.
TypeScript
import { createEnsNodeClient } from "enssdk/core";import { graphql, omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: process.env.ENSNODE_URL || "https://api.alpha.ensnode.io"}).extend(omnigraph);
const AccountMigratedNamesQuery = graphql(` query AccountMigratedNames($address: Address!) { account(by: { address: $address }) { v1DomainsCount: domains(where: { version: ENSv1 }) { totalCount } v2DomainsCount: domains(where: { version: ENSv2 }) { totalCount } } }`);
const result = await client.omnigraph.query({ query: AccountMigratedNamesQuery, variables: { address: "0xffffffffff52d316b7bd028358089bc8066b8f80", },});
if (result.errors) throw new Error(JSON.stringify(result.errors));console.log(JSON.stringify(result.data, null, 2)); Output
{ "data": { "account": { "v2DomainsCount": { "totalCount": 1249 }, "v1DomainsCount": { "totalCount": 6 } } }}Output matches a GraphQL Response from sepolia-v2 ; live output depends on your ENSNode instance.
enssdk package manager setup
# 1. Create projectmkdir -p my-ens-script/src && cd my-ens-scriptnpm init -y && touch src/index.tsnpm pkg set type=module scripts.start="tsx src/index.ts"# 2. Install dependenciesnpm install enssdk@1.15.1 && npm install -D tsx typescript @types/node# 3. Paste the TypeScript snippet above into src/index.ts# 4. RunENSNODE_URL=https://api.alpha.ensnode.io npm startSee the enssdk docs for gql.tada plugin and tsconfig setup.
Opens an editable StackBlitz project with this snippet.
TSX (React)
import { OmnigraphProvider, useOmnigraphQuery, graphql } from "enskit/react/omnigraph";import { createEnsNodeClient } from "enssdk/core";import { omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: import.meta.env.VITE_ENSNODE_URL || "https://api.alpha.ensnode.io"}).extend(omnigraph);
const AccountMigratedNamesQuery = graphql(` query AccountMigratedNames($address: Address!) { account(by: { address: $address }) { v1DomainsCount: domains(where: { version: ENSv1 }) { totalCount } v2DomainsCount: domains(where: { version: ENSv2 }) { totalCount } } }`);
function AccountMigratedNamesResult() { const [result] = useOmnigraphQuery({ query: AccountMigratedNamesQuery, variables: { address: "0xffffffffff52d316b7bd028358089bc8066b8f80", }, }); const { data, fetching, error } = result; if (!data && fetching) return <p>Loading…</p>; if (error) return <p>Error: {error.message}</p>; if (!data) return <p>No data returned.</p>; const formatted = JSON.stringify( data, (_, value) => (typeof value === "bigint" ? value.toString() : value), 2, ); return <code>{formatted}</code>;}
export default function App() { return ( <OmnigraphProvider client={client}> <AccountMigratedNamesResult /> </OmnigraphProvider> );} Output
{ "data": { "account": { "v2DomainsCount": { "totalCount": 1249 }, "v1DomainsCount": { "totalCount": 6 } } }}Output matches a GraphQL Response from sepolia-v2 ; live output depends on your ENSNode instance.
enskit package manager setup
# 1. Create projectnpm create vite@latest my-ens-app -- --template react-ts --no-interactive --no-immediatecd my-ens-app# 2. Install dependenciesnpm installnpm install enskit@1.15.1 enssdk@1.15.1# 3. Copy the TSX snippet above into src/App.tsx# 4. RunVITE_ENSNODE_URL=https://api.alpha.ensnode.io npm run devSee the enskit docs for gql.tada plugin and provider setup.
cURL
# POST JSON to your ENSNode Omnigraph endpoint (same path enssdk uses).curl -sS -X POST "https://api.v2-sepolia.ensnode.io/api/omnigraph" \ -H "Content-Type: application/json" \ -d '{ "query": "query AccountMigratedNames($address: Address!) { account(by: { address: $address }) { v1DomainsCount: domains(where: { version: ENSv1 }) { totalCount } v2DomainsCount: domains(where: { version: ENSv2 }) { totalCount } } }", "variables": {"address":"0xffffffffff52d316b7bd028358089bc8066b8f80"}}' Response
{ "data": { "account": { "v2DomainsCount": { "totalCount": 1249 }, "v1DomainsCount": { "totalCount": 6 } } }}Output matches a GraphQL Response from sepolia-v2 ; live output depends on your ENSNode instance.
Back to Examples