Struttura di Bitcoin
Blocco e Header
Sono strutture (struct) nel senso del Linguaggio C, in cui Bitcoin è scritto.
Sono relativamente semplici.
Merkle Tree
Un albero di Merkle è un albero in cui ogni nodo foglia è etichettato con l'hash crittografico di un blocco di dati e ogni nodo non foglia è etichettato con l'hash crittografico delle etichette dei suoi nodi figli. Gli alberi hash consentono una verifica efficiente e sicura dei contenuti di grandi strutture di dati.
Il Merkle Hash punta al nodo radice di un Albero di Merkle in cui sono organizzate le transazioni.
Transazioni
Bitcoin è un metodo di registrazione permanente di transazioni monetarie.
La struttura di una transazione è la seguente.
Il Lock Time indica il numero di blocchi o il timestamp del blocco prima che la transazione possa considerarsi valida.
Valida vuol dire che può essere spesa.
La prima transazione si chiama Coinbase e non è considerata valida se non sono stati prodotti almeno 100 blocchi.
Inputs e Outputs
Una transazione può avere più inputs e più outputs.
Struttura di un input (esempio):
Viene importato valore dall'output di indice 0 nella transazione di hash f5d8...
. Il campo scriptSig è una procedura codificata per la verifica della firma del generatore della transazione - un algoritmo crittografico complesso.
Nella stessa transazione è incluso un output (esempio):
Vengono inviati 50 BTC (5000000000 Satoshi) all'indirizzo esadecimale 4043...
, con ulteriori flags di specifica di trattamento.
I valori sono indicati in Satoshi (1 Bitcoin = 100.000.000 Satoshi) per costringere l'uso di un numero intero.