skip to Main Content

Questo articolo è il primo di una serie di otto guide dedicate al recupero di criptovalute perse. Nel post introduttivo, ‘Come Recuperare Criptovalute Perse Inviate a Blockchain, Network o Indirizzi Sbagliati‘, abbiamo discusso le cause, le nozioni di base, gli errori che possono portare alla perdita delle nostre monete e le operazioni preliminari per ritrovarle.

E’ una lettura raccomandata in abbinamento alle informazioni che seguono, in quanto contiene indicazioni utili in generale e vengono spiegati processi e scenari che qui per brevità saranno dati per scontati. In questo articolo (e in ciascuna delle otto guide) ci concentreremo solo sulla situazione specifica e le relative soluzioni.

Trattandosi di Ethereum, un altro tassello preliminare è la comprensione di come funzionano le sue gas fees. Se necessario possiamo documentarci leggendo questo articolo di approfondimento.

Infine è utile avere una buona familiarità con MetaMask, in quanto si tratta di uno strumento spesso indispensabile che consente di mettere mano a parametri e funzionalità fondamentali per il recupero delle monete.

Punti Chiave:
Gli ERC20 token che non arrivano a destinazione a dispetto di procedure di invio valide possono essere recuperati.
La transazione è probabilmente in sospeso o bloccata. Si può rimediare avviando una transazione correttiva.
Se la transazione è andata a buon fine allora bisogna aggiungere il token nel wallet manualmente, una procedura che richiede pochi semplici passaggi.
Nel caso in cui il wallet che usiamo non supporti quel token è necessario interagire con un portafoglio esterno che sia in grado di riconoscerlo, ma questo può comportare l’esportazione delle nostre chiavi private o seed phrase.
Tutti gli ERC20 token esistono sulla blockchain di Ethereum e ne condividono l’indirizzo. Vanno inviati allo stesso indirizzo/account nel quale conserviamo ETH. I wallet si occupano di riconoscerli e separare automaticamente i saldi dei vari asset in nostro possesso. Prima di procedere con l’invio, è buona pratica verificare sul sito ufficiale del wallet che usiamo quali sono i token ERC20 che supporta.

SCENARIO: Abbiamo inviato dei token ERC20 a un nostro indirizzo ma non li abbiamo ricevuti.

Soluzione:Se abbiamo inviato degli ERC20 token al nostro indirizzo Ethereum ma questi non compaiono nel portafoglio possono esserci le seguenti quattro motivazioni:

  • La transazione è in sospeso.
  • La transazione è bloccata.
  • Il token è supportato ma va aggiunto manualmente.
  • Il token non è supportato dal wallet.

Qui sotto troviamo per ognuna le istruzioni che ci permettono di risolvere il problema. Nel caso in cui invece abbiamo sbagliato indirizzo di invio riferiamoci allo Scenario 3 dell’articolo introduttivo citato prima.

Transazione in Sospeso:La transazione potrebbe essere ancora in sospeso. 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. Su siti come EthGasStation troviamo 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.

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, il prezzo per unità di gas.

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 sopra, piena di informazioni interessanti tra le quali figura lo stato della transazione, che può essereSuccess‘, ‘Failed‘, ‘Dropped‘ (abbandonata) o ‘Pending‘ (in sospeso):

  • Se lo stato è ‘Success‘ allora i token sono arrivati a destinazione, e la transazione è stata aggiunta alla blockchain. Se non compaiono significa che dobbiamo aggiungerli manualmente, cosa che spiegheremo tra poco.
  • Se lo stato è ‘Failed‘ significa che abbiamo inserito un gas limit troppo basso. Come sappiamo, anche se i portafogli calcolano automaticamente i valori ideali per processare una transazione, spesso hanno funzionalità che consentono di modificarli manualmente. Tuttavia non dovremmo mai metter mano al gas limit nel tentativo di risparmiare perché un livello troppo basso può causare il fallimento della transazione. In questo caso infatti se i miner notano un gas price appetibile pescano lo stesso la nostra transazione e iniziano a processarla, ma il gas a disposizione finisce prima del completamento delle operazioni che la riguardano. Il risultato è che le monete non partono neanche (e quindi non sono perse ma si trovano ancora nel wallet d’origine), ma il gas utilizzato dai miner per avviare la transazione viene sottratto al nostro saldo e quindi di fatto viene sprecato. Non ci resta che crearne una nuova.
  • Se lo stato è ‘Dropped‘ significa che i miner hanno abbandonato la transazione, nel senso che questa non rientra più nel pool di quelle in attesa di essere processate. Ogni miner ha una memoria tampone (buffer) in cui sono raccolte le transazioni in sospeso. Le transazioni con fees meno profittevoli (gas price più basso) vengono lasciate in fila fino a quando quelle che convengono di più non sono state tutte processate. Se questo non avviene prima che la memoria sia piena, al raggiungimento della saturazione una transazione in fondo alla fila verrà abbandonata. Risulterà però ancora in sospeso finché non sarà scaricata da tutti i nodi (miner). A quel punto sparirà dal sistema, sarà automaticamente cancellata e risulterà in stato ‘Dropped’. Quello che non sappiamo è quanto ci metterà a venire abbandonata, poiché questo dipende dalla quantità di transazioni presenti sul network al momento e dal buffer size dei miner. Considerato che se visitiamo la pagina delle transazioni in sospeso sulla rete di Ethereum raramente troviamo casi in attesa da più di tre settimane, possiamo considerare questa la finestra temporale massima prima che una transazione venga abbandonata. Come per le transazioni fallite, anche qui dobbiamo creare una nuova transazione. La differenza è che in questo caso non solo i token non si sono mossi dal wallet, ma non abbiamo neanche pagato le gas fees in quanto nessun processo è stato avviato.
  • Se lo stato è ‘Pending‘ da più di qualche minuto la cosa più probabile è che siamo stati troppo bassi col prezzo del gas. Come abbiamo spiegato ogni transazione sottomessa alla rete rimane in fila, in attesa di essere selezionata dai miner. Anche se i miner danno la precedenza alle transazioni con un gas price più alto, questo parametro concede all’utente una certa flessibilità in quanto in genere un livello di poco più basso causa solo un prolungamento dell’attesa. Sapendo che il prezzo del gas oscilla continuamente, se le nostre stime ci suggeriscono che a breve questo calerà, possiamo risparmiare inserendo un valore leggermente inferiore a quello raccomandato. Nel caso però di gas price eccessivamente basso la transazione può rimanere in sospeso indefinitamente: in teoria potremmo lasciarla così fino quando il gas price non raggiunge il valore da noi inserito, ma in pratica, se le oscillazioni di prezzo sono sfavorevoli e se la rete è congestionata, saremo in fondo alla fila abbastanza a lungo da vederla a un certo punto passare allo stato ‘Dropped’.

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 ;).

In circostanze come questa dobbiamo valutare in base alla nostra situazione come preferiamo procedere. Se non abbiamo urgenza possiamo provare ad aspettare che la transazione cambi stato. Se invece vogliamo concludere l’operazione al più presto, la transazione può considerarsi bloccata, ed è lo scenario che risolviamo al prossimo punto.

Transazione Bloccata:Mentre in caso di transazione ‘Failed’ o ‘Dropped’ non dobbiamo fare altro che avviare una nuova procedura, in caso di transazione in attesa da molto tempo è possibile intervenire manualmente.

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 miner e 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.

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.

– Il nonce di un indirizzo aumenta di 1 dopo ogni transazione.
– Non si può processare una transazione finché non è stata confermata quella precedente: ad esempio la transazione del nostro indirizzo con nonce 10 non sarà presa in carico finché la numero 9 non è andata a buon fine.
– Non si può saltare nonce. Una transazione con nonce 10 può esistere solo dopo la numero 9 e non dopo la numero 8.
– Non si può usare lo stesso nonce di una transazione già confermata.
– Dopo che una transazione viene abbandonata ne possiamo creare una nuova con stesso nonce perché quella precedente non è mai stata validata.
– Possiamo sovrascrivere una transazione in sospeso mandandone una nuova con stesso nonce e gas price più alto.
– In condizioni normali i wallet si occupano autonomamente di gestire correttamente questo valore.

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 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 miner.
  • 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 adesso le monete appariranno a destinazione nell’arco di qualche minuto. 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.
L’inserimento di chiavi private o seed è una soluzione a cui appellarsi solo come ultima spiaggia. Esporre le private keys o la seed phrase del nostro wallet, soprattutto in un’estensione del browser, è esattamente il contrario delle pratiche ideali di protezione delle nostre criptovalute. Valutiamo bene il rapporto rischi/benefici prima di procedere. In queste situazioni può essere il caso di creare un nuovo wallet, trasferirci preventivamente i nostri asset, e poi usare la vecchia seed per l’ultima volta solo per recuperare le monete perse.

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.

Ovviamente spendere 16 dollari di fees per spostare 17 dollari di criptovalute non è esattamente un buon affare, e questa transazione ha scopo puramente dimostrativo.

Tornando per curiosità alla transazione precedente, e inserendo in Etherscan il suo Transaction ID, notiamo che lo stato è cambiato da ‘Pending’ a ‘Dropped and Replaced’, a conferma del fatto che la nuova transazione l’ha rimpiazzata.

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 (ovviamente ciò comporta il pagamento delle gas fees coinvolte).

Il Token va Aggiunto Manualmente:La transazione è andata a buon fine (‘Success’ su Etherscan) ma nel wallet non risulta. Tipicamente i wallet che supportano un certo ERC20 token lo mostrano automaticamente dopo la ricezione.

Se questo non avviene in alcuni casi è necessario aggiungere a mano il numero di contratto. Quasi ogni wallet ha una opzione per gestire questa possibilità. Dobbiamo semplicemente copiare il numero di contratto del token e inserirlo all’interno del portafoglio. Procediamo così:

  • Andiamo su CoinMarketCap e digitiamo nel motore di ricerca interno il nome del token ERC20, in questo esempio Shiba Inu.

  • Come notiamo in basso a sinistra troviamo il numero di contratto che rappresenta questa criptovaluta. Copiamolo cliccando sull’icona alla sua destra e poi dirigiamoci nel nostro wallet nella finestra di inserimento dei custom token. In Trezor Suite appare così:

  • Non appena aggiunto il token comparirà immediatamente tra i nostri asset, con il relativo saldo.

Per chi usa MetaMask in fondo alla parte 1 della guida completa c’è un approfondimento su tre diversi metodi per aggiungere un custom token al suo interno. Se il wallet che usiamo non prevede la possibilità di aggiungere un token manualmente, seguiamo le istruzioni che seguono.

Il Token non è Supportato dal Wallet:Abbiamo prelevato un ERC20 token e l’abbiamo mandato al nostro indirizzo ETH ma il nostro wallet non lo supporta e non permette di aggiungere custom token.

E’ il caso ad esempio di Ledger, che nell’applicazione ufficiale Ledger Live, anche se questa riconosce moltissimi token, non offre la possibilità di aggiungere il numero di contratto di quelli mancanti come succede ad esempio in Trezor Suite. In situazioni come queste può sembrare che non ci sia via d’uscita, ma in realtà la soluzione è a portata di mano.

La premessa come al solito è che abbiamo già controllato lo stato della transazione e questa risulta confermata. Se è così non abbiamo perso niente, i token sono registrati sulla blockchain e sono nostri, dobbiamo solo trovare il modo di accedervi.

Ancora una volta MetaMask ci viene in soccorso. Il metodo ottimale per chi usa Ledger è anche in questo caso accoppiarlo a MetaMask, come spiegato prima. Allo stesso modo per tutti gli altri wallet sarà invece necessario importare la chiave privata.

Non appena abbiamo accesso al nostro account Ethereum all’interno di MetaMask, possiamo aggiungere facilmente il token desiderato e vederlo comparire tra gli asset del wallet accoppiato/importato, usando la stessa procedura descritta un attimo fa sull’aggiunta manuale di token. Procediamo così:

  • Andiamo su CoinMarketCap e copiamo l’indirizzo.
  • Dentro MetaMask selezioniamo l’opzione ‘Aggiungi Token’, in basso nella schermata principale.
  • Qui clicchiamo su ‘Token Personalizzato’ e incolliamo l’indirizzo del contratto del token nell’apposita barra.
  • Gli altri valori si riempiranno automaticamente e ci basterà cliccare su ‘Add Custom Token’ in basso per confermare.

Ricordiamo che quel token, una volta aggiunto, sarà sempre e comunque visibile solo all’interno di MetaMask e non nel wallet che non lo supporta. Per questa ragione dovremo utilizzare MetaMask ogni volta che vogliamo spostarlo o scambiarlo.

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 sviluppato un solido arsenale di tecniche.

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