Dare un nome agli smart contract
Gli smart contract sono una pietra miliare dell'infrastruttura decentralizzata di Ethereum, consentendo applicazioni e protocolli autonomi. Ma anche se le capacità dei contratti si evolvono, gli utenti e gli sviluppatori si affidano ancora a indirizzi esadecimali grezzi per identificare e fare riferimento a questi contratti.
Dare un nome agli smart contract con l'Ethereum Name Service (ENS) (opens in a new tab) migliora l'esperienza utente eliminando gli indirizzi esadecimali dei contratti e riduce il rischio di attacchi come l'avvelenamento degli indirizzi (address poisoning) e lo spoofing. Questa guida spiega perché dare un nome agli smart contract è importante, come può essere implementato e gli strumenti disponibili come Enscribe (opens in a new tab) per semplificare il processo e aiutare gli sviluppatori ad adottare questa pratica.
Perché dare un nome agli smart contract?
Identificatori leggibili dall'uomo
Invece di interagire con indirizzi di contratto opachi come 0x8f8e...f9e3, gli sviluppatori e gli utenti possono utilizzare nomi leggibili dall'uomo come v2.myapp.eth. Questo semplifica le interazioni con gli smart contract.
Ciò è reso possibile dall'Ethereum Name Service (opens in a new tab) che fornisce un servizio di denominazione decentralizzato per gli indirizzi Ethereum. Questo è analogo a come il Domain Name Service (DNS) consente agli utenti di Internet di accedere agli indirizzi di rete utilizzando un nome come ethereum.org invece di un indirizzo IP come 104.18.176.152.
Sicurezza e fiducia migliorate
I contratti con nome aiutano a ridurre le transazioni accidentali verso l'indirizzo sbagliato. Aiutano anche gli utenti a identificare i contratti legati ad app o marchi specifici. Questo aggiunge un livello di fiducia reputazionale, specialmente quando i nomi sono collegati a domini principali ben noti come uniswap.eth.
A causa della lunghezza di 42 caratteri dell'indirizzo Ethereum, è molto difficile per gli utenti identificare piccoli cambiamenti negli indirizzi, in cui sono stati modificati un paio di caratteri. Ad esempio, un indirizzo come 0x58068646C148E313CB414E85d2Fe89dDc3426870 verrebbe normalmente troncato a 0x580...870 da applicazioni rivolte all'utente come i portafogli. È improbabile che un utente noti un indirizzo malevolo in cui sono stati alterati un paio di caratteri.
Questo tipo di tecnica è impiegato dagli attacchi di spoofing e avvelenamento degli indirizzi in cui gli utenti sono indotti a credere di interagire o inviare fondi all'indirizzo corretto, quando in realtà l'indirizzo assomiglia semplicemente a quello corretto, ma non è lo stesso.
I nomi ENS per portafogli e contratti proteggono da questi tipi di attacchi. Come gli attacchi di spoofing DNS, anche gli attacchi di spoofing ENS possono essere perpetrati, tuttavia, è più probabile che un utente noti un errore di ortografia in un nome ENS rispetto a una piccola modifica a un indirizzo esadecimale.
Migliore UX per portafogli ed esploratori
Quando uno smart contract è stato configurato con un nome ENS, è possibile per app come portafogli ed esploratori di blockchain visualizzare i nomi ENS per gli smart contract, invece degli indirizzi esadecimali. Questo fornisce un significativo miglioramento dell'esperienza utente (UX) per gli utenti.
Ad esempio, quando interagiscono con un'app come Uniswap, gli utenti vedranno tipicamente che l'app con cui stanno interagendo è ospitata sul sito web uniswap.org, ma verrebbe loro presentato un indirizzo di contratto esadecimale se Uniswap non avesse dato un nome ai propri smart contract con ENS. Se il contratto ha un nome, potrebbero invece vedere v4.contracts.uniswap.eth, il che è molto più utile.
Dare un nome alla distribuzione rispetto al post-distribuzione
Ci sono due momenti in cui si può dare un nome agli smart contract:
- Al momento della distribuzione: assegnando un nome ENS al contratto mentre viene distribuito.
- Dopo la distribuzione: mappando un indirizzo di contratto esistente a un nuovo nome ENS.
Entrambi gli approcci si basano sull'avere l'accesso come proprietario o gestore a un dominio ENS in modo da poter creare e impostare i record ENS.
Come funziona la denominazione ENS per i contratti
I nomi ENS sono memorizzati onchain e si risolvono in indirizzi Ethereum tramite i resolver ENS. Per dare un nome a uno smart contract:
- Registrare o controllare un dominio ENS principale (es.
myapp.eth) - Creare un sottodominio (es.
v1.myapp.eth) - Impostare il record
addressdel sottodominio sull'indirizzo del contratto - Impostare il record inverso del contratto sull'ENS per consentire di trovare il nome tramite il suo indirizzo
I nomi ENS sono gerarchici e supportano sotto-nomi illimitati. L'impostazione di questi record comporta tipicamente l'interazione con il registro ENS e i contratti dei resolver pubblici.
Strumenti per dare un nome ai contratti
Ci sono due approcci per dare un nome agli smart contract. Utilizzare l'App ENS (opens in a new tab) con alcuni passaggi manuali, oppure utilizzare Enscribe (opens in a new tab). Questi sono delineati di seguito.
Configurazione manuale di ENS
Utilizzando l'App ENS (opens in a new tab), gli sviluppatori possono creare manualmente sotto-nomi e impostare record di indirizzi di inoltro. Tuttavia, non possono impostare un nome primario per uno smart contract impostando il record inverso per il nome tramite l'app ENS. Devono essere intrapresi passaggi manuali che sono trattati nella documentazione di ENS (opens in a new tab).
Enscribe
Enscribe (opens in a new tab) semplifica la denominazione degli smart contract con ENS e migliora la fiducia degli utenti negli smart contract. Fornisce:
- Distribuzione e denominazione atomica: Assegna un nome ENS durante la distribuzione di un nuovo contratto
- Denominazione post-distribuzione: Collega nomi a contratti già distribuiti
- Supporto multi-catena: Funziona su Ethereum e reti layer 2 (l2) in cui è supportato ENS
- Dati di verifica del contratto: Include dati di verifica del contratto estratti da più fonti per aumentare la fiducia degli utenti
Enscribe supporta i nomi ENS forniti dagli utenti, o i propri domini se l'utente non ha un nome ENS.
Puoi accedere all'App Enscribe (opens in a new tab) per iniziare a dare un nome e visualizzare gli smart contract.
Migliori pratiche
- Usa nomi chiari e versionati come
v1.myapp.ethper rendere trasparenti gli aggiornamenti del contratto - Imposta record inversi per collegare i contratti ai nomi ENS per la visibilità in app come portafogli ed esploratori di blockchain.
- Monitora attentamente le scadenze se vuoi prevenire cambiamenti accidentali di proprietà
- Verifica il codice sorgente del contratto in modo che gli utenti possano fidarsi che il contratto nominato si comporti come previsto
Rischi
Dare un nome agli smart contract fornisce vantaggi significativi per gli utenti di Ethereum, tuttavia, i proprietari di domini ENS devono essere vigili riguardo alla loro gestione. I rischi degni di nota includono:
- Scadenza: Proprio come i nomi DNS, le registrazioni dei nomi ENS hanno una durata limitata. Pertanto è vitale che i proprietari monitorino le date di scadenza dei loro domini e li rinnovino con largo anticipo rispetto alla loro scadenza. Sia l'App ENS che Enscribe forniscono indicatori visivi per i proprietari di domini quando la scadenza si avvicina.
- Cambio di proprietà: I record ENS sono rappresentati come NFT su Ethereum, dove il proprietario di uno specifico dominio
.ethha in suo possesso l'NFT associato. Pertanto, se un account diverso dovesse assumere la proprietà di questo NFT, il nuovo proprietario potrebbe modificare qualsiasi record ENS come ritiene opportuno.
Per mitigare tali rischi, l'account proprietario per i domini di secondo livello (2LD) .eth dovrebbe essere protetto tramite un portafoglio multi-firma con sottodomini creati per gestire la denominazione dei contratti. In questo modo, in caso di modifiche accidentali o malevole della proprietà a livello di sottodominio, possono essere sovrascritte dal proprietario del 2LD.
Il futuro della denominazione dei contratti
La denominazione dei contratti sta diventando una migliore pratica per lo sviluppo di applicazioni decentralizzate (dapp), in modo simile a come i nomi di dominio hanno sostituito gli indirizzi IP sul web. Man mano che più infrastrutture come portafogli, esploratori e dashboard integrano la risoluzione ENS per i contratti, i contratti con nome miglioreranno la sicurezza e ridurranno gli errori in tutto l'ecosistema.
Rendendo gli smart contract più facili da riconoscere e da comprendere, la denominazione aiuta a colmare il divario tra utenti e app su Ethereum, migliorando sia la sicurezza che l'UX per gli utenti.