Skip to content

ENSIP-27: Node Classification And Metadata#64

Open
jmacwhyte wants to merge 8 commits into
ensdomains:masterfrom
0xLighthouse:metadata-ensip
Open

ENSIP-27: Node Classification And Metadata#64
jmacwhyte wants to merge 8 commits into
ensdomains:masterfrom
0xLighthouse:metadata-ensip

Conversation

@jmacwhyte

Copy link
Copy Markdown

This proposed ENSIP is the result of work that was sponsored by the ENS Metagov Working Group. It is currently a work in progress, and we are soliciting feedback and contributions from across multiple ecosystems.

This initiative aims to settle on a standard way of attaching metadata to ENS names/subnames (nodes), which can convey the organizational role of the node and include details that are important to surface on-chain (e.g. delegate and conflict-of-interest statements, the location of official wallets and contracts, agent metadata, etc). All of these details can then be found by simply querying the relevant ENS name/subname.

ENS Forum posts: Temp check, Kickoff
Project overview: Notion

For a TL;DR: of the latest design, see Technical design v3 on the Notion page.

Comment thread ensips/27.md
Comment thread ensips/xx.md Outdated
Nodes can specify a text record with the key name of `schema`, the value of which points to a JSON schema which declares which metadata attributes can be added to the node as text or data records, in addition to the global text records already specified in existing ENSIPs. The value of `schema` MUST start with one of the following prefixes, followed by the appropriate value:

* `ipfs://` - followed by the ipfs URI pointing to the JSON payload
* `https://` - followed by the http(s) URI pointing to the JSON payload

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I suggest to generally encourage people to not use http prefixes if not completely disallow it. It just creates a bunch of problems downstream (file not available anymore, changed, etc).

Better would be ipfs (although also problematic as files on IPFS can disappear too), CBOR or data.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

I agree that in practice, IPFS and/or CBOR would be the preferred option to ensure data resilience. However, in the interest of flexibility, I wouldn't want to disallow http, because there could be some interesting, valid use cases. For example, if someone is maintaining a schema that is used by many nodes, they may want the ability to add more attributes to the schema by simply changing the file hosted via HTTP instead of needing to re-write every schema record across all nodes.

Writers and readers should understand the trade-offs when using http vs IPFS. I will make a note to update the ENSIP to say that IPFS and CBOR are the preferred options, even if others are allowed.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

@schmidsi I have expanded on this in the latest commit, please let me know your thoughts.

Comment thread ensips/27.md

* `ipfs://` - followed by the ipfs URI pointing to the JSON payload
* `https://` - followed by the http(s) URI pointing to the JSON payload
* `cbor:` - followed by the schema encoded in CBOR format

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

If multiple nodes use the same schema, then we might want to add an option to say: "same schema as wallet.ens.eth", or even a pointer like "person.schemas.ens.eth"

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

That could be a useful feature, related to what I said above about http! I'll give some thought to how this could be achieved.

@jmacwhyte jmacwhyte changed the title ENSIP: Organizational (Node Classification) Metadata ENSIP: Node Classification And Metadata Apr 27, 2026
@jmacwhyte jmacwhyte marked this pull request as ready for review April 27, 2026 16:19
@jmacwhyte

Copy link
Copy Markdown
Author

We have labeled this as ENSIP-64, in anticipation of using PR number to identify draft ENSIPs. Happy to change if needed!

@estmcmxci

Copy link
Copy Markdown

Why not 27, 28?

@jmacwhyte

jmacwhyte commented May 27, 2026

Copy link
Copy Markdown
Author

Why not 27, 28?

It has provisionally been named after the number of the pull request, to guarantee it won't conflict with anyone else. We are just waiting for someone from Labs to issue us a number from the new system.

@wentelteefje

Copy link
Copy Markdown
Member

/assign-ensip

@github-actions

Copy link
Copy Markdown

All set — this proposal is now ENSIP-27. The number is reserved.

Could you make these changes to your PR so it's ready to merge?

  • Rename ensips/64.mdensips/27.md
  • Update the H1 heading in that file to start with # ENSIP-27:
  • Update the PR title to start with ENSIP-27:

Thanks!

@wentelteefje

Copy link
Copy Markdown
Member

@jmacwhyte I assigned an ENSIP number for you. In addition to the comment above, could you please add

track: Ecosystem

to the front matter of your file too (you can look at ENSIP-26 for an example). Thank you!

@jmacwhyte jmacwhyte changed the title ENSIP: Node Classification And Metadata ENSIP-27: Node Classification And Metadata Jun 29, 2026
@jmacwhyte

Copy link
Copy Markdown
Author

@wentelteefje All done, thanks!

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.

4 participants