Transazioni e coppia di chiavi



Bitcoin è completamente decentralizzato, e questo vuol dire che non esiste una banca centrale o un autorità che ne possa controllare il meccanismo di funzionamento. L’integrità della transazione è assicurata dai diversi nodi che compongono il network.

La prima cosa che notiamo nel sistema Bitcoin è che esso funziona tramite pseudonimi. Supponiamo di voler inviare 1 bitcoin a un’altra persona. Nel sistema non ci saranno nomi o identità fisiche. Infatti, l’unica rappresentazione nominativa è data da un “indirizzo” composto di lettere e numeri casuali, un codice alfanumerico. Lo pseudoanimato è usato per dare privacy ad un sistema che è completamente pubblico e transparente.

Coppia di chiavi
Bitcoin ha un’altra caratteristica, l’esistenza di una la coppia di chiavi pubblica e privata,  un concetto alla base della crittografia asimmetrica. La coppia di chiavi, o keypair, sono semplicemente due numeri molto grandi che sono correlati matematicamente, con un rapporto strettamente univoco. Attraverso un esempio chiariamo l’utilità della coppia

Da Marta (pagante) a Jack (ricevente):

1) Jack creare un indirizzo. Il software restituisce una sequenza alfanumerica da 26 a 35 caratteri. Questo è un esempio: 12gXGyXWkvyDAjVKZHyGGstVYyXJ6ZjgqV

2) Jack  copia l’indirizzo e lo mostra al mittente.

3) Marta inserisce nel suo software l’indirizzo di Bob e la quantità di Bitcoin da inviare, inoltre specifica l’ammontare della commissione da pagare al minatore (detto “miner”) per convalidare la transazione.

4) Jack vede immediatamente sul suo software la transazione avvenuta, ma prima di considerare il pagamento effettuato attende che la transazione sia inserita nella blockchain.

5) In un massimo di 10 minuti circa i nodi minatori convalidano la transazione, ottenendo la fee inserita da Marta, più il premio in bitcoin dovuto al minare.



Dal punto di vista tecnico è avvenuto invece:

  1.  La creazione di una chiave privata (una sequenza casuale di cifre) da parte del ricevente
  2. La chiave privata è convertita in chiave pubblica attraverso l’algoritmo della curva ellittica
  3. La chiave pubblica viene convertita in un hash
  4. L’hash della chiave pubblica viene ridotto a indirizzo

–  primi 4 passaggi avvengono istantaneamente –

  1. L’indirizzo viene mostrato al pagante
  2. Il pagante decodifica l’indirizzo in hash della chiave pubblica
  3. Il pagante crea la transazione, specificando l’output e il “signature script” che include l’hash della chiave pubblica del ricevente
  4. Il pagante conferma la transazione inviando tutti i bitcoin presenti nell’input in uno o più output, firmandola con la chiave privata
  5. La transazione viene trasmessa online dal pagante a tutta la rete
  6. I minatori inseriscono nella blockchain la transazione, che viene riconosciuta così dalla comunità
  7. Il ricevente firma il signature script con la propria chiave privata e pubblica, dimostrando così di essere proprietario dell’output della transazione. Ora può spendere quell’output come input per una successiva transazione (#2).

– il passaggio 11 avviene solo durante la transazione #2 –

Merkle tree nelle transazioni
Il Merkle Tree è la struttura interna di un blocco permettendo che moltissime transazioni e dati si connettano l’uno con l’altro e solamente l’ultimo Hash sarà quello essenziale per connetterlo con il blocco successivo.

La transazione andrà ad inserirsi in un Merkle Tree, dove le foglie sono tutte le transazioni eseguite e i rami sono gli hash intermediari fino ad adesso risolti. L’insieme di transazioni formerà quindi la chioma dell’albergo fino a quando si arrivando ad un determinato limite in byte si arriva al tronco , ed un minatore nella rete andrà a risolvere hash finale dell’intero albero.