Sviluppare un'applicazione Bitcoin è molto semplice, anche se devi inserire il codice a mano, purché tu abbia un minimo di nozioni di programmazione. Se c'è qualcosa di complicato in questo, è capire quali pezzi entrano in gioco e come. Il resto non cambia eccessivamente rispetto ad altri tipi di applicazioni, dove nel giro di poche ore si può avere qualcosa di perfettamente funzionante.

Questo articolo non spiega come creare un'APP passo dopo passo, ma piuttosto presenta un diagramma mentale dei pezzi che compongono un'APP di base e come interagiscono.

Ovviamente è consigliabile comprendere le basi di Bitcoin.

Cominciamo. Dobbiamo pensare in modo modulare. Da un lato c'è la nostra applicazione e dall'altro Bitcoin.

Per interagire con Bitcoin, può essere fatto in due modi: installando il tuo nodo Bitcoin o usa altri nodi. In entrambi i casi, viene quindi interagito tramite un'API. A volte verranno utilizzate API più semplici, come RESTful, e altre un po 'più macchinose in termini di JSON-RPC. Tuttavia, e fortunatamente, i programmatori hanno già librerie riutilizzabili open source per semplificare entrambi i casi, se lo si desidera.

In questo caso, immaginiamo di utilizzare la versione leggermente più complessa, quella basata sull'utilizzo del proprio nodo Bitcoin, che dà maggiore autonomia e porta a una migliore comprensione di come funziona Bitcoin.

Nodo Bitcoin

Un nodo Bitcoin è composto da 3 pezzi notevoli:

  • Il "demone": è connesso agli altri nodi, che ti consente di crearlo rete P2P dove tutti gli eventi che si verificano nella rete vengono scambiati per prese.
  • Blockchain: il database che registra gli eventi localmente su ogni nodo. La tua applicazione non utilizzerà realmente quel database, ma un altro proprio se lo richiede.
  • API: gli eventi vengono convertiti in una risposta JSON e trasmessi attraverso una porta, può o meno essere protetto da listener esterni.

Spiegazione dell'APP Bitcoin

Il nodo può essere installato su un computer Unix o Windows e può essere chiamato o ascoltato ogni volta che lo si desidera tramite la porta di cui dispone, con o senza autenticazione (a piacere), essendo un canale di comunicazione bidirezionale: si può ricevere in tempo reale quanto ciò accade nel nodo e puoi inviargli informazioni per fare cose o informarti di cose. Come configurare il tuo nodo Bitcoin in meno di 10 minuti.

Applicazione

Certo, puoi sviluppare l'applicazione nella lingua che desideri e non dovrebbe necessariamente sapere troppo sul funzionamento del nodo Bitcoin.

Una semplice applicazione è composta da un backend, un database e un frontend. Finora niente di nuovo. Puoi mettere un'API o no ... il solito. Il backend ogni volta che vuole interagire con la rete Bitcoin può chiamare il file API RPC il nodo o ascoltalo per prendere decisioni.

applicazione che utilizza bitcoin

Mettiamo insieme i pezzi: Applicazione + Bitcoin Node

Immaginiamo di voler creare un esploratore blockchain. Dovremo semplicemente mettere il nostro backend per ascoltare tutti gli eventi che si verificano nel nostro nodo (che ci informa di ciò che accade sulla rete) e salvare le informazioni che il nodo ci passa nel nostro database per consultazioni successive dal fronte dove mostriamo L'ho chiesto.

Integra l'applicazione Bitcoin

Va notato che avere un'APP simile a blockchain.info, un blockchain explorer, con la propria API RESTful in modalità privata o pubblica per interagire dalla tua applicazione è questione di un paio di minuti con lo sviluppo open source detto BitPay Insight.

Altri dettagli

Anche l'invio di un pagamento alla rete è molto semplice, poiché una volta che la transazione è stata preparata nel backend, quello che si fa è inviarla al nodo tramite il API JSON-RPC in modo che lo trasmetta al resto dei nodi, e quelli ad altri e così via fino a quando non si diffonde in tutta la rete. Questo è il motivo per cui è importante che il nodo sia ben abbinato e coppie di qualità, perché ciò garantisce che una transazione venga ritrasmessa attraverso la rete molto rapidamente e farà sì che le transazioni vengano confermate prima.

Vengono preparati indirizzi e transazioni offline. Cioè, il nodo non è necessario per questo, solo per ottenere le informazioni. Quindi la transazione viene preparata e inviata alla rete già crittografata.

Logicamente, per quasi tutte le lingue esistono già librerie che semplificano tutto dove, una volta importate, i loro metodi permettono di fare lo stesso ma con meno codice.

Normalmente nel backend vengono utilizzate due librerie (sebbene entrambe possano essere in una, a seconda della libreria). Il primo comunica con il nodo Bitcoin e il secondo si occupa di generare indirizzi o preparare transazioni.

Questo è un semplice esempio e una visione a volo d'uccello di una tipica organizzazione semplice, ma il suo utilizzo e la creatività qui entrano in gioco, è ciò che consente di creare nuovi casi d'uso.

In quasi tutte le criptovalute, il loro nodo e il modo in cui vengono interagiti alla scala dello schema è molto simile. La creazione di uno scambio di criptovaluta (tipo Coinbase o OKCoin) non è lontana dai principi che sono stati esposti qui, sì, replicare tutto: backend bilanciati, più nodi di ciascuna criptovaluta nel caso in cui uno cade o cade fuori fase ...

Un consiglio: se è la prima volta che sviluppi su Bitcoin, è meglio affittare un server (ad esempio uno dei file OVH tramite 5 € / mese), è un piccolo investimento e ti danno una macchina dedicata pronta a “rompersi” tutte le volte che ti serve. Inoltre, scaricare la blockchain da lì sarà molto più veloce e comodo. Quindi puoi sviluppare il tuo APP localmente e usa il API dal nodo Bitcoin della macchina noleggiata.

Con questo hai quello che serve per fare uno schizzo mentale di dove iniziare a creare la tua applicazione. A seconda della lingua che desideri utilizzare, dovrai solo cercare le librerie necessarie. Ad esempio, per NodeJS Puoi usare Bitcore, che ha tutto ciò di cui hai bisogno nella stessa libreria. Pure BitcoinJS, anche se questo si concentra solo sulla parte di lavoro offline di Bitcoin (creare indirizzi, preparare transazioni ...).