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

Condividi l'articolo con: