Cos'è un hash di transazione (TXID) e come si verifica?

ID transazione su Bitcoin, Ethereum, Solana e XRP, spiegati da ChainGate.

Un hash di transazione (detto anche TXID, ID transazione o tx hash) è l'identificativo univoco di una singola transazione blockchain. Si ottiene applicando una funzione di hash ai dati della transazione stessa, quindi è fissato nel momento in cui la transazione viene firmata, e chiunque può incollarlo in un block explorer per vedere mittente, destinatario, importo, commissione e stato di conferma.

Su Bitcoin ed Ethereum è una stringa esadecimale di 64 caratteri. Ethereum e le altre chain EVM la fanno precedere da 0x, per un totale di 66 caratteri. Solana usa invece la firma della transazione, una stringa base58 più lunga, e l'XRP Ledger scrive i suoi hash in maiuscolo.

Prima o poi ogni wallet, exchange e servizio di assistenza chiede un hash di transazione, e la maggior parte delle spiegazioni si ferma a "un identificativo univoco". Questa guida va oltre: di cosa è fatta la stringa, perché ha un aspetto diverso su ogni chain, da dove copiare la tua, come leggere la pagina dell'explorer che apre, e i pochi casi in cui l'hash che ti hanno dato smette di funzionare.

La versione breve

  • Hash della transazione e ID transazione sono la stessa cosa. Wallet, exchange ed explorer usano i due nomi in modo intercambiabile, insieme a TXID, tx hash e hash ID.
  • La lunghezza ti dice la famiglia di chain: 64 caratteri esadecimali (Bitcoin), 0x + 64 (Ethereum e chain EVM). Solana usa invece la firma della transazione, circa 88 caratteri base58.
  • Il tuo lo trovi nei dettagli della transazione nel wallet o nella cronologia dei prelievi dell'exchange, e lo verifichi sull'explorer della rete su cui è stata inviata.
  • Un hash smette di funzionare quando la transazione è stata sostituita (accelerata, annullata, replace-by-fee) o quando il trasferimento non è mai uscito dal registro interno dell'exchange.

1. Cos'è un hash di transazione?

Una transazione blockchain è un piccolo blocco di dati: chi paga, chi viene pagato, quanto, con quale commissione, e una firma. Passa quei dati attraverso la funzione di hash della rete e ottieni un numero di lunghezza fissa. Quel numero è l'hash della transazione. Qualsiasi modifica ai dati produce un numero diverso, quindi l'hash funziona come un'impronta digitale: identifica esattamente una transazione e nessun'altra.

Nodi, wallet ed explorer usano l'hash come chiave di ricerca. Quando trasmetti una transazione, il nodo che la accetta ti restituisce l'hash. Quando il wallet mostra "in attesa", sta interrogando la rete per quell'hash. Quando un exchange chiede la prova di un deposito, l'hash è quello che controlla. È l'unico riferimento che ti serve per seguire un pagamento dalla trasmissione alla conferma.

L'hash in sé non prova nulla. È una chiave di ricerca, e la prova è quello che l'explorer mostra quando lo apri.

2. Hash di transazione e ID transazione sono la stessa cosa?

Sì. Hash della transazione, ID transazione, TXID, tx hash, txn hash e hash ID indicano tutti la stessa stringa. Il vocabolario dipende da dove ti trovi: il software Bitcoin dice txid, gli strumenti Ethereum dicono transaction hash o txn hash, e gli exchange spesso scrivono TXID o hash ID nelle schermate di prelievo. Solana è l'unico posto in cui il termine differisce nella sostanza. Il suo ID transazione è la prima firma della transazione e non un hash dell'intera transazione, quindi la documentazione parla di "signature".

Due cose vengono spesso confuse con l'hash e non sono la stessa cosa. Un indirizzo del wallet identifica un account, non un pagamento (su Bitcoin inizia con 1, 3 o bc1). Un hash di blocco identifica un intero blocco che contiene molte transazioni. Se un exchange rifiuta la stringa che hai incollato, controlla di non aver copiato una di queste.

3. Che aspetto ha un hash di transazione?

Il formato dipende dalla chain, e di solito basta a capire a quale rete appartiene un hash:

ReteFormatoLunghezzaEsempio
Bitcoin, Litecoin, Dogecoin, Bitcoin CashEsadecimale minuscolo64 caratteri4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
Ethereum, Polygon, BNB Smart Chain, Arbitrum, Base, Avalanche C-Chain e ogni altra chain EVM0x seguito da 64 caratteri esadecimali minuscoli66 caratteri0x97d99bc7729211111a21b12c933c949d4f31684f1d6954ff477d0477538ff017
SolanaFirma base58: cifre e lettere, senza prefisso 0xCirca 87 o 88 caratteriPiù lunga di un hash esadecimale, mescola maiuscole e minuscole
XRP LedgerEsadecimale maiuscolo64 caratteriCifre e lettere da A a F, tutte maiuscole

L'esempio Bitcoin è la prima transazione mai registrata, la coinbase del blocco genesi minato il 3 gennaio 2009; puoi aprirla su mempool.space. L'esempio Ethereum è quello usato nella documentazione per sviluppatori di ethereum.org. Entrambi sono 32 byte scritti in esadecimale, ed è per questo che sono lunghi 64 caratteri; il prefisso 0x è la convenzione di Ethereum per dire "questo è esadecimale". Litecoin, Dogecoin e Bitcoin Cash ereditano il formato di Bitcoin, e ogni rete EVM eredita quello di Ethereum, quindi una transazione su Polygon o Base ha esattamente lo stesso aspetto di una sulla mainnet di Ethereum.

Un ID transazione di Solana è la firma della transazione: 64 byte di firma Ed25519 codificati in base58 anziché in esadecimale, ed è per questo che è più lungo e contiene lettere sia maiuscole sia minuscole. Gli hash dell'XRP Ledger sono gli stessi 256 bit di Bitcoin, scritti in maiuscolo per convenzione.

4. Come viene generato un hash di transazione?

Ogni chain applica l'hash alla propria serializzazione della transazione firmata, e le differenze spiegano alcune cose in cui ti imbatterai.

Bitcoin, Litecoin, Dogecoin, Bitcoin Cash
Il txid è il doppio SHA-256 della transazione nella sua serializzazione tradizionale, che esclude i dati witness (le firme) degli input SegWit; il witness è coperto da un secondo identificativo, il wtxid. Così lo definisce BIP 141, ed è il motivo per cui il txid di una transazione che spende solo output SegWit non può essere alterato da terzi prima della conferma.
Ethereum e chain EVM
L'hash è il Keccak-256 della transazione firmata e serializzata, quindi esiste solo una volta che la transazione è firmata: librerie come ethers restituiscono null per l'hash di una transazione non firmata. Il nodo restituisce l'hash di 32 byte come risultato di eth_sendRawTransaction, e lo stesso valore è quello che passi a eth_getTransactionByHash ed eth_getTransactionReceipt.
Solana
Non c'è un hash separato. Come ID si usa la prima firma Ed25519 della transazione, 64 byte mostrati come stringa base58.
XRP Ledger
Un hash SHA-512Half (i primi 256 bit di uno SHA-512) della forma binaria della transazione firmata, preceduta dai byte TXN prima dell'hashing, scritto come 64 caratteri esadecimali maiuscoli.

Le definizioni sono in BIP 141, nella specifica JSON-RPC di Ethereum, nella pagina della terminologia di Solana e nel riferimento ai tipi di dato dell'XRP Ledger.

Quello che hanno tutti in comune: l'hash viene calcolato da chi firma la transazione, prima che raggiunga la rete. Il wallet conosce l'hash nell'istante in cui tocchi invia, ed è per questo che può mostrarlo mentre la transazione è ancora non confermata.

5. Dove trovo il mio hash di transazione?

Dipende da chi ha inviato la transazione.

Wallet self-custody (MetaMask, Ledger, Trust Wallet, Phantom, Electrum)
Apri la transazione nell'elenco attività o cronologia del wallet. La schermata dei dettagli mostra l'hash, di solito con un pulsante per copiarlo e un link "vedi sull'explorer" che lo apre per te.
Prelievo da un exchange
Vai alla cronologia dei prelievi. Una volta che l'exchange ha trasmesso la transazione, la riga mostra un TXID, spesso come link. Se la riga dice ancora in elaborazione, l'hash non esiste ancora perché non è stato firmato nulla.
Qualcuno ti ha pagato
Chiedi l'hash a chi ti ha pagato, oppure apri il tuo indirizzo di ricezione su un block explorer: ogni transazione che ha toccato l'indirizzo è elencata con il suo hash.
Il tuo codice
Lo restituisce la chiamata di trasmissione. Con l'SDK ChainGate è il campo transactionId nel risultato di signAndBroadcast(), su Bitcoin come su Ethereum (vedi la sezione 10).

Copia la stringa intera. Gli exchange rifiutano gli hash con un carattere mancante o uno spazio in più, e un txid Bitcoin incollato in un explorer Ethereum semplicemente non verrà trovato.

6. Come verifico una transazione con il suo hash?

Incollalo in un block explorer della rete su cui la transazione è stata inviata. L'explorer mostra se la transazione è in attesa o confermata, quante conferme ha, il blocco che l'ha inclusa, mittente e destinatario, l'importo, la commissione pagata e, su Ethereum, se l'esecuzione è riuscita o fallita.

ReteExplorerCosa guardare
Bitcoinmempool.space, blockchain.comConferme (6 è il consueto "definitivo"), tariffa in sat/vB, posizione nella mempool finché non è confermata
EthereumEtherscanStato (Success, Fail, Pending), numero di blocco, gas usato e commissione di transazione, trasferimenti di token
Polygon, BNB Smart Chain, Arbitrum, Base, AvalanchePolygonscan, BscScan, Arbiscan, Basescan, SnowtraceStesso layout di Etherscan; ogni explorer conosce solo la propria chain
Litecoin, Dogecoin, Bitcoin CashBlockchair o l'explorer di ciascuna monetaConferme e commissione, come su Bitcoin
SolanaSolscan, Solana ExplorerLivello di commitment (processed, confirmed, finalized), commissione in SOL, le istruzioni eseguite
XRP LedgerXRPScan, l'explorer di xrpl.orgCodice di risultato (tesSUCCESS significa che è andata a buon fine), indice del ledger, destination tag

Leggi prima lo stato. "Pending" o "unconfirmed" significa che la rete ha la transazione ma nessun blocco l'ha ancora inclusa. "Success" con una o più conferme significa che il denaro si è mosso. "Fail" o "dropped" significa che non si è mosso, e su Ethereum la commissione è stata pagata comunque. Per sapere cosa significa ogni campo della pagina di una transazione Ethereum, leggi la guida a Etherscan.

7. Perché non trovo la mia transazione sull'explorer?

Una pagina "transaction not found" è quasi sempre uno di questi casi:

Rete sbagliata
L'hash appartiene a una chain diversa da quella dell'explorer. Un prelievo di USDT può viaggiare su Ethereum, Tron, BNB Smart Chain o Polygon, e ognuna ha il proprio explorer. Usa l'explorer della rete che hai scelto al momento del prelievo.
Troppo presto
Una transazione impiega qualche secondo a propagarsi, e un exchange può mostrare il TXID un attimo prima che gli explorer lo indicizzino. Aspetta un minuto e ricarica la pagina.
Non è mai andata on-chain
I trasferimenti tra due account dello stesso exchange, e i pagamenti con carta o bonifico, vengono registrati nel database dell'azienda e non su una blockchain, quindi non c'è nessun hash da trovare. Solo gli invii on-chain ne hanno uno.
È stata sostituita
Se la transazione è stata accelerata, annullata o rilanciata con replace-by-fee, la sostituta ha un nuovo hash e la rete scarta quella vecchia. La prossima sezione spiega perché.
È scaduta
Una transazione Bitcoin con una commissione troppo bassa viene eliminata dalle mempool dei nodi dopo circa due settimane. I fondi tornano spendibili e il vecchio txid non si riferisce più a nulla.

La guida alle commissioni Bitcoin spiega come scegliere una commissione che si conferma, e cosa fare quando una resta bloccata.

8. Un hash di transazione può cambiare?

L'hash di una transazione confermata non cambia mai: fa parte del blocco, e modificarlo significherebbe modificare il blocco. Prima della conferma, l'hash può essere soppiantato da un'altra transazione, il che dall'esterno sembra un cambiamento.

Su Ethereum e sulle altre chain EVM, accelerare o annullare una transazione in attesa significa firmare una nuova transazione con lo stesso nonce e una commissione più alta, come spiega la pagina di aiuto di MetaMask. La rete tiene quella che viene minata e scarta l'altra. La nuova transazione ha un nuovo hash, quindi quello che il wallet ha mostrato per primo diventa un link morto. Lo stesso vale per il replace-by-fee di Bitcoin (BIP 125): la sostituta è una transazione diversa con un txid diverso.

Le transazioni Bitcoin più vecchie avevano un problema in più, la malleabilità delle transazioni: un terzo poteva ritoccare la codifica della firma di una transazione non confermata e darle un txid diverso senza cambiare dove andavano i soldi. Segregated Witness (BIP 141, attivo dal 2017) ha spostato le firme fuori dai dati coperti dal txid, eliminando il problema per le transazioni che spendono output SegWit. Se il tuo wallet usa indirizzi che iniziano con bc1, la cosa non ti riguarda.

9. È sicuro condividere un hash di transazione?

Sì. L'hash non contiene chiavi, password o nulla che permetta a qualcuno di muovere i tuoi fondi. Chi ce l'ha può vedere quello che mostra l'explorer: gli indirizzi coinvolti, l'importo e l'ora. Quelle informazioni sono già pubbliche, perché la blockchain è pubblica; l'hash le rende solo facili da trovare.

L'unico punto sulla privacy: dare a qualcuno l'hash di un pagamento gli dice quale indirizzo è tuo, e da lì ogni altra transazione su quell'indirizzo. Se la cosa conta, usa un nuovo indirizzo di ricezione per ogni pagamento, come fa la maggior parte dei wallet Bitcoin per impostazione predefinita.

10. Come ottenere l'hash nel codice

Se la tua applicazione invia transazioni, conserva l'hash restituito dalla chiamata di trasmissione: è la chiave per i controlli di stato, i ticket di assistenza e la riconciliazione. Con l'SDK ChainGate le stesse righe funzionano su Bitcoin, Litecoin, Dogecoin, Bitcoin Cash e qualsiasi rete EVM:

import { ChainGate, importWallet } from 'chaingate';

const cg = new ChainGate({ apiKey: process.env.CHAINGATE_API_KEY });
const wallet = importWallet({ phrase: process.env.MNEMONIC });
const eth = cg.connect(cg.networks.ethereum, wallet);

const tx = await eth.transfer(cg.networks.ethereum.amount('0.01'), '0x...');
tx.setFee(tx.recommendedFees().normal);

const sent = await tx.signAndBroadcast();
console.log(sent.transactionId); // 0x... on EVM chains, 64 hex chars on Bitcoin

sent.onConfirmed((details) => {
  console.log('mined in block', details.blockHeight, details.transactionId);
});

Il tutorial per inviare crypto in JavaScript copre wallet, commissioni e gestione degli errori, e la documentazione dei trasferimenti elenca ogni campo del risultato della trasmissione, compresa la callback onConfirmed() usata qui sopra.

11. Dove andare da qui

Ora sai leggere un hash come fa un explorer: quale chain, quale transazione, e se è definitiva. Per capire la riga della commissione in quella pagina dell'explorer, leggi cosa sono le gas fee su Ethereum e come funzionano le commissioni Bitcoin, e per vedere quanto costa inviare in questo momento su ogni rete, apri il gas tracker. Se vuoi che trasmissione, callback di conferma e ID transazione siano gestiti su Bitcoin e chain EVM da un'unica libreria TypeScript, ChainGate lo fa.

Domande frequenti

Cos'è un hash di transazione in ambito crypto?

L'identificativo univoco di una transazione blockchain, ottenuto applicando una funzione di hash ai dati della transazione. Su Bitcoin sono 64 caratteri esadecimali; su Ethereum e sulle altre chain EVM è 0x seguito da 64 caratteri esadecimali. Incollalo in un block explorer per vedere stato, indirizzi, importo e commissione della transazione.

Hash della transazione e ID transazione (TXID) sono la stessa cosa?

Sì. Hash della transazione, ID transazione, TXID, tx hash e hash ID sono nomi diversi per la stessa stringa. Solo Solana differisce nella sostanza: il suo ID transazione è la prima firma della transazione e non un hash.

Che aspetto ha un hash di transazione?

Bitcoin, Litecoin, Dogecoin e Bitcoin Cash: 64 caratteri esadecimali minuscoli. Ethereum, Polygon, BNB Smart Chain, Arbitrum, Base e altre chain EVM: 0x più 64 caratteri esadecimali, 66 in totale. Solana: una firma base58 di circa 88 caratteri. XRP Ledger: 64 caratteri esadecimali maiuscoli.

Come trovo l'hash della transazione di un prelievo?

Apri la cronologia dei prelievi sull'exchange. Una volta che il prelievo è stato trasmesso, la riga mostra il TXID, spesso come link a un block explorer. Se dice ancora in elaborazione, la transazione non è ancora stata firmata e nessun hash esiste.

Come verifico un hash di transazione?

Incollalo nel block explorer della rete su cui è stata inviata: mempool.space o blockchain.com per Bitcoin, Etherscan per Ethereum, Polygonscan, BscScan, Arbiscan o Basescan per le altre chain EVM, Solscan per Solana. La pagina mostra stato, conferme, mittente, destinatario, importo e commissione.

Perché l'explorer dice che la transazione non è stata trovata?

Di solito l'hash appartiene a una rete diversa da quella dell'explorer, la transazione ha solo pochi secondi di vita, era un trasferimento interno a un exchange che non ha mai toccato la blockchain, oppure è stata sostituita da una transazione accelerata o annullata con un nuovo hash.

Un hash di transazione può cambiare?

Non una volta che la transazione è confermata. Prima, accelerare, annullare o usare il replace-by-fee crea una nuova transazione con un nuovo hash, e l'originale viene scartata. Le transazioni Bitcoin più vecchie potevano anche essere alterate da terzi (malleabilità), problema che SegWit ha risolto nel 2017.

È sicuro condividere il mio hash di transazione?

Sì. Non contiene chiavi private e non può essere usato per muovere fondi. Rivela gli indirizzi, l'importo e l'ora del pagamento, che sono comunque pubblici sulla blockchain.

Quanti caratteri ha un hash di transazione?

64 per le chain della famiglia Bitcoin e per l'XRP Ledger, 66 per Ethereum e le chain EVM a causa del prefisso 0x. Entrambi rappresentano gli stessi 32 byte. Gli ID transazione di Solana sono firme base58, di solito 87 o 88 caratteri.

Costruisci con ChainGate

Porta queste idee nel codice — ChainGate ti dà wallet, transazioni e RPC gestito per Ethereum e più di 20 altre blockchain in un’unica libreria.