How does one set fuses with ENS subdomains and what happens if subdomains are unwrapped?

Hey guys,

As per the ENS wrapper info on github (GitHub - ensdomains/name-wrapper), every fuse has a different value. For example, CANNOT_SET_RESOLVER = 8.

What do we have to do if we want to burn more than one fuse? Do we use commas and add the number of every fuse we want to burn?

Also, what happens if a subdomain owner decides to unwrap his name? In that case, will his name remain an ERC-1155 token? If not, how will he manage it and what benefits would he have for unwrapping it?

Also, what exactly happens if the 2LD owner unwraps the name after subdomains have already been issued? Again, are there any benefits to this?

Any help would be greatly appreciated,
Thanks!

2 Likes

See the current readme here: ens-contracts/contracts/wrapper at master · ensdomains/ens-contracts · GitHub

It’s just a single integer, each fuse is a bit that you can bitwise OR.

If the subname is unwrapped, the ERC-1155 token is burned. They will simply control that subname directly in the ENS registry just like before.

Nothing happens to subnames if the parent name is unwrapped. Though of course, if the name is Locked, then it cannot be unwrapped in the first place.

1 Like

I went through the doc but have more qs now.

I didn’t really get what you meant by “each fuse is a bit that you can bitwise”. Assuming I want to burn the following 3 fuses: CANNOT_UNWRAP, CANNOT_TRANSFER, CANNOT_BURN_FUSES what exactly would I set the uint16 fuses argument?

Also, the doc you just linked says the following:
“At the expiry date, the .eth name will be frozen for the entirety of the grace period. This includes all functionality that checks the owner, but does not affect its subdomains. If the name is renewed by a wrapper unaware .eth registrar controller, the wrapper expiry of the name will remain in the same expired state and will not sync.”

I didn’t really understand this line. Does the subdomain remain with the owner even if the 2LD is expired?

Thanks!

You would set it to CANNOT_UNWRAP | CANNOT_TRANSFER | CANNOT_BURN_FUSES, or 7. If you are burning fuses on a subname as the parent then you’ll also need to include PARENT_CANNOT_CONTROL for that, so 65543.

That section you quoted has to do with .eth 2LDs only. When the expiration date in the .eth Registrar has been reached, then you are in the 90 day grace period. You still technically own the name, but can’t take any Name Wrapper actions on it (until you renew/extend the name). If the name is renewed using the old ETHRegistrarController, then you’ll still need to sync that expiry by calling renew on the Name Wrapper. If any fuses were burned on a subname, those will reset when the subname’s expiry is reached. If the subname was Emancipated or Locked, then you lose ownership of that subname when the expiry is reached. The parent owner will then be able to replace the subname.

1 Like

By name wrapper actions I assume you mean burning fuses.

Also, what do you mean by “The parent owner will then be able to replace the subname.”

Also, you said this: " If the subname was Emancipated or Locked, then you lose ownership of that subname when the expiry is reached." So what if the subname was not emancipated, and registered for let’s say 10 years. Would the owner of that name have access for 10 years even though the 2LD is not owned by anyone?

Just for context, I am launching a website which allows users to register subdomains for domains which I own, and I would like to know exactly what permissions I am/am not giving them.

When a subname is Emancipated, the parent loses the ability to replace the subname. If that subname expires, then the parent regains the ability to replace that subname.

This premise does not make sense to begin with. If you are registering a subname from a registrar, it’s most likely going to be Emancipated. When the subname expires, you lose ownership of it.

A subname’s expiry cannot be longer than the parent name’s expiry. So the parent name would also have to be Locked for at least 10 years in that scenario.

The parent owner can technically burn other parent-controlled fuses without emancipating a subname. And that would have an expiry. But again in that scenario, the parent name would need to already be Locked, with an expiry at least as long as the subname’s.


I would also recommend reading through this entire article first, as I believe it has the answers to most Name Wrapper technical questions:

Was just going through this and was going to link it here. Also, one last question, just so I’m clear, I basically need to add the numbers associated with all the fuses I want to burn right?

Yep, that’s right, if you’re talking about individual fuse bits.

1 Like

Awesome, thanks!

1 Like