Class ProofOfWorkSolver

java.lang.Object
fr.univ_eiffel.legotools.factory.security.ProofOfWorkSolver

public class ProofOfWorkSolver extends Object
Moteur de résolution de "Preuve de Travail" (Proof of Work).

Cette classe effectue une recherche par force brute pour trouver une donnée dont le hachage (SHA-256) commence par une séquence précise. C'est ce calcul intensif qui prouve à l'usine que nous avons travaillé pour mériter des crédits.

  • Constructor Summary

    Constructors
    Constructor
    Description
    ProofOfWorkSolver(String hashAlgorithm)
    Initialise le solveur avec l'algorithme spécifié.
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    incrementByteArray(byte[] data)
    Incrémente un tableau d'octets comme s'il s'agissait d'un grand nombre entier.
    byte[]
    solve(byte[] dataPrefix, byte[] hashPrefix)
    Boucle de recherche par force brute (Minage).

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • ProofOfWorkSolver

      public ProofOfWorkSolver(String hashAlgorithm)
      Initialise le solveur avec l'algorithme spécifié.
      Parameters:
      hashAlgorithm - L'algorithme de hachage imposé par l'usine (généralement "SHA-256").
  • Method Details

    • incrementByteArray

      public static void incrementByteArray(byte[] data)
      Incrémente un tableau d'octets comme s'il s'agissait d'un grand nombre entier.

      Cela évite d'allouer de la mémoire à chaque itération de la boucle de minage, ce qui aurait ruiné les performances à cause du Garbage Collector.

      Parameters:
      data - Le tableau à incrémenter.
    • solve

      public byte[] solve(byte[] dataPrefix, byte[] hashPrefix)
      Boucle de recherche par force brute (Minage).

      Teste des millions de combinaisons jusqu'à trouver celle qui satisfait la condition du défi.

      Parameters:
      dataPrefix - Les données fixes imposées par le serveur.
      hashPrefix - Le préfixe hexadécimal que doit avoir le hash final.
      Returns:
      Le tableau complet (Prefixe + Nonce trouvé) qui valide le défi.