Class AccountRefiller
java.lang.Object
fr.univ_eiffel.legotools.factory.api.AccountRefiller
Gère le système de "minage" pour recharger le solde du compte client.
Cette classe implémente le protocole Proof-of-Work (Preuve de Travail) exigé par l'API de l'usine :
- 1. Demande d'un défi cryptographique (Challenge).
- 2. Résolution locale du défi (calcul intensif CPU).
- 3. Envoi de la solution pour obtenir des crédits.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordStructure encapsulant la réponse de solde.static final recordStructure représentant un défi cryptographique reçu du serveur.static final recordStructure représentant la réponse à envoyer au serveur. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ProofOfWorkSolverSolveur de preuve de travail utilisant SHA-256. -
Constructor Summary
ConstructorsConstructorDescriptionAccountRefiller(String serverUrl, String email, String apiKey) Initialise le rechargeur de compte avec les identifiants API. -
Method Summary
Modifier and TypeMethodDescriptionRécupère le solde actuel pour confirmer le rechargement.Récupère un nouveau défi auprès du serveur.refill()Exécute le processus complet de rechargement (Minage).byte[]solveChallenge(AccountRefiller.Challenge challenge) Résout le défi cryptographique localement.voidsubmitChallengeAnswer(AccountRefiller.ChallengeAnswer challengeAnswer) Envoie la solution trouvée au serveur pour validation.
-
Field Details
-
POW_SOLVER
Solveur de preuve de travail utilisant SHA-256.
-
-
Constructor Details
-
AccountRefiller
Initialise le rechargeur de compte avec les identifiants API.- Parameters:
serverUrl- L'URL de base de l'usineemail- L'email du compte client.apiKey- La clé secrète pour signer les requêtes.
-
-
Method Details
-
fetchChallenge
Récupère un nouveau défi auprès du serveur. Le serveur envoie un préfixe de données et un préfixe de hash cible.- Returns:
- L'objet Challenge contenant les contraintes à résoudre.
- Throws:
IOException- Si l'API est inaccessible ou rejette les identifiants.
-
solveChallenge
Résout le défi cryptographique localement.- Parameters:
challenge- Le défi à résoudre.- Returns:
- Un tableau d'octets représentant la solution trouvée (nonce).
-
submitChallengeAnswer
public void submitChallengeAnswer(AccountRefiller.ChallengeAnswer challengeAnswer) throws IOException Envoie la solution trouvée au serveur pour validation.- Parameters:
challengeAnswer- La réponse formatée contenant la solution.- Throws:
IOException- Si la connexion échoue ou si la réponse est rejetée (Status != 200).
-
fetchAccountBalance
Récupère le solde actuel pour confirmer le rechargement.- Returns:
- Le solde du compte sous forme de chaîne.
- Throws:
IOException- Si la requête échoue.
-
refill
Exécute le processus complet de rechargement (Minage).- Returns:
- Le nouveau solde après rechargement.
- Throws:
IOException- En cas d'erreur réseau ou de validation.
-