Diagnosing a blocked resolver change on a wrapped ENS name

The operator controls a wrapped name and can edit an address record, yet changing the registry resolver fails. A Name Wrapper fuse can restrict the latter operation independently of record editing.

Inspect the fuse bitmap and expiry

Read the wrapped name’s current data, including owner, fuses and expiry. In the fixture mask 8 represents CANNOT_SET_RESOLVER. The second bitmap includes the flag even though it is not equal to 8. Use a bit test rather than comparing the entire word to one constant, and interpret it for the live, unexpired name.

const CANNOT_SET_RESOLVER = 8n;
for (const fuses of [1n, 9n]) {
  console.log((fuses & CANNOT_SET_RESOLVER) !== 0n);
}

Trace the operation that failed

Changing the resolver pointer through the wrapper and calling an existing resolver to edit its records are separate permission checks. A burned fuse preventing pointer changes does not freeze every field inside the current resolver. Conversely, an unset bit alone does not make the caller authorized. Inspect the resolver’s own permissions before promising that a payment address can still be changed.

docs.ens.domains Name Wrapper fuses