Bitcoin come un Sistema di Transizione di Stato


statetransition.png

Il libro mastro del Bitcoin pu√≤ essere pensato, da un punto di vista tecnico, come un sistema di transizione di stato, dove c’√® uno “stato” consistente nella propriet√† dello status di tutti i Bitcoins esistenti e “la funzione di transizione di stato”, che riceve uno stato ed una transizione e trasmette un nuovo stato che ne costituisce il risultato. Nel sistema bancario tradizionale, per esempio, lo stato √® il documento costituente il saldo, una transazione √® una richiesta di movimentare $X da A a B, e la funzione di transizione di stato sottrae un valore nel conto corrente di A equivalente $X ed incrementa il valore di $X nel conto corrente bancario di B. Se nel conto corrente di A ci sono meno che $X, la funzione di transizione di stato segnala un errore. Quindi, si pu√≤ formalmente definire:

APPLY(S,TX) -> S' or ERROR

Nel sistema bancario definito in precedenza:

APPLY({ Alice: $50, Bob: $50 },"send $20 from Alice to Bob") = { Alice: $30, Bob: $70 }

Ma:

APPLY({ Alice: $50, Bob: $50 },"send $70 from Alice to Bob") = ERROR

Lo “stato” nel Bitcoin √® la raccolta di tutte le monete (tecnicamente, “transazioni in uscita non spese” oUTXO) che sono state effettuate ma non ancora spese, con ogni UTXO che ha una denomoninazione ed un proprietario (definito da un indirizzo da 20-byte che √® essenzialmente una chiave crittografica pubblica[1]). Una transazione contiene uno o pi√Ļ inputs, con ogni input che contiene un riferimento ad un UTXO esistente ed una firma crittografica prodotta da una chiave privata associata all’indirizzo del proprietario, ed uno o pi√Ļ outputs, con ogni outpout contenente un nuovo UTXO che deve essere aggiunto allo stato.

  1. Per ogni input in TX:
    • Se il riferimento UTXO non √® in S, si ha un errore.
    • Se la firma provvista non combacia con il proprietario del UTXO, si ha un errore.
  2. Se la somma dei valori di tutti gli input UTXO è inferiore alla somma dei valori di tutti gli outpout UTXO, si ha un errore.
  3. Si ha S con tutti gli input UTXO meno tutti gli outpout UTXO aggiunti.

La prima parte del primo step previene che i mittenti delle transazioni possano spendere monete che non esistono, la seconda del primo step previene ai mittenti delle transazioni di spendere monete di altre persone, ed il secondo step fa rispettare la conservazione del valore. Al fine di utilizzare ci√≤ per il pagamento, il protocollo √® il seguente. Supponiamo che Alice voglia inviare 11.7 BTC a Bob. Per primo, Alice controller√† di possedere un set di UTXO, che ammonta ad almeno 11.7 BTC. Realisticamente, Alice non sar√† in grado di ottenere esattamente 11.7 BTC; si pu√≤ dire che il valore pi√Ļ piccolo che pu√≤ ottenere √® 6+4+2=12. Lei poi crea una transazione con quei tre inputs ed i due outputs. Il primo output sar√† 11.7 BTC con l’indirizzo che appartiene a Bob, ed il secondo output sar√† il rimanente 0.3 BTC “scambiato”, essendo Alice stessa il proprietario.

Link . https://github.com

 
Resta aggiornato con la Newsletter Settimanale