Tout sur le Bitcoin et les Altcoins
Ce tutoriel vous permettant de découvrir comment créer votre propre Blockchain en Java se poursuit. Après une première partie détaillant la modélisation et la création des Blocs, nous passons à la seconde partie qui va vous guider dans la création de la Blockchain en s'appuyant sur les Blocs créés précédemment.
La Blockchain, que nous avions défini en profondeur dans "La Blockchain pour les Nuls", est une base de données distribuée garantissant l'intégrité des données la composant.
La chaîne de blocs va tout d'abord se voir dotée d'une propriété permettant de définir le niveau de difficulté que l'on souhaite pour le minage de ses blocs durant la résolution de la preuve de travail. Ensuite, la Blockchain stockera ses blocs au sein d'un objet List du langage Java ce qui nous donne le début de déclaration suivant pour l'objet Blockchain :
Notre Blockchain doit permettre la création de nouveaux blocs ainsi que leur minage en tenant compte de la difficulté qui lui est associée. Nous ajoutons donc une méthode newBlock permettant de générer un nouveau bloc associé au dernier bloc connu de la Blockchain. Le minage du bloc se faisant quant à lui au moment de l'ajout du bloc à la Blockchain au sein d'une méthode dédiée addBlock :
La Blockchain doit garantir l'intégrité des données des blocs en son sein afin de rester valide. Pour ce faire, nous allons ajouter différentes méthodes au sein de notre Blockchain afin de vérifier que :
Afin d'implémenter ces méthodes, il convient de définir les critères de validité que nous devons considérer. Ainsi, le premier bloc est valide si son index est égal à 0, qu'il ne possède pas de previousHash renseigné et enfin si son hash est correct. Un nouveau bloc est valide en regard du bloc précédent de la Blockchain si son index est incrémenté de 1 par rapport à l'index du bloc précédent, son champ previousHash est renseigné avec le hash du bloc précédent et enfin si son hash est lui-même cohérent. Enfin, une Blockchain est valide et l'intégrité de ses données est garantie lorsque le premier bloc est valide et que chaque bloc qui la compose est valide en regard du bloc qui le précède. Tout ceci nous donne le code suivant :
Notre classe Blockchain est quasiment complète. Il ne nous reste plus qu'à surcharger sa méthode toString() afin de pouvoir renvoyer une représentation textuelle facilitant la visualisation de son contenu. On obtient ainsi le code Java suivant :
Tous les éléments permettant le fonctionnement d'une Blockchain en mode local sont réalisés. Il est désormais temps de mettre notre Blockchain Java en action. En route pour la mise en action de notre Blockchain en Java.