Glossario / Transazioni e commissioni
Transazione bitcoin
Noto anche come Transazione.
- Che cos'è una transazione bitcoin?
- Una transazione bitcoin è un'istruzione firmata che distrugge alcuni bitcoin esistenti e ne crea di nuovi al loro posto, ed è l'unico modo in cui il valore si sposta sulla rete.
In bitcoin nulla detiene un saldo. Il registro è un insieme di output non spesi, un pagamento consuma output interi e ne crea di nuovi in sostituzione, e ciò che avanza va al miner come commissione. La prima di sempre spostò 10 bitcoin da Satoshi Nakamoto a Hal Finney nel blocco 170 il 12 gennaio 2009, e come tutte quelle arrivate dopo non poteva essere annullata.
Come funziona
Una transazione bitcoin è una breve struttura binaria in sei parti, e il wallet le assembla tutte prima che qualsiasi cosa venga trasmessa.
La versione occupa 4 byte. La versione 1 era quella originale; la versione 2 esiste perché il BIP68 ha dato ai numeri di sequenza un nuovo significato per i timelock relativi, e i wallet moderni la impostano per impostazione predefinita. Poi vengono gli input, ognuno dei quali indica un output creato in precedenza e porta la prova del diritto a spenderlo. Poi gli output, ognuno con un importo in satoshi e uno script di blocco che stabilisce chi potrà spenderlo in seguito. Le transazioni SegWit aggiungono una sezione witness che contiene le firme, e che resta fuori dalla parte che determina l'id della transazione. Infine c'è il locktime, 4 byte, di solito impostato all'altezza del blocco corrente perché una transazione non possa essere inserita in un blocco precedente.
In quella struttura non esiste alcun campo per la commissione. La commissione è aritmetica: valore totale degli input meno valore totale degli output, e ciò che non viene assegnato a un output va a chi mina il blocco. Per questo un bug del wallet che calcola male il resto può buttare via denaro reale, e per questo ogni wallet costruisce un output di resto verso se stesso invece di lasciare un residuo.
La firma tiene insieme tutto. Con la regola predefinita SIGHASH_ALL, ogni firma impegna ogni input e ogni output, quindi modificare un solo satoshi di un solo output invalida tutte le firme della transazione. È questo che rende una transazione trasmessa definitiva nel contenuto, se non ancora nella conferma.
La dimensione si misura in byte virtuali e non in byte grezzi, perché SegWit sconta i dati witness a un quarto del loro peso, e i blocchi hanno un tetto dato da un budget di 4 milioni di unità di peso. Una spesa SegWit nativa con un input e due output arriva a circa 141 byte virtuali.
Perché questo conta quando compri bitcoin
Due cose completamente diverse vengono chiamate "inviare bitcoin" su un exchange, e solo una delle due è una transazione.
Spostare bitcoin tra conti dentro la stessa piattaforma è un aggiornamento di un database. È istantaneo, di solito gratuito e non lascia traccia sulla blockchain, perché nessuna transazione è stata creata. Prelevare verso un indirizzo che gestisci tu costruisce una transazione reale, paga una commissione reale, attende un blocco reale ed è l'unica versione che finisce con te che possiedi bitcoin invece di possedere un credito verso una società.
Una volta che prelevi, seguono tre conseguenze pratiche.
Non puoi annullarla. Il replace-by-fee consente al mittente di aumentare la commissione mentre una transazione non è confermata, ma solo il wallet che l'ha costruita può farlo, e un exchange non lo farà per te. Controlla l'indirizzo prima di approvare, non dopo.
Ogni deposito che ricevi diventa un output che pagherai per spendere in seguito. Dieci piccoli acquisti lasciano dieci output, e un pagamento futuro che deve spenderli tutti e dieci costa diverse volte quanto costerebbe un solo output grande. Prelevare in meno occasioni e con importi più grandi è l'abitudine più economica in bitcoin, e adottarla non costa nulla.
La commissione che addebita il tuo exchange è un importo fissato dall'exchange, non la commissione di rete. È stabilita in anticipo e raramente segue la mempool, quindi in una giornata tranquilla puoi pagare diverse volte il costo reale e in una giornata intensa molto meno. Le recensioni degli exchange su questo sito registrano come ogni piattaforma gestisce i prelievi, e quelle che ti lasciano scegliere la tua tariffa di commissione meritano di essere preferite.
Leggere un prelievo reale, campo per campo
Supponi di comprare 0,05 BTC e di prelevarli. Quello che apparirà su un block explorer probabilmente ti confonderà, perché la transazione non è solo tua.
I grandi exchange raggruppano. Una singola transazione di prelievo può spendere 3 input dall'hot wallet, per un valore totale di 2,41 BTC, e creare 42 output, uno dei quali sono i tuoi 0,05 BTC e uno dei quali è il resto che torna all'exchange. Con circa 68 byte virtuali per input, 31 byte per output e circa 11 byte di overhead, quella transazione si avvicina a 1.517 byte virtuali. Con una tariffa di 6 sat/vB il miner riceve circa 9.102 satoshi, che corrispondono a circa 217 satoshi per ogni cliente del gruppo. Inviato da solo, il tuo prelievo sarebbe stato di circa 141 byte virtuali e sarebbe costato circa 846 satoshi.
Quindi l'explorer mostra una transazione che sposta molto più bitcoin di quanto hai prelevato, con decine di destinatari di cui non hai mai sentito parlare. Non c'è nulla di sbagliato. Trova il tuo output per importo e indirizzo, annota l'id della transazione e ignora il resto.
Transazione bitcoin vs txid
Una transazione è l'oggetto; un txid è la sua impronta. L'id è un hash SHA-256 doppio della transazione serializzata esclusi i dati witness, scritto come 64 caratteri esadecimali, ed esiste perché la transazione possa essere citata senza essere ripetuta. L'assistenza chiede il txid, gli explorer indicizzano le transazioni in base a esso e le transazioni successive vi fanno riferimento. Quello che non è, è una ricevuta: un txid prova che esiste una transazione con esattamente quel contenuto, e non dice nulla su chi l'ha inviata né perché.
Transazione bitcoin vs PSBT
Una PSBT è una transazione non ancora completata. Il formato, definito nel BIP174, porta gli input e gli output più le informazioni aggiuntive che servono a un firmatario, come il valore e lo script di ogni input speso, e viaggia tra dispositivi invece che sulla rete. Le configurazioni air-gapped e multisig dipendono da esso: un firmatario offline legge la PSBT, aggiunge la sua firma e la restituisce. Solo quando ogni input è firmato il file viene finalizzato in una transazione che la rete accetterà, e fino a quel momento non è stato inviato nulla.