venerdì 26 marzo 2021

Come Accelerare o Annullare Una Transazione: Gwei e Nonce (Ethereum)

Metamask è il principale wallet per gestire token di Ethereum, Bnb (Binance Smart Chain), Matic (Polygon), xDai e ZKSwapAvalancheetc Qui abbiamo fatto una guida: Come Funziona Metamask: Aggiungere Token, Regolare Gas, Cambiare Network
In questo articolo ci concentreremo però sulle transazioni: modificare il gas, velocizzando o annullando una transazione. Il motivo per cui una transazione potrebbe fallire sul network Ethereum è il gas. Una transazione può essere "rejected" o fallire ("failed") quando è troppo lenta. Prima di essere aggiunta nel blocco, rimane in "pending" e poi appunto può essere rifiutata. Perchè succede questo? Perchè i validatori su Ethereum danno priorità a chi spende più gas. 
Bisogna fare attenzione perchè, se è vero che le nostre cripto sono al sicuro, lo stesso non si può dire del gas. Parte del gas speso per avviare la transazione non verrà rimborsato (la transazione rimarrà in coda, in quanto si viene sempre anticipati da altri che avviano transazioni più veloci pagando più gas, sino a quando fallisce). 


COME FUNZIONA IL GAS: GWEI 
Ma come funziona il gas? Le gas fee servono per incentivare i validatori a convalidare le transazioni (invio di token) o l’interazione con uno smart contract. In questi casi, i costi non sono fissi ma dinamici e variabili in funzione dell'utilizzo della blockchain in quel momento (si parla di network congestionato, se ci sono tante transazioni in coda).
Le fee che diamo ai validatori vengono pagate con la coin della rete che stiamo utilizzando (ETH per Ethereum, SOL per Solana, BNB per la BNB Chain, AVAX per Avalanche, BTC per Bitcoin, etc), l’unità di misura con cui si calcola quanto dovremmo pagare viene chiamata gas. 
Ogni transazione su Ethereum ha un costo base di 21000 (gas), più tutti i costi extra per interagire con un contratto. Tuttavia, questo è solo uno dei due valori impostabili e si definisce "gas limit". L’altro valore variabile è il prezzo, cioè quanto siamo disposti a pagare per una singola unità di gas. Il valore del gas si esprime in gwei; ogni gwei equivale a un miliardesimo di una di queste coin.  Quindi, su rete Ethereum, 1 gwei vale 0.000000001 ETH.

Quindi possiamo definire:
-Gas limit: il quantitativo massimo di gas che vorremmo utilizzare
-Gas price: il prezzo che siamo disposti a pagare per avere la priorità sul prossimo blocco della chain

Ricercando il costo del gas (in quel momento) sulla blockchain che stiamo utilizzando, possiamo sapere il costo medio. 
Solitamente leggerò tre costi "diversi", con tre ordini di priorità: transazione veloce (ad esempio 25 gwei, così da aumentare le possibilità che l'operazione sia processata nei prossimi blocchi), media (21 gwei) oppure lenta (19 gwei). Il "gas limit" è il quantitativo massimo che sono disposto a spendere (non è detto che lo spenderò tutto), mentre il "gas price" è l’effettiva spesa. Se le commissioni medie su rete Ethereum attualmente fossero di 30 gwei, vorrebbe dire che io dovrei pagare:

21000 (questo è fisso)*0.000000030 (sono i 30 gwei) = 0,00063 ETH

Prima di scambiare dei token in un AMM, lo smart contract necessiterà di una approvazione per poter prelevare fondi dal nostro wallet.  Cliccando su "avanzate" di Metamask, posso modificare:

-Max Base Fee: si tratta del quantitativo massimo che saremmo disposti a pagare (calcolato facendo base fee medio + priority fee) Questo è il reale valore considerato dalla Ethereum blockchain come minimo quantitativo di gas necessario per eseguire una transazione nel prossimo blocco. Se questo dato sarà più basso rispetto a quello medio visto sul gas tracker, la transazione non verrà processata fino a che il prezzo medio di quest’ultimo non scenderà a quella soglia)

-Priority Fee: questa è ciò che stiamo pagando ai validatori.

-Gas Limit (in basso): questo valore non è da modificare perché si riferisce alla quantità di lavoro necessaria per completare un operazione ed è stimato direttamente dal contratto o dalla tx che stai effettuando.

Dovresti valutare prima i costi medi della rete e poi impostare una priority fee alta ma inferiore alla max base fee, così da avere margine affinchè l'operazione venga sicuramente finalizzata.
Chi vuole avviare transazioni in modo veloce dovrà pagare più gas. Il costo del gas aumenta all'aumentare dell'utilizzo della rete e della domanda per Ethereum. Se ci sono tante transazioni in coda, il prezzo sale. L'alto costo del gas serve anche a limitare gli attacchi ddos e spam alla rete (proprio perchè non è conveniente pagare così tanto gas). E' buona regola quindi non settare il gas troppo basso, per controllare ciò: EthGasStation oppure GasNow.
Ci sono delle variazioni tra i due siti di sopra come si può vedere, se non volete spendere troppo gas, fate una media tra le due consigliate standard (se sono 70 e 60, scegliete 65 gwei) oppure scegliete direttamente la standard più alta. Per sapere i giorni e le fasce orarie più economiche: IntoTheBlock (Gas Costs Heatmaps).


VELOCIZZARE/ANNULLARE UNA TRANSAZIONE
E' possibile anche velocizzare la transazione o direttamente annullarla. Per aumentare la velocità, se state usando Metamask, basta cliccare su "Accelera" ("Speed Up"). Ciò ti consentirà di inviare nuovamente la stessa transazione, ma a un costo più elevato che dovrebbe essere elaborato più velocemente. Per annullare la transazione, si può selezionare semplicemente "Annulla" ("Cancel"). Ovviamente sarà possibile annullare una transazione, solo se questa è ancora in sospeso (cioè se non è stata minata nel blocco). Ma conviene annullare una transazione o sovrascrivere la vecchia per una nuova? Sempre meglio annullarla, auto-inviarla a sè stessi.  


NONCE
Se hai provato i passaggi precedenti ma non sei ancora in grado di annullare le tue transazioni: prova ad abilitare il "Custom Nonce" (Numero Di Transazione) nelle impostazioni avanzate del tuo portafoglio Metamask quindi invia una nuova transazione (sempre nelle impostazioni avanzate è possibile settare su "on" i controlli sul gas). La nuova transazione puoi inviarla a te stesso, ovvero al tuo indirizzo Metamask, con importo 0. 
Il "Custom Nonce" va impostato con lo stesso valore dell'ultima transazione in sospeso (quindi lo stesso valore di quella da annullare). Se l'ultima aveva Nonce uguale a 3, dovrò impostare 3, in modo tale che la vecchia transazione verrà sovrascritta da una più veloce (infatti dovrò impostare un gas più veloce nella nuova transazione che invierò a me stesso). Ma cos'è il Nonce? Un semplice numero progressivo che aumenta all'aumentare delle nostre transazioni (la Nonce prioritaria è sempre quella con numero più basso). Il Nonce può essere modificato anche su MyEtherWallet ad esempio (ricorda che su Mew, il gas è settato in Wei quindi dovrò moltiplicare il Gwei che leggo sui siti di gas Ethereum per 9). Il funzionamento è lo stesso: auto-inviare una nuova transazione da 0 Ether a sè stessi con identico Nonce e gas maggiore della precedente.

Ricordo che in estate, le fee di ETH dovrebbero essere abbassate: Ethereum, L'Abbassamento Delle Fee e La Deflazione: Layer2, Berlin, London

38 commenti:

  1. si puo' fare anche per una transazione già avviata?

    RispondiElimina
  2. Ciao e grazie per la spiegazione. Mi piacerebb esporti il mio caso odierno. Ho tentato di mandare dei token da metamask a binance utilizzando l'app ethereum che nel frattempo si era aggioranta disabilitando dunque l'accettazione agli smart contract. Quando ho visto che mi dava transazione in sospeso e nn andava avanti ho annullato ed ora ho l'annullamento in corso bloccato. Nel frattempo ho abilitato gli smart contracts nel ledger. Le mie coin nel frattempo sono decurtate dell'importo che avevo provato ad inviare. Cosa devo fare ora esattamente? Ho controllato il valore del nonce di quella dell'annullamento in sospeso e settato lo stesso valore. Ma come posso ultimare l'annullamento? Grazie in anticipo se riuscirai a rispondere. Un saluto

    RispondiElimina
    Risposte
    1. Ciao, se è stata già inserita nel blocco non si può annullare quindi ti conviene inserire l'indirizzo e controllare su Etherscan per vedere se ha già ricevuto alcune conferme. In generale se stai utilizzando Metamask puoi accelerare l'annullamento con l'apposito tasto. L'utilizzo degli smart contract verso gli exchange non è necessario, questi servono solo inviando token on chain (ad esempio da Metamask a Metamask o Ether Wallet e simili).

      Elimina
    2. Se invece sei riuscito ad annullare, puoi solo velocizzare l'annullamento con l'apposito tasto su Metamask. In ogni caso la transazione se rimane in sospeso fallirà.

      Elimina
  3. ciao, bell articolo. il mio problema che ho fatto una transazione tramite pancakeswap, non avendo fondi sul metamask , la transazione non é partita. ora non riesco piu ad annullare, ogni volto mi dice fondi insufficienti anche se li ho... qualche idea?

    RispondiElimina
    Risposte
    1. Ciao, da dove l'hai fatta? Consiglio di utilizzare Metamask sempre su desktop e no da mobile che dà spesso problemi per queste cose

      Elimina
  4. Ciao, complimenti, consigli sempre utili. Me ne servirebbe uno. Fatto acquisto di un token su uniswap usando ethereum, per la prima volta, e troppo tardi mi sono accorto che servirebbero circa 60 $ di gas fee (per 50$ di token acquistato), assurdo. Le ho impostate prima a 8$, pending da 1 giorno, ora a 12$, la txn secondo te verrà finalizzata o rimarrà vita natural durante in pending? Grazie

    RispondiElimina
    Risposte
    1. Ciao, non puoi abbassare il gas più di tanto. La tua transazione non verrà inserita nel successivo blocco perchè i miners danno priorità alle transazioni più veloci (ovvero a chi paga di più). Insomma la tua transazione fallirà e ti verrà rimborsato parte del gas (o tutto).

      Elimina
  5. Ciao, puoi aiutarmi? Ho avviato una transazione da immutable x a metamask ma nn ho fondi su metà e in ogni caso il gas supera l'importo che ho provato a prelevare e nn so come annlare

    RispondiElimina
  6. Ciao, per Immutable X quale wallet hai usato?

    RispondiElimina
  7. Ciao, riusciresti ad aiutarmi? Oggi ho scambiato 0.18 eth in weth. Mentre la transazione era in svolgimento però per sbaglio ne ho inoltrata un'altra che ora è ancora in corso. Non so perchè quando provo ad annullarla mi dice fondi insufficienti e mi chiedevo se la transazione si annullasse autonomamente dopo un certo periodo di tempo.
    Grazie mille

    RispondiElimina
    Risposte
    1. Si, quando non c'è gas sufficiente, la transazione fallirà

      Elimina
  8. Ciao ragazzi ho letto i vostri post e mi sono rivisto con lo stesso problema. Ieri ho cercato di fare una transazione con metamask e non essendo pratico ho versato 95 dollari per dei token e mi sono accorto di non aver messo il gas. La transazione rimane in coda. Vorrei sapere se mi verranno restituiti questi soldi? Sarei veramente grato a chi mi potesse dare un informazione che fino ad ora nessuno mi ha aiutato. Grazie in anticipo

    RispondiElimina
  9. Ciao, la transazione fallirà se il gas risulta insufficiente. Tutto il gas (o gran parte di esso) verrà restituito se la transazione non verrà aggiunta in un blocco per le opportune conferme

    RispondiElimina
  10. Ciao a tutti io ho due transizioni inviate per errore, da metamask. Sono o tutte e due bloccate su Ethercan mancano milioni di conferme. ho provato a recuperare con il nonce ma mi arriva la notifica di "transazione invalida" Sono tanti soldi e non vorrei perderli qualcuno ha un metodo per risolvere o devo dimenticarmi dei miei soldi. Ovviamennte chi me li fa recuperare avrà degna ricompensa. AIUTOOOOOO

    RispondiElimina
    Risposte
    1. Ciao, hai provato ad annullarla? In ogni caso, non perderai mai i soldi perchè anche se la transazione fallisse, ti tornerebbe indietro tutto nel wallet (a parte probabilmente un po' di gas Eth).

      Elimina
  11. ciao e grazie per la risposta, la transazione è ancora li pending da 10 giorni e mancano milioni di miners, ma come faccio ad annullare? con il nonce Metamask non sucede nulla, esistono altre tecniche? Grazie mille per tutto! Sei il top!

    RispondiElimina
    Risposte
    1. Controlla su Etherscan, inserendo il tuo indirizzo e schiacciando sulla transazione (all'estrema sinistra sta un tasto per i maggiori dettagli) vedi a che punto sta. Strano perchè non rimangono in pending per tutto questo tempo. L'unica soluzione è annullarla (se te la fa annullare con l'apposito tasto) o velocizzarla.

      Elimina
  12. Ciao e grazie per l'aiuto, se guardo la transazione su Etherscan la vedo sempre li che aspetta i miners, se vado sull'elenco e clicco all'estrema sx mi duce success.
    Magri sono io che ci cqapisco poco, se vuoi ti posso girare i link etherscan privatamente. ciao

    RispondiElimina
    Risposte
    1. Controlla nel riquadro "attività", se ti fa velocizzare la transazione. In alternativa invia i link di Etherscan a darkdave666@hotmail.com

      Elimina
  13. Ciao e complimenti per l'articolo! Mi servirebbe il vostro aiuto... volevo mintare un progetto, ma mi stava dando problemi il ledger su metamask, quindi ho ritentato. Adesso mi ritrovo con tre transazioni in coda per il mint, ma se annullo pago le fee circa 100 euro a transazione.. cosa devo fare? Ho disattivato il blind signing su ledger ma non so se cambia qualcosa.. Ho visto che su impostazioni avanzate di Metamask, facendo il reset si cancellano anche le transazioni, ma non so se queste (essendo una in corso e le altre due in coda) si cancellerebbero. Grazie in anticipo

    RispondiElimina
  14. Ciao, complimenti per la competenza. Ho bisogno del vostro aiuto: ho inviato Eth da Binance a Metamask sulla rete Ethereum. Ora però il mio patrimonio segna zero e cliccandoci sopra dice che potrebbe non essere aggiornato, in attività dice che l'operazione ha avuto successo ma io non riesco ad utilizzare i miei Eth perché non sono contabilizzati. Se necessario posso inviare in pvt i link Etherscan o screenshot di ció che appare su Metamask. Non vorrei aver perso i miei Eth e non sono esperto come te. Ti sarei molto grato se mi potessi aiutare. Grazie ancora

    RispondiElimina
  15. Ciao, credo tu debba solo aspettare. Credo che ora siano utilizzabili

    RispondiElimina
  16. Ciao, ho accelerato la transazione su Meta per partecipare ad un Jobe.

    Oggi mi sono ritrovato con una approvazione "in corso" ma tutto il Gas Fee terminato.

    Tramite DeBank voglio rimuovere l'approvazione / cancellare quella in corso, secondo te ho possibilità di recuperare il GasFee utilizzato inutilmente ?

    In privato posso anche mandarti i dettagli della transizione che mi dice il value del gas fee speso.

    Spero di essere stato chiaro, un saluto ! :)

    RispondiElimina
    Risposte
    1. Ciao, no, purtroppo non puoi recuperare il gas speso in quanto è stato ormai "preso" da chi convalida le transazioni aggiungendole ai blocchi

      Elimina
    2. Ciao, ho tentato di effettuare una procedura di annullamento di tutti i processi in corso sul mio Meta, mi ha ripreso ogni Matic Presente nel mio portafoglio -

      Sono incastrato: appena faccio partire l'annullamento allo staking in corso passa 1 min si azzera il gas e torno punto a capo.

      Riesci a suggerirmi come fare ?

      Se togliessi l'approvazione su Debank a questo smart contract riuscirei a fermare questo loop ?...

      Grazie in anticipo per il supporto

      Elimina
    3. Ciao, ho trovato la funzionalità "RESET ACCOUNT".

      Dovrebbe eliminare ogni transazione pending e non bruciarmi tutti i matic che metto a bordo del mio meta.

      Posso chiederti se sai se questa funzionalità elimina anche gli smart contract ? Non vorrei perdere la possibilità di ritirare le mie Coin in staking.

      Grazie tante per la disponibilità ����

      Elimina
    4. Ciao, intanto di che staking stai parlando? Staking on chain? Farming? E poi su che blockchain? Se stai utilizzando la blockchain di Polygon, di gas si consuma pochissimo (centesimi). Per annullare le transazioni hai il riquadro "attività" di Metamask che permette di velocizzare o annullare le transazioni. Debank e siti simili servono ad eliminare l'autorizzazione ad interagire con il tuo wallet a tutti i siti a cui lo hai data.
      Il reset di un wallet, se le transazioni sono in pending non è la soluzione perchè rimarranno in pending sulla blockchain (se fai il reset del wallet, ricorda di salvare seed e private key di tutti gli account, altrimenti non potrai più ripristinarlo!).

      Unico consiglio che posso darti è di velocizzare la transazione e di riprovare anche in più fasi della giornata e a distanza anche di giorni perchè se stai utilizzando la blockchain di Polygon capita spesso che si saturi (un po' come Solana).

      Elimina
  17. Ciao una curiosità! Cosa succede se ho una transazione in sospeso che non posso eliminare e non ho soldi nel wallet? Mi viene addebitato qualcosa oppure non appena aggiungo i forni questi vengono tolti per pagare le gas? Vorrei inviarvi un immagine perché a parole non so ben descrivere la situazione ahahaha

    RispondiElimina
    Risposte
    1. Ciao la transazione rimarrà in sospeso sino a quando fallisce. E' anche possibile velocizzare l'annullamento ma bisogna aggiungere altri soldi per pagare le fee. In alternativa la transazione può essere sovrascritta utilizzando lo stesso "nonce" e più gas. Chiaramente il gas speso (anche se la transazione non è stata ancora aggiunta al successivo blocco), non verrà rimborsato

      Elimina
  18. Buongiorno, non so dove andare a sbattere la testa. erroneamente ho fatto una transazione con il mio metamask in un sito scam e mi è rimasta una transazione "in corso" poichè il credito non era sufficiente a poter proseguire. Ho provato a fare "annulla" come suggerivi, mi si apre una nuova schermata con le varie opzioni gas limite e le gas price, ma non riesco proprio a cancellarla. Che cosa posso fare? Ti ringrazio anticipatamente.

    RispondiElimina
    Risposte
    1. Aggiungo che è nella rete BSC. Ho provato a fare nella tua ultima risposta e modificando il gas non mi permette di salvare. Quindi ti chiedo cortesemente la procedura migliore per poter cancellare totalmente la transazione. Grazie ancora per la tua pazienza e il tuo aiuto!

      Elimina
    2. Ciao, per annullare subito la transazione comunque devi velocizzarla e pagare più gas. In alternativa, modifica il nonce (come riportato nell'articolo) ed esegui un'altra transazione. Per rimuovere poi l'autorizzazione concessa al sito scam, puoi utilizzare Rabby che è un'estensione di Debank (che ora non permette più di rimuovere le approvazioni)

      Elimina
    3. Riguardo il nonce, devi eseguire una nuova transazione con lo stesso nonce di quella da annullare

      Elimina
    4. Perfetto grazie, sostituendo il nonce sono riuscito a bloccare e "eliminare" la transazione. Come faccio a capire adesso se ancora l'autorizzazione è "pending"? Su metamask non compare nulla. Non vorrei che una volta integrato il wallet mi venga scalata la quota. Grazie ancora per il tuo supporto.

      Elimina
    5. No, la transazione è stata ormai sovrascritta perchè hai utilizzato lo stesso "nonce". Per rimuovere l'autorizzazione dal sito scam, segui quanto scritto sopra.

      Elimina