Recently was published encouraging the use of emojis in ENS names. However, I have a serious concern: along with many other symbolic characters, emojis aren’t, under the current official specification, allowed in ENS names.
As per , all names are supposed to adhere to , a specification for compatibility between IDNA 2008 and IDNA 2003. (IDNA stands for Internationalizing Domain Names in Applications.) However, emojis have never been allowed under IDNA. The reasoning was given in 2017 in the :
Characters in the Unicode Category “Symbol, Other” (So) were specifically not included; their derived property values[7] are calculated as DISALLOWED in the IDNA standard.[8] Because emoji and other emoji-like symbol characters (e.g., ☺, 😀) belong to the Unicode “So” category, they are disallowed by IDNA.
In practice, the web3.eth.ens standard library’s nameprep actually does follow the IDNA spec, and so ‘👩❤️👨’ will not pass validation. The JS library eth-ens-namehash which the aforementioned blog post used in its example happens to be incorrect/buggy as it does not provide any IDNA validation.
If we really think emojis are a great idea, we need to clearly state in the ENS spec (EIP-137) that we are abandoning IDNA and UTS #46. Presently, we clearly state instead that names must adhere to UTS #46 (and therefore be IDNA-compliant).
Published at Mon, 20 May 2019 06:13:42 +0000