Leggere una blockchain con gli explorer pubblici · Lezione 7 di 8
Token e smart contract negli explorer
7 min di lettura
Coin e token sono cose diverse
Ogni rete ha una coin nativa: BTC su Bitcoin, ETH su Ethereum, SOL su Solana. La coin nativa è integrata nel protocollo e paga le commissioni.
Un token è un'altra cosa. Su Ethereum e reti simili, un token è uno smart contract che tiene un proprio registro: una tabella di indirizzi e delle quantità possedute da ciascuno. Quando «detieni» 500 unità di un token, il tuo indirizzo non le contiene come contiene ETH. Il contratto del token registra che il tuo indirizzo ha diritto a 500 unità.
La maggior parte dei token segue standard condivisi, così i wallet e gli explorer sanno come visualizzarli:
| Standard | Tipo di token | Esempi di utilizzo |
|---|---|---|
| ERC-20 | Fungibile: ogni unità è identica | Stablecoin, token di governance |
| ERC-721 | Non fungibile (NFT): ogni token ha un proprio ID | Oggetti da collezione, biglietti, certificati |
| ERC-1155 | Entrambi i tipi in un unico contratto | Giochi, edizioni di oggetti |
Altre reti hanno i propri equivalenti (per esempio, i token SPL su Solana e i token TRC-20 su Tron) e gli explorer di tali reti li mostrano in modo simile.
Come appare un trasferimento di token
Un trasferimento di token è una transazione che chiama il contratto del token e gli chiede di aggiornare il proprio registro. Questo comporta tre conseguenze che spesso confondono le persone la prima volta:
- Il campo To della transazione mostra il contratto del token, non la persona che riceve i token.
- Il campo Value è solitamente 0 ETH, perché non viene inviato ETH.
- Il destinatario effettivo e la quantità sono contenuti nei dati di input e il risultato viene registrato come evento Transfer nei log.
Gli explorer leggono questi eventi Transfer e li presentano in modo intuitivo, di solito in una sezione chiamata «Token trasferiti» o «Trasferimenti di token ERC-20» nella pagina della transazione e in una scheda separata «Trasferimenti di token» nella pagina di ciascun indirizzo. Se stai verificando se dei token sono arrivati a un indirizzo, è lì che devi guardare, non nell'elenco principale delle transazioni.
Decimali: leggere la quantità effettiva
I contratti memorizzano le quantità dei token come numeri interi. Ogni token dichiara un numero di decimali che indica ai wallet dove posizionare la virgola.
- Molti token usano 18 decimali, come ETH stesso.
- Le principali stablecoin ancorate al dollaro, USDC e USDT, usano 6 decimali su Ethereum.
Quindi, una quantità grezza di 1.500.000 in un contratto USDC significa 1,5 USDC, mentre lo stesso numero grezzo in un token con 18 decimali sarebbe una frazione minuscola di un'unità. Di norma gli explorer eseguono questa conversione al posto tuo, ma se leggi dati di input grezzi o esporti dati, applica i decimali prima di trarre conclusioni.
La pagina del token e l'indirizzo del contratto
Ogni token ha una pagina che mostra il nome, il simbolo, i decimali, l'offerta totale, il numero di detentori, un elenco dei trasferimenti e, soprattutto, il suo indirizzo del contratto.
L'indirizzo del contratto è la vera identità del token. I nomi e i simboli non sono univoci. Chiunque può distribuire in pochi minuti un contratto chiamato «Tether USD» con il simbolo USDT. Questi token falsi sono comuni e compaiono nei wallet e negli explorer con un aspetto quasi identico a quello dei token autentici.
Per verificare che un token sia autentico:
- Recupera l'indirizzo ufficiale del contratto dal sito web o dalla documentazione dell'emittente e confronta l'indirizzo completo.
- Controlla il numero di detentori, l'età e l'attività di trasferimento indicati nella pagina del token. Un token con un nome famoso ma solo pochi detentori, creato la settimana scorsa, è un campanello d'allarme.
- Ricorda che la stessa stablecoin esiste sotto forma di contratti separati su reti diverse. USDT su Ethereum e USDT su Tron sono contratti diversi su blockchain diverse, così come USDC su Ethereum e USDC su BNB Smart Chain. Poiché le reti EVM condividono lo stesso formato degli indirizzi, inviare fondi all'indirizzo giusto sulla rete EVM sbagliata è un errore facile e può comportare la perdita dei fondi o rendere necessario un recupero difficile.
Pagine dei contratti: codice verificato, lettura e scrittura
La pagina dell'indirizzo di uno smart contract include schede aggiuntive:
- Codice: se lo sviluppatore ha verificato il contratto, l'explorer mostra il codice sorgente e conferma che compila esattamente nel codice distribuito sulla blockchain. La verifica non significa che il contratto sia sicuro o onesto; significa che chiunque può leggere cosa fa.
- Leggi contratto: permette di interrogare valori pubblici, come il saldo di un indirizzo o l'offerta totale, direttamente sulla blockchain.
- Scrivi contratto: permette di inviare transazioni al contratto da un wallet connesso. Procedi con grande cautela.
- Proxy: molti contratti sono aggiornabili. Un contratto proxy inoltra le chiamate a un contratto di implementazione che i suoi amministratori possono sostituire. Gli explorer mostrano entrambi gli indirizzi. Aggiornabile significa che le regole possono cambiare in seguito.
Approvazioni: autorizzazione a spendere i tuoi token
Le applicazioni decentralizzate spesso devono trasferire token per tuo conto, per esempio per effettuare uno swap. Lo fanno tramite un'approvazione: invii una transazione che chiama la funzione approve del token e consente a un contratto spender specificato di trasferire fino a una determinata quantità dei tuoi token.
Gli explorer mostrano le approvazioni come transazioni con il metodo «Approve» e molti dispongono di uno strumento di controllo delle approvazioni dei token che elenca tutti gli spender autorizzati dal tuo indirizzo. È bene conoscere due rischi:
- Le approvazioni sono spesso illimitate per impostazione predefinita, quindi lo spender può trasferire tutti i token di quel tipo, ora o in futuro.
- Uno spender malevolo o compromesso può prosciugare i token approvati senza richiederti un'altra firma.
Controllare e revocare le vecchie approvazioni è una semplice abitudine di sicurezza, e l'explorer è il posto in cui puoi visualizzarle. Tieni presente che alcuni token e app accettano anche firme permit (per esempio EIP-2612 o Permit2): firmi un messaggio nel wallet invece di inviare una transazione Approve, quindi l'approvazione non compare sulla blockchain finché lo spender non la utilizza. Esamina le richieste di firma con la stessa attenzione riservata alle transazioni.
Truffe riconoscibili in un explorer
Poiché la blockchain è pubblica e chiunque può creare token e inviare transazioni, alcune truffe lasciano tracce evidenti:
- Avvelenamento degli indirizzi. Il truffatore crea un indirizzo le cui prime e ultime caratteri corrispondono a quelli di uno che usi, poi ti invia un trasferimento di importo minimo o nullo (spesso di un token falso), così l'indirizzo simile compare nella cronologia. Il truffatore spera che in seguito tu lo copi per errore. Confronta sempre l'indirizzo completo.
- Token spam e di phishing. Nel tuo indirizzo compaiono token sconosciuti con nomi che includono il link a un sito web e ti invitano a «richiedere» qualcosa. Visitare il sito e firmare ciò che ti chiede può prosciugare il tuo wallet. Molti explorer nascondono o segnalano questi token.
- Versioni false di token autentici, come descritto sopra.
Nessuna di queste truffe può sottrarti i fondi da sola. Funzionano solo se interagisci.
NFT negli explorer
Per i token ERC-721 e ERC-1155, gli explorer mostrano il token ID, il proprietario attuale e la cronologia dei trasferimenti. L'immagine e la descrizione provengono solitamente da un link ai metadati memorizzato dal contratto. Spesso questi metadati si trovano fuori dalla blockchain, su un server web o una rete di archiviazione decentralizzata; quindi l'immagine che vedi non è necessariamente memorizzata sulla blockchain stessa.
Focus d'esame: differenze tra coin native e token detenuti nel registro di un contratto; ERC-20, ERC-721 ed ERC-1155; perché in un trasferimento di token il campo To mostra il contratto del token e il campo Value indica 0 ETH, mentre il destinatario compare nell'evento Transfer; decimali (18 è comune, USDC e USDT ne usano 6 su Ethereum); l'indirizzo del contratto come identità del token; il significato dei contratti verificati e proxy; approvazioni e relativi rischi; e avvelenamento degli indirizzi.
Domande di esercitazione
Verifica la tua comprensione. Queste domande non contano per l’esame.
Accedi per salvare i tuoi progressi e riprendere da dove hai lasciato. È gratuito. Accedi