V2 docs WIP#543
Conversation
New pages: - Architecture: Registry Hierarchy, Enhanced Access Control, ERC1155Singleton, Mutable Token IDs, Hidden Contract Accounts, Verifiable Factory - Contracts: Permissioned Registry, Permissioned Resolver, ETH Registrar, Universal Resolver V2, Registry Metadata, DNS Name Resolution - Guides: Migration, Indexing, Registry Template, FAQ (placeholder), Tutorial placeholders for App/Contract Developers Interactive widgets: - ID Explorer (Mutable Token IDs page) - Resource Calculator (Permissioned Resolver page) - Role Bitmap Composer (Registry + Resolver pages) Updated sidebar structure: Architecture | Contracts | Guides | FAQ Updated overview page with deployments table (Sepolia, TBD addresses) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Move ENSv2 to top-level sidebar navigation - Add FrenCallout component with ENS character PNGs (Earl, Bittu, Kuzco, Lili, Peanut) - Replace all WIP/not-yet-final notes with Lili FrenCallout tips - Add Bittu developer tips for resource scheme sections - Add FAQ page with character callout demos - Fix DNS TXT record table (correct a[e<chainId>] syntax) - Remove em-dashes from prose text across all pages - Add emancipation section to Registry Template and Permissioned Registry - Restructure ETH Registrar page (v1-style commit-reveal docs) - Restructure DNS Resolvers page (flow-based, not contract-based) - Add Reference sections (write/view/events) to all contract pages - Update overview tables to match current sidebar structure - Various readability fixes and cross-reference improvements Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ections - Replace markdown reference tables with ContractReference on EAC, ETH Registrar, Permissioned Registry, Permissioned Resolver, and Universal Resolver V2 pages - Restructure Universal Resolver V2 page to stand on its own (remove v1-centric framing, fix nonexistent resolve(name, data[]) method) - Add EAC integration section to ETH Registrar page (ROLE_SET_ORACLE, ROLE_REGISTRAR, ROLE_RENEW) - Fix REGISTRATION_ROLE_BITMAP description on ETH Registrar page (list all 5 roles explicitly) - Update reverse resolution page for PR 292: replace ETHReverseResolver with ENSV1Resolver, add HCA adapter contracts - Update overview deployments table to match (ENSV1Resolver, ReverseRegistrarHCAAdapter, DefaultReverseRegistrarHCAAdapter)
…constants table, add v2 grace period (28 days), fix FrozenTokenApproval condition, clarify token receiver for locked 3LD+, update scenarios to match case study math
gskril
left a comment
There was a problem hiding this comment.
Looking great! Left some comments/suggestions
| | [DNS Name Resolution](/contracts/ensv2/dns-resolvers) | Resolving DNS domain names through the ENS protocol | | ||
| | [Reverse Resolution](/contracts/ensv2/reverse-resolution) | Primary names and multi-chain reverse resolution | | ||
|
|
||
| ## Deployments (Sepolia) |
There was a problem hiding this comment.
Not necessary to move this, but FYI the deployments page is auto generated from the ensdomains/ens-contracts repo which might be useful so we don't have to maintain multiple lists
There was a problem hiding this comment.
They even increment in your animation :D
tokenVersionIdincrements the lower 32 bits of Token ID.eacVersionIdincrements the lower 32 bits of resource.
The canonicalId always zeroes out the lower 32 bits, so nothing changes there and the labelhash is just a constant 256bit hash. But it's good feedback that you didn't even realize them changing. Maybe I should add some visual effect to the values when the slider is used.
There was a problem hiding this comment.
oh whoops, ya i was looking at the left side 😅
seems maybe weird to display the same value 4 times when only the right side changes, but not a big deal for now
| - **URv1** walks a flat ENS registry | ||
| - **URv2** walks the hierarchical registry tree via `getSubregistry()` at each level | ||
|
|
||
| This means `resolve()`, `reverse()`, and all CCIP-Read infrastructure work identically across both versions. The `LibRegistry` library that powers the hierarchy traversal is also used directly by other contracts including `DNSAliasResolver`, `DNSTLDResolver`, and `ENSV2Resolver`. |
There was a problem hiding this comment.
Raffy explained this nicely on a call once that stuck with me and might be worth including in some form. In v1, resolution was bottom-up whereas v2 is top-down.
Used to:
- Look for resolver of sub.sub.name.eth
- No resolver is set, so try sub.name.eth
- No resolver is set, so try name.eth
Now its:
- Get resolver of eth
- Get resolver of name.eth
- No resolver for sub.name.eth, use the one from step 2
This is what allows names to stop resolving after expiration and some other similar fine grained behaviors.
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This keeps dev and preview commands consistent with build by resolving the local Vocs binary the same way in every script. Co-authored-by: Cursor <cursoragent@cursor.com>
This wires custom CSS into Vocs, sets Monument font families, enables the alternate glyph feature globally, and adjusts Tailwind font weight mapping to better match the new type scale. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Greg <35093316+gskril@users.noreply.github.com>
This reverts commit 9a730bb.
This updates shared style primitives in styles.css and adds a design patterns reference so future UI updates stay consistent. Co-authored-by: Cursor <cursoragent@cursor.com>
…uage. This refines border radii and outline density so key interactive surfaces align with the latest docs design treatment. Co-authored-by: Cursor <cursoragent@cursor.com>
This prevents accidental tracking of machine-local Netlify state during docs development and deploy testing. Co-authored-by: Cursor <cursoragent@cursor.com>
| RESERVED --> AVAILABLE: unregister() or expiry | ||
| ``` | ||
|
|
||
| - `AVAILABLE`: never registered or expired. Open for registration. |
There was a problem hiding this comment.
is it true? Once expired, what stage is it going to be called?
There was a problem hiding this comment.
An expired name will be in the AVAILABLE state. See https://github.com/ensdomains/contracts-v2/blob/main/contracts/src/registry/PermissionedRegistry.sol#L570-L572
| # Hidden Contract Accounts | ||
|
|
||
| Hidden Contract Accounts (HCAs) let smart-account proxies act on behalf of their owners while still being attributed to the owner. ENSv2 wires HCA-aware sender resolution into every layer of the stack. When a user controls a name through an HCA proxy, the protocol records the owner as the actor for permission checks, ownership reads, and event indexing. | ||
|
|
There was a problem hiding this comment.
Even though v2 doesn't have hard dependency to HCA, it should be worth mentioned that it will be used in combination with https://github.com/rhinestone-external/ens-modules and have some code example
|
Hi, I already made comments to individual lines. These are more generic comments to the part it wasn't changed on the PR
|
…ame ownership verification checklists to UR2, add missing EAC view functions to PermReg reference, add canonical/locked canonical parent terminology, promote widget headings to h3 for TOC visibility
…s disabled post-launch, fix language in migration scenarios, fix subname migration to include detached names, add Emancipated hierarchy to token types table
…vent TODO to indexing page, add requireResolver to UR2 reference
# Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit.
…gration, fix anyId formatting, remove inaccurate v1 resolver continuity claim from overview, remove grace period from PermReg comparison table
…x setNameForAddr auth to include Ownable
Update shared CSS for the ENS docs brand refresh (typography, tokens, and surface styling). Co-authored-by: Cursor <cursoragent@cursor.com>
Add inline code background colors for light and dark modes, normalize empty catch blocks, and reformat the ENSv2 sidebar entries for consistent indentation. Co-authored-by: Cursor <cursoragent@cursor.com>
Apply font-semi-mono alongside semibold names in profile and record tables for clearer name typography. Co-authored-by: Cursor <cursoragent@cursor.com>
Update shared CSS for the ENS docs brand refresh (typography, tokens, and surface styling). Co-authored-by: Cursor <cursoragent@cursor.com>
Add inline code background colors for light and dark modes, normalize empty catch blocks, and reformat the ENSv2 sidebar entries for consistent indentation. Co-authored-by: Cursor <cursoragent@cursor.com>
Apply font-semi-mono alongside semibold names in profile and record tables for clearer name typography. Co-authored-by: Cursor <cursoragent@cursor.com>
Docs shell: ENS Core fonts, tokens, and example UI
…s for post-audit branch
…t branch, move emancipation content, add definition callouts
…e, move resolution content from registry-hierarchy
…ccuracies and refine migration page (move user guide to top, rewrite Graveyard section)
…tion, migration, aliasing) and audit reference sections against post-audit contracts
…ks across ENSv2 pages
…cies from 8-agent docs review

No description provided.