We have found a discrepancy/bug in the Legacy Registry and Registrar. Given its nature, we think it is not a secret but we found no documentation of it anywhere. Essentially, if Controller and Owner are different, then Registry gives wrong output when owner(namehash) is queried. Registrar gives the correct result via ownerOf(tokenID). This is not a critical bug since Registry.owner() seems to be hardly used by anyone and Registrar.ownerOf() is the more common method. Registry also doesn’t have any sensitive functions that can be hijacked by this issue. We are using ENS Registry hardcoded in NameSys Resolver and our logic for domains with different Owner and Controller breaks down due to this bug. We may be forced into redeploying due to this. Is there a documentation or record of this issue? We think developers should be made aware of it so that this doesn’t happen unknowingly to builders.
That is a completely different issue and should have been a separate topic instead of in this thread, but…
Wrapped names have a maximum label length of 255 bytes (not characters, bytes when DNS-encoded).
The new manager app uses the new ETHRegistrarController which auto-wraps all newly registered names. So that length restriction applies to all new names registered through the manager app.
The only way to register new names that are longer than that, is to use the old ETHRegistrarController to directly register an unwrapped name. You can do that with the old/legacy manager app here: https://legacy.ens.domains/