Développer une application Bitcoin est très simple, même si vous devez mettre du code à la main, du moment que vous avez un minimum de notions de programmation. S'il y a quelque chose de compliqué, c'est de comprendre quelles pièces entrent en jeu et comment. Le reste ne change pas excessivement par rapport à d'autres types d'applications, où en quelques heures vous pouvez avoir quelque chose de pleinement fonctionnel.
Cet article ne décrit pas comment créer une application étape par étape, mais présente plutôt un diagramme mental des pièces qui composent une application de base et comment elles interagissent.
Bien sûr, il est conseillé de comprendre les bases de Bitcoin.
Commençons. Nous devons penser de manière modulaire. D'une part, il y a notre application et de l'autre, Bitcoin.
Pour interagir avec Bitcoin, cela peut être fait de deux manières: installer votre propre nœud Bitcoin ou utilisez d'autres nœuds. Dans les deux cas, il est ensuite interagi via une API. Parfois, des API plus simples seront utilisées, telles que RESTful, et d'autres un peu plus lourdes en termes de JSON-RPC. Cependant, et heureusement, les programmeurs ont déjà des bibliothèques réutilisables open source pour simplifier les deux cas si vous le souhaitez.
Dans ce cas, imaginons que nous utilisons la version légèrement plus complexe, celle basée sur l'utilisation de votre propre nœud Bitcoin, qui donne plus d'autonomie et conduit à une meilleure compréhension du fonctionnement de Bitcoin.
Nœud Bitcoin
Un nœud Bitcoin est composé de 3 pièces notables:
- Le "démon": est connecté aux autres noeuds, qui vous permet de créer cela Réseau P2P où tous les événements qui se produisent dans le réseau sont échangés contre des sockets.
- Blockchain: la base de données qui enregistre les événements localement sur chaque nœud. Votre application n'utilisera pas vraiment cette base de données, mais la sienne si elle en a besoin.
- API: les événements sont convertis en réponse JSON et transmis via un port, il peut ou non être protégé des écouteurs externes.
Le nœud peut être installé sur un ordinateur Unix ou Windows et peut être appelé ou écouté à tout moment via le port qu'il a pour lui, avec ou sans authentification (au goût), étant un canal de communication bidirectionnelle: vous pouvez recevoir en temps réel ce que cela se produit dans le nœud et vous pouvez lui envoyer des informations pour faire des choses ou vous informer de choses. Comment configurer votre nœud Bitcoin en moins de 10 minutes.
Application
Bien sûr, vous pouvez développer l'application dans le langage que vous souhaitez et il ne faut pas forcément en savoir trop sur le fonctionnement du nœud Bitcoin.
Une application simple est composée d'un backend, d'une base de données et d'un frontend. Jusqu'à présent, rien de nouveau. Vous pouvez mettre une API ou pas ... comme d'habitude. Le backend chaque fois qu'il souhaite interagir avec le réseau Bitcoin peut appeler le RPC-API le nœud ou écoutez-le pour prendre des décisions.
Nous assemblons les pièces: Application + Node Bitcoin
Imaginons que nous voulions créer un explorateur de blockchain. Nous devrons simplement mettre notre backend à l'écoute de tous les événements qui se produisent dans notre nœud (qui nous informe de ce qui se passe sur le réseau) et enregistrer les informations que le nœud nous transmet dans notre base de données pour des consultations ultérieures du front où nous montrons Je l'ai demandé.
Il convient de noter qu'avoir une APP similaire à blockchain.info, un explorateur de blockchain, avec sa propre API RESTful en mode privé ou public pour interagir depuis votre application est une question de quelques minutes avec le développement open source appelé BitPay Insight.
Autres détails
L'envoi d'un paiement vers le réseau est également très simple, car une fois la transaction préparée dans le backend, ce qui est fait est de l'envoyer au nœud via le API JSON-RPC de sorte qu'il le relaie au reste des nœuds, et ceux à d'autres et ainsi de suite jusqu'à ce qu'il se répande dans tout le réseau. C'est pourquoi il est important d'avoir le nœud bien apparié et des pairs de qualité, car cela garantit qu'une transaction est retransmise très rapidement sur tout le réseau et entraînera la confirmation des transactions plus tôt.
Les adresses et les transactions sont préparées direct. Autrement dit, le nœud n'est pas nécessaire pour cela, juste pour obtenir les informations. Ensuite, la transaction est préparée et envoyée sur le réseau déjà crypté.
Logiquement, pour presque tous les langages, il existe déjà des bibliothèques qui simplifient tout où, une fois importées, leurs méthodes permettent de faire de même mais avec moins de code.
Deux bibliothèques sont normalement utilisées dans le backend (bien que les deux puissent être dans une, selon la bibliothèque). Le premier communique avec le nœud Bitcoin et le second est en charge de générer des adresses ou de préparer des transactions.
Ceci est un exemple simple et une vue d'ensemble d'une organisation simple typique, mais son utilisation et sa créativité entrent en jeu ici, c'est ce qui permet de créer de nouveaux cas d'utilisation.
Dans presque toutes les crypto-monnaies, leur nœud et la manière dont ils interagissent à l'échelle du schéma sont très similaires. Mettre en place un échange de crypto-monnaie (type Coinbase ou OKCoin) n'est pas loin des principes qui ont été exposés ici, oui, tout répliquer: backends équilibrés, plusieurs nœuds de chaque crypto-monnaie en cas de chute ou de déphasage ...
Un conseil: si c'est la première fois que vous développez sur Bitcoin, il est préférable de louer un serveur (par exemple l'un des OVH par 5 € / mois), c'est un petit investissement et ils vous donnent une machine dédiée prête à la "casser" autant de fois que vous en avez besoin. De plus, le téléchargement de la blockchain y sera beaucoup plus rapide et plus confortable. Ensuite, vous pouvez développer votre APP localement et utilisez le API depuis le nœud Bitcoin de la machine louée.
Avec cela, vous avez ce qu'il faut pour faire une esquisse mentale de l'endroit où commencer la création de votre application. Selon la langue que vous souhaitez utiliser, vous n'aurez qu'à rechercher les bibliothèques nécessaires. Par exemple, pour NodeJS vous pouvez utiliser Bitcore, qui contient tout ce dont vous avez besoin dans la même bibliothèque. Aussi BitcoinJS, bien que cela se concentre uniquement sur la partie travail direct de Bitcoin (créer des adresses, préparer des transactions ...).