Approvazioni e allowance dei token: come controllare e revocare ERC-20
Scopri cosa consente un’approvazione ERC-20, come funzionano allowance illimitate e firme permit e cosa cambia davvero quando revochi un’autorizzazione.
In questa guidaCollegare il wallet e approvare un token sono permessi diversi
Breve sintesi
Una chiamata ERC-20 `approve` normalmente non invia token subito. Registra quanto uno specifico spender potrà richiedere in seguito tramite `transferFrom`. Disconnettere il wallet da un sito non elimina necessariamente l’allowance on-chain, e azzerarla non annulla un trasferimento già completato.
Collegare il wallet e approvare un token sono permessi diversi
Collegarsi a un sito di solito permette all’app di vedere un indirizzo pubblico e chiedere firme. Questo non autorizza, da solo, a spostare tutti i token ERC-20. L’allowance è registrata separatamente nel contratto del token. MetaMask distingue anche tra disconnessione da una dapp e revoca delle approvazioni.
Un’allowance ERC-20 è legata a contratto del token, blockchain, indirizzo del proprietario e indirizzo dello spender. Un’autorizzazione su Ethereum non vale per lo stesso simbolo su Polygon né per un altro token. Ricordare solo «ho approvato quel sito» può far perdere di vista quale token e rete mantengono ancora il permesso.
Questa guida riguarda approve, allowance e transferFrom di ERC-20 su Ethereum e reti compatibili. I trasferimenti di ETH nativo, setApprovalForAll degli NFT, altri standard e il collegamento per il login seguono modelli diversi. Per il backup delle chiavi consulta la guida alla frase seed e al recupero del wallet.
`approve` registra un limite di spesa, ma non invia il token
Con approve(spender, amount), il titolare può consentire a uno spender specifico di usare fino a una certa quantità. transferFrom consente allo spender di spostare token per conto del titolare. Quindi approve normalmente non cambia subito il saldo, ma una chiamata successiva può consumare l’allowance. È il flusso definito dallo standard ERC-20.
Per esempio, se un wallet contiene 300 token e concede a un router un’allowance di 80, in un ERC-20 convenzionale il limite è il minore tra allowance residua e saldo. Il permesso può riguardare più operazioni: un contratto può chiamare transferFrom varie volte. Se il contratto approvato o il percorso previsto viene sfruttato, i token possono muoversi in modo inatteso. Conta anche il comportamento non standard del token.
L’approvazione è di solito una transazione on-chain verso il contratto del token e può avere una commissione di rete. Alcune app separano approvazione e swap; altre combinano una firma di permesso con una transazione successiva. Controlla ciò che il wallet ti chiede di firmare e la rete selezionata, non solo il pulsante “Approve”.
Un’allowance illimitata non è un prelievo immediato
“Unlimited” spesso indica un allowance vicino al valore intero massimo del token. Non crea token infiniti e non trasferisce il saldo al momento dell’approvazione. Lo spender può però usare il permesso residuo in seguito sui token che arrivano nello stesso wallet per lo stesso token e la stessa rete. Alcune implementazioni non riducono il valore massimo; verifica come funziona il token.
Un’app può chiedere un limite ampio per evitare approvazioni ripetute, ma comodità ed esposizione vanno valutate insieme. Una vulnerabilità o l’abuso del controllo del contratto spender può rendere utilizzabile una vecchia approvazione. La guida alla revoca di Ethereum.org spiega perché un allowance ampio può restare importante anche dopo aver riportato gli asset nel wallet.
Un limite ridotto non elimina ogni rischio. Un token falso o lo spender sbagliato possono causare perdite anche con un importo piccolo; approvare a ogni operazione aggiunge commissioni e possibilità di errore. Considera quantità prevista, frequenza d’uso, fiducia nel contratto e possibilità di ricontrollare l’autorizzazione.

Controlla rete, token, spender e importo prima di firmare
Prima di firmare, verifica quattro dettagli: che la rete selezionata corrisponda a quella indicata dall’app; che l’indirizzo del contratto del token sia corretto, non solo il ticker; che lo spender corrisponda ai documenti ufficiali o a dati verificabili; e che il limite sia proporzionato all’operazione prevista.
Non collegare il wallet da link ricevuti in messaggi diretti, codici QR, chat di assistenza o annunci non verificati. Un sito di phishing può imitare l’app legittima. Parti da un dominio ufficiale salvato o dalla documentazione del progetto. Un nome familiare non prova che l’indirizzo sia corretto; un’etichetta di verifica nell’explorer non garantisce sicurezza.
Un firmatario hardware può separare la chiave privata dal browser normale, ma non decide se spender o importo siano sicuri. Se il dispositivo non mostra la richiesta in modo comprensibile, fermati e consulta la documentazione ufficiale del wallet. Meno dettagli sono visibili, meno puoi controllare.
`permit` cambia il percorso dell’approvazione, ma crea comunque un permesso
Alcuni ERC-20 supportano ERC-2612 permit. Invece di inviare una normale transazione approve, il titolare firma typed data; un’altra parte può inviare quella firma per impostare l’allowance. Il messaggio standard contiene titolare, spender, importo, nonce e deadline e associa la firma alla rete e al contratto.
La deadline ERC-2612 è l’ultimo momento in cui il permit firmato può essere inviato. Non significa che un’allowance già impostata scada automaticamente a quell’ora. Può restare attiva finché non viene consumata, modificata o revocata. Alcuni token usano varianti permit o regole aggiuntive; non tutte le richieste chiamate “permit” seguono ERC-2612.
Una firma può consentire a un altro account di pagare la commissione, ma non è per questo un innocuo login. Se il wallet non mostra chiaramente token, spender, importo e condizioni temporali, o se non coincidono con quanto spiegato dall’app, rifiuta e consulta i documenti ufficiali. Anche una firma non ancora inviata può essere presentata da qualcun altro prima della deadline.
Disconnettere un sito non revoca un’allowance on-chain
Uscire o disconnettere cambia la sessione del browser o il permesso di connessione. Un’allowance ERC-20 già registrata nel contratto può restare. Al contrario, revocarla non cancella l’indirizzo pubblico già noto al sito né la cronologia on-chain. La guida MetaMask alla disconnessione spiega la differenza.
La revoca di solito richiede una transazione on-chain che azzera l’allowance per quel token e spender. Ha un costo di rete e il vecchio permesso può restare attivo fino alla conferma. Poi aggiorna l’elenco delle approvazioni o interroga di nuovo il contratto per verificare lo zero con lo stesso wallet, rete, token e spender. MetaMask ed Ethereum.org spiegano i controlli per rete; verifica sempre dominio ufficiale e network selezionato.
Ogni rete conserva il proprio stato. Azzerare Ethereum non cambia automaticamente l’autorizzazione dello stesso token su un’altra rete. Controlla ogni account, contratto del token, spender e rete rilevante; poi verifica il risultato dopo la conferma. Uno strumento di revoca non deve chiedere frase seed o chiave privata.
La revoca blocca l’uso futuro, ma non annulla trasferimenti completati
Dopo la conferma di un’allowance pari a zero, quel permesso non può sostenere un nuovo transferFrom. La revoca non annulla trasferimenti completati, non recupera token dal destinatario e non rimuove permessi di altri contratti. Se uno spender sospetto ha già spostato token, revocare non ne garantisce il recupero.
Se la chiave privata è esposta, un attaccante può ancora firmare transazioni in altri modi. Possono restare attive approvazioni per altri spender o token, permessi operatore NFT, firme permit e autorizzazioni specifiche di contratti. Interpreta il risultato solo nell’ambito esatto di wallet e rete controllati.
Dopo la revoca, il prossimo swap, deposito o riscatto potrebbe richiedere una nuova approvazione. Prima verifica se un’operazione pendente o una posizione attiva usa quel permesso e, se serve, consulta la guida ufficiale del protocollo. Devi sapere quale passaggio cambierà.
Modificare un’allowance può comportare una condizione di gara ERC-20
Lo standard ERC-20 consiglia all’interfaccia di portare a zero un’allowance non nulla prima di sostituirla con un altro valore non nullo. Se una transazione dello spender viene ordinata tra la vecchia e la nuova approvazione, potrebbe usare più di quanto previsto. Per esempio, passando da 100 a 25, potrebbe usare i vecchi 100 prima che siano registrati i nuovi 25 e poi usare anche questi.
Confermare prima lo zero riduce la possibilità che vecchio e nuovo valore siano entrambi utilizzabili, ma non annulla l’uso del vecchio allowance prima della conferma. I due passaggi possono costare commissioni e il comportamento dei token varia. Segui il flusso sicuro documentato dal wallet o dal token e attendi la conferma.
Se non conosci l’allowance corrente, interroga il contratto del token sulla rete selezionata prima di sostituirla. Se il wallet mostra un valore vuoto o inatteso, verifica di non guardare un’altra rete o un altro indirizzo. Devono corrispondere sia l’indirizzo del titolare sia il contratto del token.
Usa una breve routine per controllare i permessi
- Conferma il dominio ufficiale del progetto e la rete selezionata.
- Verifica gli indirizzi del contratto del token e dello spender, poi confronta il limite con la quantità necessaria.
- Leggi la transazione o il typed data effettivamente mostrato dal wallet. Non firmare richieste che non capisci.
- Controlla sulla rete corretta gli spender che non usi più o di cui non ti fidi; se opportuno azzera l’allowance e verifica il risultato.
- Quando confronti wallet, valuta le reti supportate, la chiarezza delle approvazioni e le istruzioni di aggiornamento e recupero.
Un hardware wallet è un’opzione per custodire la chiave e verificare le firme, non una garanzia che un contratto sia sicuro né un blocco contro l’approvazione di un limite ampio. Controlla tu spender, token, rete e importo. Sapere che le allowance possono sopravvivere separatamente alla connessione del sito aiuta a confrontare le funzioni di sicurezza e i loro limiti reali.
Domande frequenti
Q1Disconnettere il wallet rimuove un’approvazione esistente?
No. La connessione al sito è una sessione; l’allowance ERC-20 è uno stato on-chain nel contratto del token. Controlla separatamente spender, token e rete e revoca se necessario.
Q2Azzerando l’allowance posso recuperare i token già trasferiti?
No. Dopo la conferma, lo zero impedisce usi successivi ma non annulla un trasferimento completato. Controlla a parte altre approvazioni e l’eventuale esposizione della chiave.
Q3Tutti i token crypto e gli NFT usano allowance ERC-20?
No. Questa guida riguarda approve e transferFrom ERC-20. Permessi operatore NFT, asset nativi, altri standard e autorizzazioni specifiche della rete seguono regole diverse.
Fonti e approfondimenti
Segnala un problema
Prepareremo un’e-mail con il link a questo articolo. Mark riceverà la segnalazione solo dopo l’invio
Controllo rapido
Hai finito la guida? Verifica ciò che hai capito con 3 domande
Domanda 01
Che cosa imposta principalmente `approve(spender, amount)` in ERC-20?
Scegli una risposta per vedere la spiegazione
Glossario delle opzioni
The process that requires an option writer to fulfill the contract after an exercise notice is allocated; it can create or remove an underlying position.
Leggi la guida completaBid-ask spreadThe gap between the best displayed bid and ask, which is a practical trading cost and a signal of how uncertain an immediate fill may be.
Leggi la guida completa