Bentornati alla seconda puntata del nostro piccolo corso su Bitcoin e Javascript – perfettamente sintetizzati nella libreria BitcoinJS.

In questa lezione vedremo come usare questo tool per creare una transazione, ovvero l’elemento di base del protocollo Bitcoin.

Se c’è una cosa che forse non è perfettamente intuitiva da capire ma che è essenziale per comprendere come funziona il tutto è che il “bitcoin” come valuta in realtà non esiste – o almeno, non come esistono Euro, Dollari o altre valute. Ciò che esiste sono solo “transazioni”, ovvero record di trasferimenti di bitcoin da un indirizzo ad un altro.

Che cosa è una transazione bitcoin?

Nel mondo Bitcoin una “transazione” è dunque il trasferimento di una quantità di bitcoin (o meglio di satoshi, cioè un milionesimo di bitcoin) in un formato che possa essere inserito in un “blocco” e distribuito infine sul “network”.

Come abbiamo detto nella puntata precedente la blockchain – cioè la lista di blocchi all’interno dei quali sono contenute le transazioni – funziona come un gigantesco foglio Excel condiviso e garantito da tutti i client e computer che fanno parte della rete. Continuando con la nostra analogia del foglio di calcolo, ogni transazione è una”riga” del foglio che dice: “nella riga precedente sono stati trasferiti X satoshi da questo indirizzo a quest’altro indirizzo che io controllo. In questa riga prendiamo quei satoshi e li trasferiamo un po’ a questo indirizzo, un po’ a quest’altro indirizzo e un po’ li diamo a chi gestisce il foglio di calcolo”.

I tre componenti fondamentali di una transazione sono dunque:

  1. la transazione di input, ovvero quella a cui questa transazione fa riferimento come origine dei fondi che verranno trasferiti (è da notare che in una transazione ci possono essere più “movimenti” e quindi va incluso l’indice del movimento – come un array – a cui questa transazione fa riferimento)
  2. la quantità di satoshi che vengono trasferiti (la somma dell’output deve corrispondere alla somma dell’input, se così non fosse l’eventuale “resto” viene considerato “transaction fee” e trattenuto dai “minatori” che creeranno il blocco all’interno del quale verrà inserita la transazione prima di essere trasmessa alla rete – ma parleremo in un altro momento di questo)
  3. l’indirizzo di output, ovvero una chiave pubblica come quella che abbiamo creato nella scorsa puntata (che abbiamo firmato con la nostra chiave privata e che dunque solo noi possiamo dimostrare di controllare) che rappresenta la “persona” a cui stiamo inviando i bitcoin

Creiamo una transazione con BitcoinJS

E’ chiaro allora che la transazione è uno dei momenti fondamentali di tutto il meccanismo Bitcoin: imparare  come crearle ci permette di entrare direttamente nel sistema, operando spostamenti di valuta e sfruttando appieno le funzionalità di questo protocollo.

La libreria BitcoinJS rende tutto questo molto semplice e veloce, come si può vedere nel codice qui sotto:

I commenti nel codice dovrebbero rendere la lettura e la comprensione piuttosto facile ma vediamo al volo i passi:

  1. per prima cosa inizializziamo l’oggetto della transazione
  2. poi inseriamo l’input, cioè l’hash della precedente transazione da cui prendiamo i fondi e l’indice (nel nostro caso “0”, cioè il primo)
  3. specifichiamo poi l’indirizzo di destinazione e l’ammontare in satoshi (cioè in milionesimi di bitcoin)
  4. inizializziamo la procedura di firma con  la nostra chiave privata e poi firmiamo transazione
  5. infine stampiamo a video la transazione (che è una lista di caratteri, criptata)

Eseguendo il codice qui sopra avremmo un output come questo:

transaction

Ecco lì la nostra transazione! Adesso possiamo analizzarla andando su https://blockchain.info/it/decode-tx e rivederne tutti i componenti oppure metterla direttamente nel network di Bitcoin copiandola e incollandola su https://blockchain.info/pushtx 

 

Per oggi è tutto – proseguiremo nel nostro viaggio all’interno di Bitcoin e Javascript nella prossima puntata!

The following two tabs change content below.
Silvio Porcellana
Silvio Porcellana è il fondatore di mob.is.it, il tool che centinaia di agenzie e professionisti di tutto il mondo utilizzano per creare con semplicità siti mobili e applicazioni native per i loro clienti. Tiene anche un podcast dove racconta ogni venerdì le sue avventure imprenditoriali, senza veli o segreti: Opus Digitalis