Ethereum Name Service (ENS) es un sistema de nombres distribuido, abierto y extensible basado en la blockchain de Ethereum.
La función de ENS es mapear nombres legibles por humanos como ‘alice.eth’ a identificadores legibles por máquinas, como direcciones de Ethereum, otras direcciones de criptomonedas, hashes de contenido y metadatos. ENS también admite la ‘resolución inversa’, lo que permite asociar metadatos como nombres canónicos o descripciones de interfaces con direcciones de Ethereum.
ENS tiene objetivos similares a DNS, el Servicio de Nombres de Dominio de Internet, pero cuenta con una arquitectura significativamente diferente debido a las capacidades y limitaciones que proporciona la blockchain de Ethereum. Al igual que DNS, ENS opera con un sistema de nombres jerárquicos separados por puntos llamados dominios, y el propietario de un dominio tiene control total sobre los subdominios.
Los dominios de nivel superior, como ‘.eth’ y ‘.test’, son propiedad de contratos inteligentes llamados registradores, que especifican las reglas que rigen la asignación de sus subdominios. Cualquiera puede, siguiendo las reglas impuestas por estos contratos de registrador, obtener la propiedad de un dominio para su propio uso. ENS también permite importar nombres de DNS ya poseídos por el usuario para usarlos en ENS.
Debido a la naturaleza jerárquica de ENS, cualquier persona que posea un dominio en cualquier nivel puede configurar subdominios —para sí mismo u otros— según lo desee. Por ejemplo, si Alice posee ‘alice.eth’, puede crear ‘pay.alice.eth’ y configurarlo como quiera.
ENS está desplegado en la red principal de Ethereum y en varias redes de prueba. Si usas una biblioteca como la biblioteca Javascript ensjs, o una aplicación para usuarios finales, esta detectará automáticamente la red con la que estás interactuando y utilizará la implementación de ENS en esa red.