Ethereum: Come cancellare una transazione in attesa

Hai una transazione in peding da diverse ore? Non riesci a fare altre transazioni? Hai commesso un errore e vuoi annullare la transazione? Questa è la guida che fa per te.

Marco Fucito
4 min readDec 6, 2017

Si può cancellare una transazione in pending?

Si, non è un comportamento ufficialmente previsto, ma è possibile farlo.
L’unico vincolo è che la transazione sia ancora in attesa di essere minata ed aggiunta alla blockchain.

Eliminando la transazione pendente con gas troppo basso, sbloccheremo tutte le transazioni successive effettuate col corretto gas price, e potremo ripetere la transazione eliminata col corretto gas price.

Come eliminare una transazione in pending:

Quando viene richiesta una transazione, viene inserita nella pool delle transazioni in attesa.
Le transazioni con Gas Price maggiore saranno le prime ad essere minate.
C’è dunque chiaramente un problema di starvation e le transazioni con Gas Price minore rischiano di non essere mai minate.

Le transazioni vengono eseguire in ordine strettamente cronologico grazie al nounce, un numero progressivo presente in ogni transazione.

Ecco dunque il trucco per eliminare una transazione:
Basterà eseguire una nuova transazione, con lo stesso nounce di quella che vogliamo eliminare, ma con gas notevolmente maggiore in modo che verrà minata prima.
Quando verrà minata la transazione con gas price inferiore, avrà un nouce inferiore e verrà quindi scartata.

Guida passo passo:

  1. andare su https://www.myetherwallet.com/#offline-transaction
    Ci troviamo dunque nella sezione di “Send Offline” del tool.
    Dobbiamo quindi specificare a mano tutti i campi compreso l’indirizzo mittente. Questo ci consentirà di settare manualmente il nounce ad applicare il “trucco
  2. in From Address: inserire il proprio indirizzo e cliccare su Generate Information.
  3. in To Address: inserire il vostro indirizzo.
    Perchè? Semplice per eliminare una transazione abbiamo detto che dobbiamo generarne una nuova, generiamo quindi la più economica e sicura: mandiamo a noi stessi 0 eth.
  4. in Value / Amount to Send: inserire 0
  5. in Gas Limit: lasciare il valore di default
  6. in Gas Price: inserire un valore uguale o superiore al “ Gas Price Std (Gwei)” indicato su https://ethgasstation.info/ moltiplicato per 9.
    Il valore indicato sul sito è in Gwei, MEW lo vuole in WEI.
    Per essere sicuri di non sbagliare potete usare il seguente tool per la conversione: https://etherconverter.online/
    Ad esempio attualmente il gas price consigliato è di: 45Gwei
    Su MEW dovrò dunque inserire: 45000000000 Wei
  7. In Nounce inserire il nounce della transazione in pending che volete eliminare. Dovreste ad ogni modo trovarci già il valore corretto dopo che avete cliccato su generate information.
  8. in Data: lasciare il campo vuoto
  9. Sbloccare il vostro wallet, attenzione NON fatelo con Metamask, non funzionerà, controllate per bene che siete sul MEW originale e non su un sito si phishing ed inserite la vostra chiave privata e premete unlock.
  10. Cliccare su Generate Transaction
  11. Cliccare infine su send transaction e confermate

Bene avete ora generato una nuova transazione che annullerà la precedente (quello con lo stesso nounce), se non è già stata minata.

Quando può essere utile cancellare una transazione in attesa?

  • Transazione in pending da troppo tempo
  • Errore umano: transazione inviata per errore o con settaggi sbagliati (importo, gas limit, gas price, informazioni addizionali)

Perchè una transazione può restare in pending per giorni? Perchè dopo la prima transazione rimasta in attesa, non ne riesco a fare più nessun’altra?

Trovi tutte le info nel seguente articolo dedicato: https://medium.com/@marco.fucito/ethereum-transazioni-che-restano-in-attesa-per-lungo-tempo-2c26c18adf43

Se l’articolo ti è stato utile e ti va, puoi donarmi un caffè al seguente indirizzo ETH:

0x93f7830377f9aaf1e02a46DCEFC2388450E92f23

--

--