I just wanted to give a quick update on the status of the Name Wrapper contract.
@Premm.eth contributed a change that allows for upgrading to a new version of the wrapper. It functions such that the DAO must approve the upgraded version, and then individual users must execute the upgrade; upgrades cannot be forced by either party.
I contributed a change to refactor how subdomain replacement is controlled; instead of a flag on parent domains that prevents overwriting any child domain, there is now a flag on each domain that specifies the parent cannot replace it. This allows people to issue ‘irrevocable’ subdomains without removing their ability to control all subdomains.
We’ve refactored some of the methods that handle subdomain creation/update/replacement, to assume that the subdomain will also be wrapped. This simplifies the API a lot.
Jeff and I have come up with a way to enable fuses to have expirations attached. With the current version of the wrapper, we had the issue that fuses are burned ‘permanently’ but can still be revoked when the second-level domain expires and is reregistered. Integrating expirations for fuses into the wrapper makes this model explicit, and solves several issues we had:
- Because each name’s fuses now have expiration dates attached, it’s now possible to check if a name is ‘safe’ against interference by parent domain owners by checking just that name’s fuses and expiration.
- As a result, we no longer need the complex logic for checking a name’s entire hierarchy, and it’s now practical and affordable to check a name’s mutability onchain.
- Users will now be able to ‘rent’ subdomains by revoking their control over them for a limited period.
The rules around fuses and expiries are as follows:
- Every name has fuses and an expiry for those fuses.
- If the expiry is in the past, the fuses are cleared (set to their most permissive state)
- The expiry can only be increased, not decreased.
- The expiry cannot be greater than the parent domain’s expiry.
- The expiry on a .eth second level domain cannot be greater than the expiry of the domain itself in the registrar.
- Only the owner of the parent domain can set an expiry.
We aim to have the new version of the wrapper available for review some time this week.