Skip to content

Lockable resolver#262

Draft
serenae-fansubs wants to merge 2 commits intodevfrom
lockable-resolver
Draft

Lockable resolver#262
serenae-fansubs wants to merge 2 commits intodevfrom
lockable-resolver

Conversation

@serenae-fansubs
Copy link
Copy Markdown
Contributor

Lock specific record types

  • lockABI(node)
  • lockAddr(node)
  • lockContenthash(node)
  • lockDNS(node)
  • lockInterface(node)
  • lockName(node)
  • lockPubkey(node)
  • lockText(node)

Lock specific text record keys but not others

  • lockText(node, 'avatar')
  • lockText(node, 'url')

Lock everything

  • lockAll(node)

Once a specific record type (or everything) is locked, cannot be unlocked. Once at least one lock is performed, that node will no longer be clearable (cannot increment version).

This can be used in conjunction with the CANNOT_SET_RESOLVER fuse on wrapped names to create an immutable name that is guaranteed to resolve to records forever (or at least until the name expires).

@Arachnid
Copy link
Copy Markdown
Member

Is this ready for review?

@jefflau
Copy link
Copy Markdown
Member

jefflau commented Jul 18, 2023

From a high level, should we consider adding a function or functions that will first check if is a) wrapped, and b) has burnt CANNOT_SET_RESOLVER and then c) the record type is locked. This could then be used as by clients to know if a record is truly immutable, or it's just the resolver that has the record locked

@serenae-fansubs
Copy link
Copy Markdown
Contributor Author

From a high level, should we consider adding a function or functions that will first check if is a) wrapped, and b) has burnt CANNOT_SET_RESOLVER and then c) the record type is locked. This could then be used as by clients to know if a record is truly immutable, or it's just the resolver that has the record locked

That makes sense, I can add something like that.

Also, another consideration is the expiry of the name, and whether that should clear any locks. That would increase the complexity of this contract though.

As it stands now, if this was added into the Public Resolver, then any locks for a particular node would be permanent for that particular resolver deployment. So if Owner A locks the ETH address, but then the name expires and someone re-registers the name, Owner B would not be able to change the ETH address (that is of course, the whole point). So Owner B would be forced to update to a different resolver first.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 4, 2026

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 30 days if no further activity occurs. Thank you for your contributions.

@github-actions github-actions bot added the stale label Mar 4, 2026
@adraffy
Copy link
Copy Markdown
Member

adraffy commented Mar 6, 2026

PermissionedResolver in ENSv2 can lock any value by revoking all associated roles.

Stale locks are avoided by the change from PublicResolverOwnedResolver.

@github-actions github-actions bot removed the stale label Mar 11, 2026
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