Class ProofOfWorkSolver
java.lang.Object
fr.univ_eiffel.legotools.factory.security.ProofOfWorkSolver
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
ConstructorsConstructorDescriptionProofOfWorkSolver(String hashAlgorithm) Initialise le solveur avec l'algorithme spécifié. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidincrementByteArray(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).
-
Constructor Details
-
ProofOfWorkSolver
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.
-