Tout sur le Bitcoin et les Altcoins

Tout sur le Bitcoin et les Altcoins

Modélisation et création des Blocs de la Blockchain

Cet article constitue la première partie du tutoriel vous permettant de créer votre propre Blockchain à l'aide du langage de programmation Java. Dans cet article, nous allons modéliser un bloc de la Blockchain.

De manière basique, un bloc contient les informations suivantes :

  • Un index
  • Un timestamp pour stocker sa date de création
  • Le Hash du précédent bloc
  • Des données stockées au sein du bloc. Dans le cadre du Bitcoin et des autres crypto monnaies, il s'agira de transactions.
  • Le Hash du bloc courant permettant de garantir l'intégrité de son contenu
Format de données d'un Bloc

Ceci nous donne donc le code suivant pour les propriétés de notre classe Block :

Fonction de Hachage cryptographique SHA-256

Le hash des blocks de notre Blockchain sera calculé en s'appuyant sur l'algorithme de hachage cryptographique SHA-256 dont vous trouverez tous les détails sur wikipedia. Par chance, le SDK du langage Java propose une implémentation en standard de cet algorithme. Il ne sera donc pas nécessaire de le coder nous-même. Les algorithmes de cryptographie proposés en standard par Java sont récupérables via la classe MessageDigest qui permet de récupérer l'instance d'un algorithme en passant en entrée de la méthode getInstance() son nom.

Il reste ensuite à passer en entrée de la méthode digest() une représentation textuelle du contenu du bloc à hacher pour obtenir en sortie le résultat de son hachage via l'algorithme SHA-256 sous la forme d'un tableau de bytes. Pour terminer, on transforme donc ce tableau de bytes en chaîne de caractères et on renvoie cette dernière en sortie de fonction :

Minage d'un Bloc

Notre bloc est quasiment fonctionnel. Il ne reste plus qu'à lui ajouter une méthode permettant de réaliser son minage. Pour les personnes désireuses d'en savoir plus sur le minage en général et celui des Bitcoins en particulier, nous vous conseillons de lire notre article détaillant en profondeur qu'est-ce que le minage de Bitcoin. Le processus de minage va nous permettre de résoudre l'énigme posée par la fameuse "Proof of Work". Etant donnée une certaine difficulté passée en entrée, nous allons devoir trouver un hachage pour le bloc commençant par un nombre de zéros donnés :

Le lecteur attentif aura remarqué la présence de la méthode statique zeros de la classe Utils dans ce code. Cette dernière permet simplement de retourner une chaîne de caractères contenant le nombre de zéros passé en paramètre en entrée. Quant à la propriété nonce, elle contiendra le nombre d'essais réalisés avant de résoudre la preuve de travail durant le minage du bloc.

Code complet de la classe Block

Pour terminer cette première partie, vous trouverez ci-dessous le code complet de la classe Block qui modélise un bloc de notre Blockchain :

Création de la Blockchain en s'appuyant sur les Blocs

Dans la suite de ce tutoriel consacré à la création d'une Blockchain en Java, nous allons passer à la création de la Blockchain à proprement parler en nous appuyant sur l'objet Bloc créé dans cet article. En route pour la création de la Blockchain en s'appuyant sur les Blocs !

Partager