Alzi la mano chi non ha mai sentito parlare di Bitcoin.

Bitcoin è passata dalla cosa più nerd ed eccitante (per i nerd) ad un totale fallimento, ad un Ponzi Scheme dove ti fregavano anche le mutande fino ad essere finalmente riconosciuta, oggi più o meno da tutti (quelli che contano nel mondo finanziario), come una tecnologia dalle potenzialità estremamente interessanti per il settore finanziario e per il futuro del mondo delle valute, scambio di valore e transazioni monetarie in generale (insomma, ‘na robetta… 😉 )

Che cos’è Bitcoin?

Ma esattamente che cosa è il “Bitcoin”? Con questo termine si intendono due cose:

Bitcoin – la tecnologia

Per prima cosa, Bitcoin è un software e un “paper” scritto e pubblicato nel 2008 da tale Satoshi Nakamoto (pseudonimo di uno o più personaggi la cui identità è tuttora un mistero) che ne spiega il funzionamento.

Il concetto fondamentale di Bitcoin è la “blockchain”, ovvero un gigantesco foglio Excel globale e condiviso fra tutti i computer che partecipano a questo esperimento dove vengono segnate le transazioni che avvengono fra i diversi “iscritti”. La caratteristica principale di questo mega file dove ogni riga è uno scambio (“alle ore 21:56:37 Silvio dà 2 bitcoin a Francesco”, “alle ore 21:56:42 Francesco dà 1 bitcoin a Roberto” e così via) è che è totalmente distribuito: non c’è una “banca” o un’altra organizzazione centrale che ne certifica e detiene l’autenticità ma il software e l’algoritmo stesso descritto da Satoshi spiegano come sono tutti i partecipanti al network ad assicurarne la correttezza, la veridicità e l’univocità.

Bitcoin – la valuta

Date queste caratteristiche, la blockchain si presta molto bene ad essere usata per “segnare” transazioni che possono avere un valore monetario, cioè essere usate per scambiarsi beni o servizi.

Lasciando stare per ora come vengono prodotti (o meglio, “minati”) i Bitcoin, se partiamo con un saldo positivo in testa a questo foglio ogni riga rappresenterà uno scambio di valore fra i diversi partecipanti al network, proprio come abbiamo visto prima nell’esempio di Silvio che trasferiva 2 bitcoin a Francesco e così via.

I Bitcoin come moneta hanno alcuni aspetti molto interessanti:

  • sono anonimi (o meglio, pseudonimi): non ci sono intermediari pubblici che devono certificare l’avvenuta transazione (tipo una banca) e dunque le transazioni sono “private”
  • sono irreversibili: una volta che la transazione è stata memorizzata nella blockchain non c’è modo di cancellarla (contrariamente a quanto avviene, ad esempio, con il chargeback delle carte di credito)
  • sono in numero finito: Nakamoto ha deciso che al massimo il sistema avrà 21 milioni di Bitcoin, non uno di più. Questo li rende “deflazionari” (cioè ce ne saranno sempre meno, visto quelli che si possono “perdere”) contrariamente a quello che avviene con le valute e monete tradizionali, che sono invece “inflazionarie” (le banche ne possono stampare quante ne vogliono, senza limiti e controlli)
  • sono “nativamente digitali” e dunque sono globali, hanno bassi costi di transazione (non legati all’ammontare scambiato, contrariamente ad altri sistemi di pagamento online tipo Paypal che sono invece in percentuale della somma inviata) e sono pressoché immediati (una transazione ci mette pochi minuti ad essere verificata ed inserita irreversibilmente nella blockchain, cioè nel “conto” globale di tutte le transazioni)

Una tecnologia aperta e per programmatori

Ma la cosa più stimolante per programmatori e smanettoni come siamo noi è che è una tecnologia totalmente “aperta”. Il sistema è per definizione peer-to-peer e ruota tutto intorno ad uno standard: basta conoscerne le specifiche per poter iniziare a programmare e scrivere il proprio client – e dunque entrarci magari in punta di piedi ma comunque dalla porta principale.

Ecco allora l’idea di HTML5 Today di iniziare una serie di articoli sulla tecnologia e la programmazione con Bitcoin: proprio per rendere questa piccola grande svolta nel mondo della moneta più alla portata di tutti gli appassionati abbiamo deciso di preparare una serie di appuntamenti periodici in cui spiegare ed esplorare come si fa a navigare la blockchain, preparare transazioni e interagire sul network con semplici strumenti web e un po’ di JavaScript.

BitcoinJS

logo_bitcoinjsProprio perchè abbiamo scelto JavaScript come linguaggio di programmazione la libreria migliore, più diffusa e utilizzata da tutta la community di Bitcoin è BitcoinJS.

Si tratta di una libreria basata su node.js e che può essere usata anche all’interno di un browser e una pagina web e dunque che si presta molto bene per uno sviluppo veloce, diretto ma al tempo stesso completo.

Installazione

Il primo step che vedremo è l’installazione della libreria.

Visto che, come abbiamo detto, si basa su node.js dobbiamo per prima cosa scaricare e installare questo “motore JavaScript” e possiamo farlo ad esempio da qui: https://nodejs.org/en/download/

Una volta che abbiamo installato node.js possiamo procedere con l’installazione dei componenti che ci servono. Andiamo allora nella cartella dove lavoreremo al nostro progetto BitcoinJS e digitiamo questo comando al prompt:

(l’unica cosa a cui prestare attenzione sono i permessi di scrittura: questa operazione potrebbe richiederci di diventare Admin o root, nel qual caso possiamo aggiungere un sudo  prima del comando)

A questo punto dovremmo avere una cartella “node_modules” nella directory in cui ci troviamo e quindi possiamo procedere con la creazione della libreria da usare nelle nostre pagine web, così:

Questo creerà il file bitcoinjs.min.js che è quello che dovremo includere nelle nostre pagine per utilizzare la libreria.

Test

Solo per testare che i vari componenti siano stati installati correttamente proviamo a generare una chiave privata e un indirizzo pubblico. Nella prossima puntata vedremo che cosa vuol dire tutto ciò ma per adesso assicuriamoci solo che tutto funzioni bene.

Creiamo una paginetta così:

Questo script non fa altro che includere la libreria che abbiamo appena creato e poi richiamare la funzione ECPair.makeRandom() per generare una chiave privata e una pubblica (che è l’indirizzo a cui farci mandare i bitcoin, ma questo lo vedremo poi).

Se è tutto ok quando clicchiamo su “Genera un indirizzo (chiave privata e pubblica)” nella nostra consolle dovrebbe apparire una cosa del genere:

Schermata 2015-12-22 alle 07.14.42

Benissimo! La libreria funziona e siamo pronti ad entrare nel fantastico mondo dei Bitcoin – dalla porta principale! :)

 

Questo è il termine della prima lezione, molto introduttiva e semplice ma che speriamo possa avervi fatto venire voglia di esplorare meglio questo mondo. La nostra intenzione è proseguire con altre puntate ma vorremmo sapere prima di tutto da voi, dalla nostra community, che cosa ne pensate.

E’ un argomento interessante? Proseguiamo?

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