Ens è un name server per Ethereum, potete collegare un dominio esempio.ens con un indirizzo wallet di Ethereum.

Attualmente sono stati registrati circa 180.000 domini unici, da oltre 8000 indirizzi differenti. Il suo impiego è già stato implementato all’interno di diversi wallet per la risoluzione degli indirizzi come il wallet standard di ethereum che ha già questa tecnologia implementata, e si sta iniziando a sperimentarne l’utilizzo all’interno dei browser con Swarm.

Quando ancora esisteva soltanto un insieme di indirizzi macchina da dover digitare a memoria, la nascita di DNS (Domain Name System) portò un nuovo sistema in grado di tradurre (mappare) un indirizzo macchina, in un indirizzo umanamente comprensibile.

In grado cioè di mettere chiunque in condizione di accedere ad un’informazione semplicemente accedendo alla sua etichetta, organizzando i sistemi non in una maniera topologica, implementativa della rete stessa, ma in una maniera umanamente accessibile e comprensibile da tutti.

Così ha fatto internet con DNS, così sta facendo Ethereum con il progetto ENS (Ethereum Name System), una versione più potente e decentralizzata di DNS stesso.

Oggi esiste un istituto chiamato ICANN (Internet Corporation for Assigned Names and Numbers), il quale contiene un registro strutturato enorme di tutti i domini Internet (es: www.atomtimes.com). ICANN, in questo caso, agisce da garante, da ente centrale. Ciò che determina lui è legge.

Come è organizzato: un insieme di server DNS si suddividono geograficamente in una struttura ramificata, ed offrono i servizi di traduzione da dominio (www.ethereum.org) ad indirizzo IP (54.192.27.39) ai vari richiedenti sul territorio.

Quando eseguiamo una ricerca, immaginiamo di voler ottenere l’indirizzo IP del sito www.ethereum.org, il server DNS controlla nei suoi registri se ha memoria, da ricerche precedenti, del dominio richiesto. Se non lo possiede, chiede al suo diretto superiore, e così via.

Se arrivati in cima nessuno lo possiede, allora la richiesta passa direttamente in mano all’ICANN, in grado di aggiornare i registri sottostanti.

Lui, tramite una ricerca a discesa, chiede ad altri tipi di server DNS prima chi tratta i siti con il “.org”, quindi chi ha il nome “ethereum.org”, quindi qual’è l’indirizzo IP di “www.ethereum.org”. Sistema al quanto articolato, dal quale si deduce però che ICANN organizza tutto.

Ethereum,  ha l’obiettivo generale di decentralizzare il potere ed il controllo. Quindi si è deciso di sviluppare un sistema basato su blockchain che semplificasse anche la complessa infrastruttura di server DNS, e che portasse tutto all’interno di contratti eseguiti sulla blockchain.

Nasce così ENS: un registro globale e trasparente che raccoglie la registrazione di domini, ed autorizza i proprietari ad associare dei “risolutori” programmabili.

Attualmente ENS è in grado nativamente di emettere dei domini terminanti con “.eth”, del tipo ovvero ad esempio “vitalik.eth”, e anche di sotto-domini del tipo “wallet.vitalik.eth”. ICANN non copre attualmente questo tipo di indirizzo, quindi non vi è alcun tipo di sovrapposizione tra i due sistemi.

Mentre normalmente i classici domini “.com”, “.it”, “.org” di DNS vi possono essere solamente dei record statici di testo, ed aggiornali richiede pesanti tempi di propagazioni dovuti alla complessità dell’infrastruttura, dietro ad un dominio “.eth” di ENS vi possono essere dei “risolutori” (resolver) che sono di fatto dei contratti anch’essi.

E’ possibile collegare un dominio ad un indirizzo Ethereum, o ad un indirizzo su Swarm, o ancora ad un record DNS classico, per puntare ad un vecchio sito web su infrastruttura server.

Potremmo programmare regole particolari per aggiornare il riferimento in automatico, o per permettere a qualcheduno di aggiornarlo per noi. Il tutto on-chain, e senza tempi di propagazione. Essendo di fatto il risolutore un programma, i limiti stanno nella nostra immaginazione.

Quello a cui di fatto sta puntando ENS, è diventare il risolutore di domini definitivo, come base assoluta per l’utilizzo dei nomi di indirizzo nel web3.0.