Solo a fini educativi; non è consulenza finanziaria o di sicurezza. I decimali non provano identità, valore, copertura o sicurezza di un token.
Risposta diretta
Per un token ERC-20, decimals() è un metadato facoltativo che indica alle interfacce come mostrare unità intere. Se restituisce d, l’importo visualizzato convenzionale è raw / 10^d. Non cambia l’aritmetica del contratto e non autentica il token. Prima di fidarti del risultato verifica rete, indirizzo esatto, codice o implementazione proxy e blocco.
Leggi decimals() direttamente tramite un RPC indipendente a un blocco specifico, decodifica il risultato ABI come uint8 e confrontalo con il registro ufficiale dell’emittente e un explorer affidabile. Poi verifica la scala con valori grezzi di balanceOf, trasferimenti, autorizzazioni, ricevute ed eventi. Non presumere 18 se la chiamata manca, va in revert, restituisce dati malformati o contraddice altre prove.
Come funziona
ERC-20 memorizza e trasferisce importi interi senza segno. Il livello di visualizzazione inserisce la virgola; il contratto riceve sempre interi. Converti l’input con stringhe decimali o interi a precisione arbitraria, mai con virgola mobile binaria. Una quantità è rappresentabile solo se moltiplicandola per 10^d si ottiene un intero.
Poiché decimals() è facoltativo, un token conforme può ometterlo. Un’implementazione personalizzata o aggiornabile può restituire un valore inatteso o cambiare dopo un upgrade. Per un proxy ERC-1967 controlla indirizzo proxy, implementazione o beacon, amministratore ed eventi di upgrade; leggi lo stato all’indirizzo proxy e fissa ogni confronto allo stesso blocco.
Anche autorizzazioni e valori ERC-2612 permit sono interi grezzi. Un trasferimento mostrato correttamente non prova che autorizzazione, minimo del router, importo bridge o contabilità usino la stessa scala. I contratti sorgente e destinazione di un bridge possono avere decimali diversi: confronta valore leggibile e unità grezze su entrambi i lati secondo le regole documentate di conversione e arrotondamento.
Usa questa procedura:
- Fissa ID della rete o dominio, contratto del token, numero del blocco, endpoint RPC e ora di osservazione.
- Conferma l’indirizzo nel registro ufficiale dell’emittente; nome, simbolo, icona e risultati di ricerca non sono prove autorevoli.
- Controlla il codice distribuito e se l’indirizzo è un proxy; annota implementazione o beacon, amministratore e upgrade recenti.
- Chiama
decimals(), decodificauint8via ABI e registra successo, revert, vuoto o output malformato senza inserire un valore predefinito. - Leggi
balanceOf,totalSupply, autorizzazione, calldata, ricevuta ed eventi grezzi a blocchi compatibili; formattali con la scala osservata. - Ricalcola trasferimenti, autorizzazioni, preventivi e bridge con interi, includendo commissioni, arrotondamento, residui, rebase o tasse di trasferimento.
- Simula e invia una piccola operazione, poi riconcilia i saldi grezzi prima e dopo; fermati se interfaccia, RPC, evento o saldo non coincidono.
Esempi
- Un valore grezzo, due scale. Con
raw = 123456789,d = 6mostra123.456789; cond = 18,0.000000000123456789. La differenza è un fattore di10^12. - La rappresentabilità conta. Con
d = 6,1.25token diventano1250000unità grezze.0.0000001token è meno di un’unità e va rifiutato o arrotondato secondo una regola esplicita. - Autorizzazione scalata male. Un’autorizzazione di
100token cond = 6è100000000. Codificata cond = 18diventa100000000000000000000, cioè10^12volte maggiore. - Riscalatura bridge. Se una rotta documentata
1:1converte un token sorgente cond = 6in una rappresentazione destinazione cond = 18,2500000grezzo rappresenta2.5token e2500000000000000000a destinazione rappresenta2.5. Commissioni, limiti, residui e saldo ricevuto vanno comunque verificati.
Rischi
- L’indirizzo corretto viene interrogato sulla rete sbagliata.
- Nome, simbolo o icona copiati nascondono un altro contratto.
- Implementazione proxy o beacon cambiano dopo la verifica.
- RPC o explorer forniscono stato vecchio, non finalizzato o incoerente.
- Metadati assenti o malformati vengono sostituiti silenziosamente con
18. - La virgola mobile binaria arrotonda un importo grande o preciso.
- Il wallet formatta bene il trasferimento ma male autorizzazione o permit.
- Un database mescola unità grezze e importi leggibili.
- Un bridge presume decimali uguali o non dichiara l’arrotondamento dei residui.
- Commissione sul trasferimento, rebase, mint, burn, pausa o blocco rompono la riconciliazione semplice.
- Calldata, eventi, ricevute e variazioni effettive del saldo non coincidono.
- La verifica dei decimali è scambiata per prova di emittente, riserve, liquidità o sicurezza.
Errori comuni
- Tutti gli ERC-20 hanno
18decimali. Il metadato è facoltativo e un’implementazione può restituire altro. - I decimali sono bit di precisione usati dalla EVM. Sono una convenzione di visualizzazione in base dieci; l’aritmetica resta intera.
- Il saldo formattato dell’explorer è una conferma indipendente. Può dipendere dalla stessa chiamata e condividere lo stesso errore.
- Stesso simbolo e decimali identificano lo stesso asset. Servono anche rete corretta, contratto esatto e prove dell’emittente.
- Un piccolo trasferimento riuscito valida ogni integrazione. Autorizzazioni, router, bridge, exchange e contabilità possono scalare separatamente.
Argomenti correlati
- Verifica del contratto del token
- Decodifica della calldata nel wallet
- Verifica dei token bridge
- Rischio dei token con commissione di trasferimento
- Contratto proxy
Fonti
- ERC-20: Token Standard - Ethereum Improvement Proposals (consultato: 2026-08-21)
- ERC-20 - OpenZeppelin Docs (consultato: 2026-08-21)
- JSON-RPC API - ethereum.org (consultato: 2026-08-21)
- ERC-1967: Proxy Storage Slots - Ethereum Improvement Proposals (consultato: 2026-08-21)
- ERC-2612: Permit Extension for EIP-20 Signed Approvals - Ethereum Improvement Proposals (consultato: 2026-08-21)