Solo a scopo educativo; non costituisce consulenza né raccomandazione di investimento. Gli investimenti possono comportare perdite.
Risposta diretta
Prima di firmare uno swap su DEX, verifica la chain, il contratto di destinazione, la funzione decodificata, gli indirizzi dei token, il limite di input o output, il percorso, il destinatario e ogni scadenza. La percentuale indicata come “slippage” nell’interfaccia non è di per sé un’istruzione on-chain. In genere serve a calcolare un limite come amountOutMin o amountOutMinimum per uno swap exact-input, oppure amountInMax o amountInMaximum per uno exact-output.
La scadenza è una protezione temporale, non una garanzia di prezzo. Se il router la controlla e la transazione viene eseguita dopo, la chiamata dovrebbe subire revert. Prima della scadenza può comunque essere eseguita a qualunque prezzo consentito dal limite d’importo. Una scadenza lontana mantiene più a lungo utilizzabile l’autorizzazione; una troppo breve aumenta la probabilità che scada prima dell’inclusione.
Calldata non è autodescrittiva. Decodificala con l’ABI verificata del contratto esatto sulla chain scelta, comprese eventuali multicall o istruzioni Universal Router annidate. Se il wallet non mostra campi decodificati affidabili, non dedurne il significato soltanto dalla posizione dei byte o da un database di nomi di funzione.
Come funziona
Decodificare la chiamata effettiva
Secondo l’ABI di Solidity, i primi 4 bytes della calldata sono il selettore della funzione e gli argomenti codificati iniziano dal quinto byte. Il selettore può collidere o essere etichettato male, quindi confrontalo con l’ABI del contratto di destinazione verificato. Un proxy, aggregatore o router può racchiudere lo swap in multicall, execute o un’altra funzione; decodifica ogni payload annidato che possa trasferire token o modificare il destinatario finale.
In uno swap exact-input, l’input è fisso e il campo di protezione stabilisce l’output minimo accettabile. In uno exact-output, l’output desiderato è fisso e il campo di protezione limita l’input. Un limite pari a zero o insolitamente ampio può eliminare una protezione di prezzo significativa. I decimali del token contano: associa ogni indirizzo ai decimali e al simbolo corretti prima di confrontare gli interi grezzi.
Controllare percorso, destinatario e value
Conferma che il percorso inizi con il token speso e termini con quello atteso. Esamina token intermedi, commissioni dei pool e comandi che avvolgono, rimuovono l’avvolgimento, raccolgono o trasferiscono saldi. Il destinatario deve essere il wallet previsto o un contratto di cui si comprende il comportamento. Controlla anche il value nativo della transazione; può essere separato dagli importi ERC-20 codificati nella calldata.
Individuare la scadenza
La posizione della scadenza dipende dalla versione del router. Le funzioni dei router in stile Uniswap V2 includono un argomento deadline, così come le strutture originali di Uniswap V3 ISwapRouter. Universal Router espone sia execute(commands, inputs, deadline) sia un overload senza scadenza. Non presumere quindi che ogni swap abbia una scadenza o che si trovi sempre negli stessi parametri annidati.
La scadenza viene normalmente confrontata con il timestamp del blocco usato durante l’esecuzione. Non annulla una transazione in attesa, non garantisce una rapida inclusione e non protegge da un prezzo sfavorevole compreso nel limite. Per annullare, il mittente deve usare il meccanismo di sostituzione della chain e del wallet; la sostituzione non è garantita dopo l’inclusione della transazione originale.
Esempio completo
Una quotazione prevede 10,000 USDC da uno swap exact-input e l’utente sceglie uno slippage dell’1%. Escludendo le commissioni già incluse nella quotazione, il minimo previsto è 9,900 USDC. Poiché USDC usa 6 decimals, l’intero grezzo del limite è 9900000000.
La chiamata decodificata contiene invece amountOutMinimum = 9000000000, ossia 9,000 USDC. Ciò consente fino al 10% in meno rispetto alla quotazione, non l’1%. Anche il destinatario è un indirizzo sconosciuto e la scadenza è distante molte ore. Ognuna di queste difformità basta per rifiutare la richiesta e ricostruirla tramite un’interfaccia affidabile. In seguito, simula l’esatta transazione non firmata su uno stato recente e ricontrolla il payload decodificato prima della firma.
Lista di verifica e rischi
- Confronta la chain selezionata e l’indirizzo del router o proxy con i registri ufficiali di distribuzione del protocollo.
- Decodifica con l’ABI del contratto verificato; espandi chiamate annidate e comandi del router invece di controllare solo la funzione esterna.
- Verifica indirizzi, direzione, decimali, importo fisso, limite protettivo, percorso, livelli di commissione, destinatario e
valuenativo. - Converti la scadenza in un orario assoluto e valuta se la finestra restante sia intenzionale. Considera una scadenza assente come una scelta progettuale da esaminare separatamente.
- Simula la transazione esatta dall’indirizzo firmatario su uno stato recente. Il successo è una prova solo per quello stato, non una garanzia di inclusione o esecuzione finale.
- Esamina separatamente approvazioni o permessi Permit2. Buoni limiti di swap non rendono sicura un’autorizzazione di token illimitata o malevola.
- Limiti stretti possono provocare revert con normali movimenti di prezzo; limiti larghi aumentano i rischi di prezzo di esecuzione e sandwich. Una transazione on-chain in revert può comunque consumare gas.
Idee sbagliate comuni
Mito: si firma la percentuale di slippage visualizzata
Di solito il payload firmato contiene limiti d’importo derivati da tale impostazione. Verifica gli interi effettivi e i decimali del token; un’etichetta corretta non prova che la calldata usi la stessa tolleranza.
Mito: ogni swap usa amountOutMin e deadline
Nomi e posizioni cambiano secondo router e funzione. Gli swap exact-output proteggono il lato input, mentre alcuni punti di ingresso omettono la scadenza o la collocano nella chiamata esterna.
Mito: una scadenza impedisce un prezzo sfavorevole
Limita soltanto il momento dell’esecuzione se il codice chiamato la applica. La protezione del prezzo deriva dal limite d’importo, che consente comunque ogni esecuzione al suo interno.
Mito: basta decodificare la funzione esterna
Aggregatori e router universali possono contenere più chiamate, permessi token, trasferimenti e comandi di pulizia. Il destinatario o l’importo rilevante per la sicurezza può trovarsi in un payload annidato.
Argomenti correlati
- Decodifica della calldata nel wallet
- Lista di slippage e percorso DEX
- Attacco sandwich
- Slippage nel trading di criptovalute
- Simulazione della transazione
Fonti
- Contract ABI Specification - Solidity Documentation (consultato: 2026-08-21)
- IUniswapV2Router01.sol - Uniswap (consultato: 2026-08-21)
- ISwapRouter.sol - Uniswap (consultato: 2026-08-21)
- Universal Router Commands - Uniswap (consultato: 2026-08-21)