[EP3.7] [Social] Approval of ENS Name Normalization Standard (ENSIP-15)
This is a vote to approve ENSIP-15: Normalization Standard.
- Normalization isn't enforced on-chain.
- There is no code for the DAO to execute.
- Approval for ENSIP-15 should be confirmed through a social vote.
- Since ENSIP-1 (originally EIP-137) was finalized in 2016, Unicode has evolved from version 8.0.0 to 15.0.0 and incorporated many new characters, including complex emoji sequences.
- ENSIP-1 does not state the version of Unicode.
- ENSIP-1 implies but does not state an explicit flavor of IDNA processing.
- UTS-46 is insufficient to normalize emoji sequences. Correct emoji processing is only possible with UTS-51.
- Validation tests are needed to ensure implementation compliance.
- The success of ENS has encouraged spoofing via the following techniques:
- Insertion of zero-width characters.
- Using names which normalize differently between algorithms.
- Using names which appear differently between applications and devices.
- Substitution of confusable (look-alike) characters.
- Mixing incompatible scripts.
- Replace ENSIP-1 § Name Syntax "UTS-46 algorithm" with link to ENSIP-15.
- Agree to normalize names according to ENSIP-15 for a safer end-user experience.
- Examples:
- Libraries implementing ENSIP-15:
- Javascript — adraffy/ens-normalize
- Javascript — ensdomains/eth-ens-namehash
- Python — namehash/ens-normalize-python
- Web Frameworks using ENSIP-15:
- Javascript — ethers/ethers.io
- Javascript — web3/web3.js
- Javascript — wagmi-dev/viem
- Examples:
- Names visible to the end-user should be beautified for a more consistent appearance.
This vote is a single choice vote. You may vote for one of the following options:
- For
- Against
- Abstain
By voting For this proposal, you are voting in favor of approving ENSIP-15.