Domain by Name
Using the Unigraph SQL requires that you have the unigraph plugin activated in your ENSNode instance. Learn more
Fetch a Domain by its canonical name. Because canonical_name is materialized across both ENSv1 and ENSv2, the same lookup works regardless of protocol version. See Connect for setup.
Canonical fields (canonical_name, canonical_path, canonical_node, canonical_depth) are populated on every Domain reachable from the canonical root, across both ENSv1 and ENSv2 — query them uniformly without branching by type.
The ENSIndexer Schema is a
database schema within an ENSDb instance, used to store indexed ENS data from a given ENSIndexer instance. We use ensindexer_0 as the ENSIndexer Schema Name in examples on this page, but your ENSIndexer instance may be configured to use a different schema name. Make sure to replace ensindexer_0 with the actual schema name used by your ENSIndexer instance when querying the ENSDb instance directly.
SELECT * FROM ensindexer_0.domainsWHERE canonical_name = 'vitalik.eth';Result
[
{
"id": "1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835",
"type": "ENSv1Domain",
"registry_id": "1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae",
"subregistry_id": "1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835",
"token_id": null,
"node": "0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835",
"label_hash": "0xaf2caa1c2ca1d027f1ac823b529d0a67cd144264b2789fa2ea4d63a67c7103cc",
"owner_id": "0x220866b1a2219f40e72f5c628b65d54268ca3a9d",
"root_registry_owner_id": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"canonical": true,
"canonical_name": "vitalik.eth",
"canonical_label_hash_path": [
"0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0",
"0xaf2caa1c2ca1d027f1ac823b529d0a67cd144264b2789fa2ea4d63a67c7103cc"
],
"canonical_path": [
"1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae",
"1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835"
],
"canonical_depth": 2,
"canonical_node": "0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835"
}
] ensDb query builder and ensIndexerSchema
schema definition in the Connect section if you haven't
already.
import { eq } from "drizzle-orm";
const [vitalik] = await ensDb .select() .from(ensIndexerSchema.domain) .where(eq(ensIndexerSchema.domain.canonicalName, "vitalik.eth"));
console.log(vitalik);Result
[
{
"id": "1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835",
"type": "ENSv1Domain",
"registryId": "1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae",
"subregistryId": "1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835",
"tokenId": null,
"node": "0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835",
"labelHash": "0xaf2caa1c2ca1d027f1ac823b529d0a67cd144264b2789fa2ea4d63a67c7103cc",
"ownerId": "0x220866b1a2219f40e72f5c628b65d54268ca3a9d",
"rootRegistryOwnerId": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
"canonical": true,
"canonicalName": "vitalik.eth",
"canonicalLabelHashPath": [
"0x4f5b812789fc606be1b3b16908db13fc7a9adf7ca72641f84d75b47069d3d7f0",
"0xaf2caa1c2ca1d027f1ac823b529d0a67cd144264b2789fa2ea4d63a67c7103cc"
],
"canonicalPath": [
"1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae",
"1-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835"
],
"canonicalDepth": 2,
"canonicalNode": "0xee6c4522aab0003e8d14cd40a6af439055fd2577951148c14b6cea9a53475835"
}
]