Se volessimo sintetizzare al massimo il funzionamento di Bitcoin, potremmo dire che esso registra transazioni di valore tra diversi indirizzi, inserendo i dettagli di queste transazioni nella blockchain. La transazione, pertanto, è l'informazione più importante contenuta nella blockchain.
Cos'è una transazione in Bitcoin?
Una transazione in Bitcoin, nella sua forma più basilare, rappresenta il trasferimento di fondi (espresso in bitcoin) da un indirizzo Bitcoin A (mittente), a un altro B (destinatario). Ogni transazione è registrata nella blockchain per sempre, così da garantire l'immutabilità e la trasparenza di ogni scambio.
Per capire meglio come funziona una transazione, possiamo paragonarla al meccanismo degli assegni bancari.
Facciamo uno sforzo di fantasia: immaginiamo di vivere in un mondo in cui non esistono banconote o monete di taglio fisso, ma in cui tutti pagano tutti tramite girate di assegni.
In questo scenario, per fare un pagamento nel mondo degli assegni sarà necessario "scambiare e trasformare" questi assegni. Il mittente dovrà portare in banca uno o più assegni a suo nome, girarli a favore della banca, ottenere l'emissione di un nuovo assegno intestato al ricevente. Se l'ammontare degli assegni è superiore al pagamento dovuto, il mittente riceverà dalla banca anche un assegno di "resto". Gli assegni originali portati dal mittente verranno quindi annullati e solo i nuovi assegni appena emessi saranno spendibili.
Questo processo, sebbene sarebbe complicato e ingestibile nella vita reale, diventa molto più gestibile e rapido nel contesto della moneta elettronica.
Le transazioni Bitcoin si comportano esattamente così.
Quando una persona possiede bitcoin, in realtà detiene delle UTXO (Unspent Transaction Outputs), che sono transazioni precedentemente ricevute e non ancora spese. Per spendere una parte di questi bitcoin, deve creare una nuova transazione. Questa nuova transazione si compone di due parti:
- Una parte detta INPUT che raccoglie una o più UTXO, ognuna con la firma digitale del legittimo proprietario che le "sblocca".
- Una parte detta OUTPUT, in cui sono generate nuove UTXO che annullano e sostituiscono le precedenti e vengono indirizzate ai nuovi proprietari, identificati dai loro indirizzi Bitcoin.
Può succedere che, in una transazione, il valore di bitcoin che desideriamo trasferire sia inferiore al valore totale di cui disponiamo. È come se Bob avesse un solo assegno bancario di valore elevato, diciamo di 50 BTC, ma dovesse pagare Alice soltanto 0.5 BTC.
In questo caso, Bob non può semplicemente strappare un pezzo dell'assegno per il valore che vuole trasferire; deve utilizzare l'intero "assegno" digitale, ovvero la UTXO completa. Dopo aver inviato 0.5 BTC ad Alice, il "resto", cioè i rimanenti 49.5 BTC, devono essere indirizzati da qualche parte. Nel mondo Bitcoin, questo "qualche parte" è ciò che chiamiamo "change address" o "indirizzo di resto".
Quindi, nella transazione, l'output della transazione includerà due parti: una che trasferisce il valore ad Alice e un'altra che reindirizza il "resto" a un nuovo indirizzo Bitcoin controllato da Bob. Questo meccanismo assicura che Bob mantenga il controllo sui suoi bitcoin non spesi dopo la transazione.
Come viene verificata una transazione in Bitcoin?
Affinché una transazione possa essere accettata dalla rete e produrre gli effetti del trasferimento di valore, deve essere formalmente valida e superare di versi controlli.
Ci sono più di 40 regole che ogni transazione deve dimostrare di rispettare per essere considerata valida!
Alcune di queste verifiche sono:
- Ogni UTXO in input deve essere firmata (firma digitale) del proprietario
- La firma deve coincidere con l'indirizzo del proprietario
- L'intera transazione a sua volta deve essere firmata dal mittente
- La somma del valore delle nuove utxo non può essere maggiore della somma del valore delle transazioni in input (non possiamo creare valore dal nulla)
Attenzione: Come da regole del protocollo, non c'è una figura preposta a questi controlli di validità. Questi controlli spettano ad ogni partecipante della rete che li svolge nel suo interesse.
Un po' come ognuno di noi controlla di non aver ricevuto un assegno falso. La transazione è quindi verificata da tutti i nodi che la vedono passare.
Come viene confermata una transazione?
Non è quindi sufficiente che la transazione sia formalmente valida affinché abbia effetto: deve essere accetta dalla rete come effettiva. Questo avviene quando viene "minata" (processata da un miner) ed inclusa in un blocco.
La transazione ha un suo ciclo di vita che potremmo riassumere così:
- La transazione viene creata e firmata da un utente col suo wallet bitcoin
- La transazione è inviata alla rete - il primo nodo che la riceve la verifica
- Se il primo nodo ritiene la transazione invalida (non rispetta il protocollo) la ignora. Se la ritiene valida la propaga ad altri nodi così che tutta la rete la conosca
- La transazione valida è quindi messa nella mempool, la stanza d'attesa delle transazioni che attendono di essere selezionate da un miner
- La transazione viene selezionata da un miner (o più di uno) per includerla in un blocco
- Presto o tardi un miner chiuderà un blocco che contiene quella transazione
- La transazione viene tolta dalla mempool
- La transazione viene inserita nel blocco più recente della blockchain e si dice quindi che ha una conferma.
- Ogni successivo blocco aggiungerà un'ulteriore conferma alla transazione. Quando raggiunge il numero di 6 conferme è universalmente considerata finalizzata.