skip to Main Content

Le transazioni su Ethereum possono essere un vero calvario. Fees con picchi elevatissimi, ritardi e transazioni fallite sono fenomeni purtroppo noti, frequenti soprattutto tra chi non ha una più che solida comprensione di come funziona il sistema delle Gas Fees su questo network.

In questa guida vedremo come procedere per velocizzare/sbloccare/cancellare/sostituire una transazione in sospeso.

E’ utile avere una buona familiarità con MetaMask, in quanto si tratta di uno strumento che consente di mettere mano a parametri e funzionalità indispensabili in situazioni di questo tipo.

Le tecniche spiegate si applicano anche a tutti i network EVM compatibili, come BNB Smart Chain, Polygon, Cronos e Fantom.
Punti Chiave:
Lo stato di ogni transazione di Ethereum è visibile su Etherscan.
Una transazione in sospeso da molto tempo può considerarsi bloccata.
E’ possibile rimediare in pochi semplici passaggi, avviando una transazione correttiva con un Gas Price superiore.
Lo stesso procedimento può essere usato per annullare o sostituire una transazione.

Etherscan:In base al sistema delle gas fees di Ethereum, il tempo necessario a completare una transazione dipende non solo dalla sua complessità ma soprattutto dal prezzo del gas che abbiamo inserito.

In caso di rete congestionata, di fees troppo basse o di improvvisi aumenti di prezzo del gas, una transazione può richiedere più tempo del previsto. Strumenti come il Gas Tracker di Etherscan ci offrono una stima aggiornata di prezzi raccomandati e relative tempistiche che ci si può aspettare.

Mentre l’attesa è in media di qualche minuto, in genere fino a 30 minuti possiamo ancora stare tranquilli. Oltre la mezzora è il caso di verificare cosa è successo.

Il passaggio fondamentale consiste nell’andare a controllare su un blockchain explorer come Etherscan a che punto è la transazione.

Ogni volta che avviamo una transazione su una blockchain viene generata una stringa di identificazione chiamata Transaction Hash o Transaction ID. In molti wallet ed exchange è sufficiente individuare questa voce e cliccarci sopra per aprire automaticamente la pagina che la riguarda.

Se così non fosse basta copiare manualmente la Transaction ID, visitare Etherscan e inserirla nel motore di ricerca interno.

Apparirà una schermata come quella qui sotto, piena di informazioni interessanti tra le quali figura lo stato della transazione, che può essereSuccess‘, ‘Failed‘, ‘Dropped‘ (abbandonata) o ‘Pending‘ (in sospeso).

Le Gas Fees su Ethereum sono composte dal Gas Limit, che misura in unità di gas la potenza di calcolo necessaria a portare a termine la transazione, e dal Gas Price (Base Fee + Priority Fee/Tip dopo l’aggiornamento EIP-1559), il prezzo per unità di gas.
Un Gas Limit troppo basso genera il fallimento della transazione, in quanto il gas a disposizione finisce prima del completamento delle operazioni che la riguardano.
Un Gas Price troppo basso può provocare non solo un ritardo ma anche l’abbandono della transazione da parte dei miners/validators.

In questo esempio abbiamo inviato 15 BAT (Basic Attention Token) con un gas price molto più basso di quello consigliato all’interno del wallet, apposta per farla bloccare a scopo dimostrativo.

Il portafoglio usato è un Trezor, e nell’applicazione Trezor Suite è prevista la possibilità di modificare i parametri delle gas fees. Al momento il gas price era di circa 80 Gwei e abbiamo inserito 50, livello non raggiunto da mesi.

Si tratta della transazione dell’immagine precedente, che come notiamo riporta un gas price di 50 Gwei. Su Etherscan i tempi di conferma vengono stimati in oltre un’ora ;).

Gas Price:Tecnicamente non esiste una transazione ‘bloccata’, ma decidiamo di considerare così le transazioni in sospeso delle quali non siamo in grado di prevedere l’esito.

Dato che il problema riguarda in sostanza il gas price, la soluzione più semplice consiste nell’alzare questo valore. Un numero sempre crescente di wallet presenta tale funzionalità direttamente all’interno dell’app. E’ sufficiente aprire la finestra della transazione in corso e selezionare la relativa opzione, che varia leggermente tra i vari software: ad esempio in MetaMask è la funzione indicata con ‘Speed Up‘ e in Trezor è la ‘Bump Fee‘.

In realtà una transazione una volta avviata non può essere né velocizzata né cancellata, ma solo rimpiazzata (ammesso che non sia stata ancora confermata) con una nuova operazione con gas price più alto.

In pratica sovrascriviamo la transazione in sospeso con una gemella, che, se questa volta usiamo un gas price alto a sufficienza, viene rapidamente selezionata dai miners/validators e quindi sostituisce quella vecchia. I portafogli si occupano dei processi necessari dietro le quinte.

In caso di wallet che non offrono opzioni di velocizzazione dobbiamo procedere manualmente. Anche se Trezor Suite ha queste funzionalità integrate nella sua interfaccia, qui non ne faremo uso ma illustreremo una soluzione universale applicabile anche da chi utilizza portafogli che non prevedono tali modifiche.

Nonce:Entra in gioco un utilissimo parametro tecnico delle transazioni di Ethereum, sul quale possiamo agire per risolvere la situazione. Ogni transazione presenta un valore chiamato ‘nonce’ (che sta per ‘number only used once’, numero usato una sola volta).

Si tratta di una cifra che identifica inequivocabilmente ogni transazione eseguita, secondo una numerazione progressiva per ciascun indirizzo Ethereum. Iniziando da zero con la prima transazione mai fatta da un indirizzo, la seconda operazione avrà nonce 1, la terza 2 e così via.

Quando inviamo più transazioni da uno stesso indirizzo, queste vengono processate in ordine in base al nonce, e non è possibile passare alla transazione successiva finché quella precedente non viene confermata. Anche per questa ragione una transazione bloccata va sistemata, perché in caso contrario il nostro indirizzo è di fatto inutilizzabile.

Possiamo sovrascrivere una transazione in sospeso mandandone una nuova con stesso nonce e gas price più alto.

Passaggi:Per ‘velocizzare’ manualmente una transazione bloccata, e di fatto rimpiazzarla con una nuova, procediamo così:

  • Individuiamo il numero di nonce, o all’interno del wallet (tra i dati della transazione), o su Etherscan (viene mostrato in basso, dopo gas price e gas limit). Come notiamo nelle immagini precedenti, per la transazione del nostro esempio questo valore è 6.
  • Stabiliamo un gas price alto a sufficienza da garantirci di trarci velocemente di impaccio, altrimenti potremmo finire con due transazioni bloccate. Su EthGasStation o consultando il Gas Estimator di Blocknative leggiamo il costo di una transazione veloce e usiamo quello, anche se spendiamo un po’ di più. In ogni caso non avviamo una nuova transazione con un gas price che non sia almeno del 10% superiore a quello precedente o rischiamo di essere ignorati dai miners/validators.
  • Avviamo una transazione identica a quella che era rimasta bloccata, con stesso numero di nonce, ma inserendo il nuovo gas price.

Questo processo sostituirà la transazione bloccata e le monete appariranno a destinazione nell’arco di qualche minuto.

EthGasStation non è più attivo, ma lo stesso percorso si può seguire sui già citati Gas Tracker di Etherscan e Gas Estimator di Blocknative.

MetaMask:La domanda a questo punto è: come si fa a inserire il numero di nonce? Non tutti i portafogli hanno questa funzionalità e danno accesso a operazioni di questo tipo.

La maggior parte dei wallet, anche per semplificare le interfacce utilizzate dagli utenti, permettono di impostare solo token e indirizzi di destinazione. A volte i valori delle gas fees. Ma non c’è traccia del nonce.

E’ qui che la conoscenza di strumenti come MetaMask diventa fondamentale. MetaMask è uno dei migliori wallet per usare Ethereum e accedere alle DApp del Web 3.0. E tra le altre cose permette di definire manualmente il nonce.

Se non lo abbiamo già fatto possiamo installarlo e imparare come trarne il massimo leggendo questa guida di approfondimento in tre parti.

Per procedere è necessario importare il nostro portafoglio, con tutti i relativi indirizzi, chiavi e transazioni, al suo interno. Dando per scontato che abbiamo già scaricato e attivato l’estensione browser di MetaMask, questo può essere fatto in quattro modi:

  • Se usiamo hardware wallet Ledger o Trezor, essendo questi supportati da MetaMask, è sufficiente un semplice abbinamento, che è molto meno invasivo di una vera e propria importazione (in quanto le chiavi private non vengono esposte) e ci mette in condizione di visualizzare e gestire i contenuti dei nostri wallet usando MetaMask unicamente come interfaccia. Basta selezionare ‘Connetti Portafoglio Hardware’ nel menu principale. La procedura richiede pochi minuti e troviamo istruzioni su come fare in questa guida.
  • Se usiamo un wallet che consente di esportare la chiave privata del nostro account, MetaMask è in grado di importarla e ricrearlo al suo interno. Dal punto di vista pratico si tratta di un’operazione tecnicamente semplicissima. Nel nostro wallet selezioniamo l’account Ethereum e facciamoci mostrare la chiave privata. Una volta copiata, in MetaMask clicchiamo nel menu principale su ‘Importa Account’ e incolliamola lì. Vedremo comparire il nostro saldo Ethereum e i nostri token.

  • Nel caso di wallet che non hanno l’opzione per esportare la chiave privata l’ultima possibilità che rimane è quella di usare la seed phrase. In MetaMask viene chiamata ‘Secret Recovery Phrase’, ed è composta da 12 parole. Se anche la nostra seed è di 12 parole, possiamo importarla facilmente, selezionando ‘Import Secret Recovery Phrase’ anziché ‘Create a Wallet’ alla sua prima apertura.
Per chi già usa MetaMask: se importiamo una nuova seed nell’istallazione corrente perderemo la possibilità di accedere ai relativi fondi. In questi casi si raccomanda di installare una nuova copia dell’estensione in un altro browser (o un altro pc), e procedere lì con l’importazione.

  • Se abbiamo una seed con un numero diverso di parole o se preferiamo non importarla in MetaMask allora è possibile ricavare la chiave privata associata alla nostra seed usando il convertitore di Ian Coleman, procedura della quale in questo articolo troviamo una dimostrazione dettagliata.
Esporre le private keys o la seed phrase del nostro wallet digitandole online o in un software può comportare la perdita di tutti i nostri asset. I procedimenti che le coinvolgono vanno gestiti con la massima cautela.

In ogni caso, una volta stabilito che è ciò che vogliamo fare, e seguite le procedure di sicurezza necessarie, importare e ricreare in MetaMask il nostro wallet è un’operazione che richiede un minuto.

I wallet non salvano nessun dato relativo alla blockchain. Ogni informazione che mostrano è strettamente correlata allo stato corrente della blockchain, nel senso che un wallet riporta quello che vede al momento sulla rete. E’ per questo che anche se passiamo da un portafoglio all’altro, e interagiamo con le nostre monete usando diversi strumenti, transazioni e saldi risultano sempre automaticamente aggiornati.

Appena completata l’importazione rimane un ultimo passo: siccome la possibilità di inserire il nonce è una funzione avanzata, di base non visibile in MetaMask, dobbiamo attivarla nelle impostazioni selezionando ‘Personalizza il Numero della Transazione’.

Siamo pronti per procedere con la creazione di una nuova transazione da dentro MetaMask. Controlliamo di essere nell’account giusto (cioè che l’indirizzo da cui inviamo sia effettivamente quello che abbiamo importato), inseriamo l’indirizzo di ricezione e i token, e regoliamo le gas fees e il nonce:

  • Per il gas limit copiamo il valore suggeritoci dal wallet usato in precedenza (in questo caso 51828).
  • Per quanto riguarda il gas price usiamo un valore che ci garantisca di risolvere agilmente la questione. In questo caso, visto che il minimo raccomandato da EthGasStation è 77 Gwei (priority fee 2 Gwei e base fee 80 Gwei nel nuovo sistema di calcolo EIP-1559), inserendo 80 Gwei siamo ragionevolmente sicuri che in meno di 30 minuti la transazione andrà a buon fine.
  • Infine inseriamo il numero di nonce della transazione bloccata. Questo è l’elemento fondamentale che ci garantisce di sovrascrivere la transazione precedente.

Avviamo la transazione e in pochi minuti avremo risolto il problema.

Se ora apriamo la transazione in Etherscan notiamo che è stata processata. Problema risolto in 30 secondi: in questo caso quindi potevamo stare anche un po’ più bassi, ma non è una regola. Semplicemente in quel momento il gas price è casualmente calato di un poco.

Se invece fosse aumentato l’attesa sarebbe stata superiore, ma, considerata la valutazione fatta sul prezzo del gas, la transazione sarebbe comunque andata a buon fine. In ogni caso, nella sfortunata circostanza di un ulteriore blocco, la soluzione, ora che sappiamo come procedere, è semplice: nuova transazione con stesso nonce e gas price ancora più alto.

Cancellare:Nel caso in cui invece di riconfermare la transazione abbiamo cambiato idea e vogliamo cancellarla, è possibile farlo seguendo la stessa identica procedura ma inviando a noi stessi (ovvero all’indirizzo dell’account della transazione bloccata) una transazione di zero ETH con quel numero di nonce.

Una volta che ci è chiaro il meccanismo, soluzioni come questa permettono di ottenere il risultato desiderato anche se la cancellazione non è prevista a livello di protocollo. Ovviamente, anche se inviamo zero Ether, dovremo comunque pagare le gas fees necessarie a completare la transazione.

Sostituire:Anche per sostituire una transazione i passaggi sono identici. Cambia solo la natura della nuova transazione: anziché essere identica ma con un gas price superiore, questa riguarderà anche token, quantità e contratti diversi.

Se avviamo una transazione con un contenuto completamente nuovo, ma con stesso numero di nonce di quella ancora in sospeso, sarà quella con gas price superiore a venir processata.

Così facendo saremo in grado di sostituire/annullare la vecchia transazione.

Ricordiamo che tutte queste possibilità sono praticabili solo finché la transazione in sospeso non è stata processata. Una volta che una transazione è confermata non c’è modo di fare nessuna delle operazioni descritte.

Conclusioni:Come notiamo c’è tantissimo da sapere e ci vuole poco a commettere qualche imprecisione. Per fortuna però le possibilità di rimediare sono molte e in questo articolo abbiamo scoperto i passaggi essenziali di un percorso che permette di risolvere agilmente qualsiasi circostanza analoga.

Risorse correlate:

Terminologia Delle Criptovalute – Glossario Veloce
10 Errori da Evitare con le Criptovalute – Guida Gratuita
Cosa Sono e Come Funzionano le Gas Fees di Ethereum – Pre e Post EIP-1559
Come Recuperare Criptovalute Perse Inviate a Blockchain, Network o Indirizzi Sbagliati
Cos’è Metamask Wallet, come Installarlo e come Usarlo su Desktop e Mobile – Guida Metamask Completa – Parte 1


Share

CdIta

Inserisci la Tua eMail per Ricevere Contenuti Esclusivi Gratuiti.

var sc_project=12569920;
var sc_invisible=1;
var sc_security="381169ba";

Web Analytics Made Easy - StatCounter
Back To Top