Unsure. The JS code is incredibly easy to audit or re-implement yourself. The ref-impl and ens-normalize share the same normalization loop that directly follows the ENSIP processing section. I know there’s a Go implementation. I’m not sure how many other implementations exist. The smart contract route might also be best for user-facing applications.
After thinking about this, it might be better to enforce this through validation.
I computed some additional stats for the 1.4M names:
- There are 1320 collisions JSON
- 461 trivial (just casing permutation)
- 669 pure arabic numerals
- 160 non-trivial (everything else) which looks like hyphens and illegal emoji
- Only 4.7% (66819 of 1410818 unique-valid names) are non-basic (
/^[a-z0-9.-]+$/+ Valid Emoji) JSON
- 66808 if basic includes leading hyphen
- 54927 if basic includes anywhere hyphen
- Only 4.2% (60584) if I include single-character text-presentation emoji (non-colored) too
- Even less if you include the pictographs (non-colored non-emoji)
- The current smart contract incorrectly fails on 197 (0.014%), of which 196 are supposed to be valid. Once NFC is fully implemented, that will be 0 (100% match with reference implementation.)