diff --git a/src/main/java/fr/miage/App.java b/src/main/java/fr/miage/App.java
index 80202106d714ce432056a15935a629d5e802fd71..0b47048992d8ac7a168402e96777981a19ccbeec 100644
--- a/src/main/java/fr/miage/App.java
+++ b/src/main/java/fr/miage/App.java
@@ -1,12 +1,6 @@
 package fr.miage;
 
 import java.security.NoSuchAlgorithmException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
 import fr.miage.threads.Mineur;
 import fr.miage.threads.TransactionCreator;
 
@@ -15,72 +9,13 @@ import fr.miage.threads.TransactionCreator;
  */
 public class App {
     public static synchronized void main(String[] args) throws NoSuchAlgorithmException, InterruptedException {
-        System.out.println("Début de la blockchain");
-        // Création de 2 wallets
-
-        Wallet bobWallet = new Wallet("bob");
-        Wallet aliceWallet = new Wallet("alice");
-        Wallet charlieWallet = new Wallet("charlie");
-        Wallet daveWallet = new Wallet("dave");
-        Wallet eveWallet = new Wallet("eve");
-
-        List<Wallet> wallets = new ArrayList<Wallet>();
-        wallets.add(bobWallet);
-        wallets.add(aliceWallet);
-        wallets.add(charlieWallet);
-        wallets.add(daveWallet);
-        wallets.add(eveWallet);
-
-        Blockchain blockchain = new Blockchain("Blockchain de Jérémy BRODIER et Corentin SAINT-DIZIER", wallets);
-
-        // wallets.add(mineur.getWallet());
 
-        System.out.println("Liste des wallets de la blockchain : \n");
+        Blockchain blockchain = new Blockchain("Blockchain de Jérémy BRODIER et Corentin SAINT-DIZIER");
 
-        // Thread du créateur de transaction
         TransactionCreator transactionCreator = new TransactionCreator(blockchain);
         Mineur mineur = new Mineur(blockchain);
         transactionCreator.start();
         mineur.start();
 
-        // System.out.println("Wallet de bob : " + bobWallet.getUtxos());
-        // System.out.println("Wallet de alice : " + aliceWallet.getUtxos());
-        // System.out.println("Utxos du wallet de bob : " + bobWallet.getUtxos());
-        // System.out.println("Utxos du wallet de alice : " + aliceWallet.getUtxos());
-        // Transaction transaction = new Transaction(bobWallet, aliceWallet, 2,
-        // EnumTypeTransaction.NORMAL);
-        // System.out.println("Transaction : ");
-        // System.out.println("Bob envoie : " + transaction.getInputs());
-        // System.out.println("Alice reçoit : " + transaction.getOutputs());
-        // System.out.println(transaction);
-
-        // int i = 1;
-        // while (blockchain.transactionsPool.size() < 20) {
-        // System.out.println("Transaction n°" + i);
-        // blockchain.createTrasaction();
-        // i++;
-        // }
-        // System.out.println("Transactions pool count : " +
-        // blockchain.transactionsPool.size());
-
-        // // print all utxo in the utxo set
-        // for (UTxO utxo : Blockchain.utxos) {
-        // System.out.println("UTXO ID: " + utxo);
-        // }
-
-        // TODO : S'asurer de créer une bonne transaction avec les UTxO etc...
-        // TODO : Faire la signature de la transaction
-        //
-
-        // Set<Wallet> wallets = new HashSet<Wallet>() {
-        // {
-        // add(bobWallet);
-        // add(aliceWallet);
-        // }
-        // };
-        // // Création de la blockchain
-
-        // // MinageManager minageManager = new MinageManager(blockchain);
-        // // minageManager.mineABloc();
     }
 }
diff --git a/src/main/java/fr/miage/Blockchain.java b/src/main/java/fr/miage/Blockchain.java
index 488436ddea3d8c5e9b4c5b8b92f23cc554195397..4feccc2768c44b16fd30f0be059773c4bdc2a603 100644
--- a/src/main/java/fr/miage/Blockchain.java
+++ b/src/main/java/fr/miage/Blockchain.java
@@ -7,7 +7,6 @@ import java.security.PublicKey;
 import java.security.Signature;
 import java.security.SignatureException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -23,9 +22,9 @@ public class Blockchain {
     public static Set<UTxO> utxos = new HashSet<>();
     public static Set<Transaction> transactionsPool = new HashSet<>();
 
-    public Blockchain(String name, List<Wallet> wallets) {
+    public Blockchain(String name) throws NoSuchAlgorithmException, InterruptedException {
         this.name = name;
-        this.wallets = wallets;
+        this.wallets = setupWallet();
         // Création du premier bloc contenant les transactions de coinbase
         this.blocs = new LinkedList<>() {
             {
@@ -36,10 +35,17 @@ public class Blockchain {
         System.out.println("[BLOC] --- Hash du genesis bloc : " + this.blocs.getFirst().getHash());
     }
 
+    public List<Wallet> setupWallet() throws NoSuchAlgorithmException, InterruptedException {
+        List<Wallet> wallets = new ArrayList<>();
+        for (int i = 0; i < 20; i++) {
+            wallets.add(new Wallet("Wallet" + i));
+        }
+        return wallets;
+    }
+
     // Permet de créer une transaction avec deux wallets aléatoire et de l'ajouter
     // dans la transaction pool;
     public void createTrasaction() {
-        // Random wallet selection
         List<Wallet> walletsCopy = new ArrayList<>();
         walletsCopy.addAll(wallets);
         Wallet walletSender = selectWallet(walletsCopy);
@@ -48,29 +54,16 @@ public class Blockchain {
         walletsCopy.remove(walletReceiver);
         double amountWalletSender = walletSender.getUtxos().stream().mapToDouble(utxo -> utxo.getMontant()).sum();
         double randomAmountToSend = new Random().nextDouble(amountWalletSender);
-
-        // System.out.println("Amount to send : " + randomAmountToSend);
-        // System.out.println("Envoie de " + walletSender.getName() + " à " +
-        // walletReceiver.getName());
-        // System.out.println();
-        // System.out.println("Utxos de " + walletSender.getName() + " : " +
-        // walletSender.getUtxos());
-        // System.out.println("Utxos de " + walletReceiver.getName() + " : " +
-        // walletReceiver.getUtxos());
-        // System.out.println();
         if (walletSender.getUtxos().isEmpty() || walletReceiver.getUtxos().isEmpty()) {
             System.out.println("Wallets vides");
             return;
         }
-        System.out.println("[TRANSACTION] --- Création d'une transaction =========================================");
+        System.out.println("[TRANSACTION] --- Création d'une transaction =========================================\n");
         System.out.println("            " + walletSender.getName() + " envoie " + randomAmountToSend + " à "
                 + walletReceiver.getName() + "\n");
-
         Transaction tx = new Transaction(walletSender, walletReceiver, randomAmountToSend, EnumTypeTransaction.NORMAL);
-
         String transactionData = getTransactionData(tx);
         try {
-
             byte[] signature = sign(transactionData, walletSender.getKeyPair().getPrivate());
             System.out.println("[SIGNATURE] --- Signature de la transaction : " + signature);
             tx.setSignature(signature);
diff --git a/src/main/java/fr/miage/MinageManager.java b/src/main/java/fr/miage/MinageManager.java
index b2b80508aa1366c022ac1416393c58a8867e2b5a..ee068ff363c917afdfef31ff0ee4baf7bf800e9e 100644
--- a/src/main/java/fr/miage/MinageManager.java
+++ b/src/main/java/fr/miage/MinageManager.java
@@ -6,20 +6,18 @@ import java.text.NumberFormat;
 import java.time.Instant;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Optional;
 import java.util.OptionalDouble;
 import java.util.UUID;
 import java.util.stream.DoubleStream;
+import java.util.stream.Stream;
 
 import org.apache.commons.codec.digest.DigestUtils;
-
 import fr.miage.blocs.Bloc;
 import fr.miage.blocs.BlocHeader;
-import fr.miage.threads.Mineur;
 
 public class MinageManager {
 
-    private static final int DIFFICULTY = 21;
+    private static final int DIFFICULTY = 6;
     private static double MAX_NONCE = Math.pow(2, 32);
     private Blockchain blockchain;
 
@@ -27,39 +25,23 @@ public class MinageManager {
         this.blockchain = blockchain;
     }
 
-    // public Bloc mineABloc() {
-    // Bloc previousBloc = blockchain.getLastBloc();
-    // return mineABloc(previousBloc);
-    // }
-
-    public static Bloc mineABloc(Bloc previousBloc, List<Transaction> transactions) {
-        Bloc bloc = new Bloc();
-        String hashGenerate = "";
+    public static void mineABloc(Bloc bloc) {
+        int nonce = 0;
         bloc.setCoinbase(addCoinbaseTransaction());
-        BlocHeader blocHeader = new BlocHeader(transactions.toString(), previousBloc.getHash(),
-                Instant.now().toEpochMilli());
-
-        String header = blocHeader.toString();
-        double target = MinageManager.computeTarget(header);
-        OptionalDouble result = MinageManager.findNonce(header, target); // Difficulty
-        if (result.isPresent()) {
-            NumberFormat formatter = new DecimalFormat("#0");
-            System.out.println("Nonce trouvé : " + formatter.format(result.getAsDouble()));
-            hashGenerate = generateHash(header, result.getAsDouble());
-            bloc.setHash(hashGenerate);
-            bloc.setTransactions(transactions);
-        } else {
-            System.out.println("Aucun nonce trouvé");
-            hashGenerate = generateHash("", MAX_NONCE);
-            bloc.setHash(hashGenerate);
-            bloc.setTransactions(transactions);
+        String target = new String(new char[DIFFICULTY]).replace('\0', '0');
+        System.out.println("[MINAGE] ---- Minage en cours...");
+        while (!bloc.getHash().substring(0, DIFFICULTY).equals(target)) {
+            nonce++;
+            bloc.setNonce(nonce);
+            bloc.generateHash();
         }
-        return bloc;
+        System.out.println("Nonce trouvé : " + nonce);
+        System.out.println("Hash trouvé : " + bloc.getHash());
     }
 
     public static Coinbase addCoinbaseTransaction() {
         Coinbase coinbase = new Coinbase();
-        List<UTxO> outputs = Arrays.asList(new UTxO(coinbase.getId(), null, 5.0));
+        List<UTxO> outputs = Arrays.asList(new UTxO(coinbase.getId(), UUID.randomUUID(), null, 5.0));
         return new Coinbase(outputs, null, EnumTypeTransaction.COINBASE);
     }
 
@@ -67,19 +49,4 @@ public class MinageManager {
         return Math.pow(2, (256 - DIFFICULTY));
     }
 
-    public static String generateHash(String header, Double nonce) {
-        return DigestUtils.sha256Hex(header + nonce);
-    }
-
-    public static OptionalDouble findNonce(String header, double target) {
-        return (OptionalDouble) DoubleStream.iterate(0, i -> i + 1).limit((long) Math.pow(2, DIFFICULTY))
-                .filter(nonce -> new BigInteger(DigestUtils.sha256Hex(header + nonce), 16).doubleValue() < target)
-                .findFirst();
-    }
-
-    record Result(String hash, double nonce) {
-    }
-
-    record Compute(double hash, double nonce) {
-    }
 }
diff --git a/src/main/java/fr/miage/Transaction.java b/src/main/java/fr/miage/Transaction.java
index 22709036804fb9461d84ee47e51086883799e03a..10cfdd3cd6f372495fc8b9362abe7e44a8c42e19 100644
--- a/src/main/java/fr/miage/Transaction.java
+++ b/src/main/java/fr/miage/Transaction.java
@@ -1,12 +1,8 @@
 package fr.miage;
 
-import java.security.NoSuchAlgorithmException;
-import java.security.PrivateKey;
 import java.security.PublicKey;
-import java.security.Signature;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Set;
 import java.util.UUID;
 
 public class Transaction {
@@ -36,10 +32,10 @@ public class Transaction {
                 this.receiver = receiver;
                 this.typeTransaction = typeTransaction.NORMAL;
                 this.id = UUID.randomUUID();
-                UTxO utxoAmount = new UTxO(this.id, receiver.getKeyPair().getPublic(), amount);
+                UTxO utxoAmount = new UTxO(this.id, UUID.randomUUID(), receiver.getKeyPair().getPublic(), amount);
 
                 this.receiver.addUTxO(utxoAmount);
-                UTxO utxoRest = new UTxO(this.id, sender.getKeyPair().getPublic(),
+                UTxO utxoRest = new UTxO(this.id, UUID.randomUUID(), sender.getKeyPair().getPublic(),
                         getTotalAmountUtxoInput(inputs) - amount);
                 this.sender.addUTxO(utxoRest);
                 this.outputs = Arrays.asList(utxoAmount, utxoRest);
@@ -58,21 +54,17 @@ public class Transaction {
     }
 
     public void printUtxoDetails(List<UTxO> inputs, List<UTxO> outputs) {
-        System.out.println("                        UTxO inputs : \n");
+        System.out.println("                        UTxO inputs ========");
         for (UTxO utxo : inputs) {
-            System.out.println("                        " + utxo.getUuid() + " : " + utxo.getMontant());
+            System.out.println("                        " + utxo.getIdentifiant() + " : " + utxo.getMontant());
         }
-        System.out.println("                        UTxO outputs : ");
+        System.out.println("                        UTxO outputs ======== ");
         for (UTxO utxo : outputs) {
-            System.out.println("                        " + utxo.getUuid() + " : " + utxo.getMontant());
+            System.out.println("                        " + utxo.getIdentifiant() + " : " + utxo.getMontant());
         }
+        System.out.println();
     }
 
-    // public void signTransaction() throws NoSuchAlgorithmException{
-    // Signature signature = Signature.getInstance("SHA256withRSA");
-    // signature.initSign(sender.getPrivateKey());
-    // }
-
     public double getTotalAmountUtxoInput(List<UTxO> inputs) {
         double total = 0;
         for (UTxO utxo : inputs) {
diff --git a/src/main/java/fr/miage/UTxO.java b/src/main/java/fr/miage/UTxO.java
index 4491a4c775ae18f264353ccc86cadb6627e947b9..a2d0c33818b3a0cc9a26d2e5181041e7dd016ecc 100644
--- a/src/main/java/fr/miage/UTxO.java
+++ b/src/main/java/fr/miage/UTxO.java
@@ -6,11 +6,13 @@ import java.util.UUID;
 public class UTxO implements Comparable {
     // UTXO : Hash qui renvoie a la transaction d'avant
     private UUID uuid; // identifiant (transaction de provenances)
-    private PublicKey ownerAdresss; // clé publique du wallet
+    private UUID identifiant; // identifiant de l'utxo
+    private PublicKey ownerAdresss;// clé publique du wallet
     private double montant;
 
-    public UTxO(UUID provenance, PublicKey ownerAdresss, double montant) {
+    public UTxO(UUID provenance, UUID id, PublicKey ownerAdresss, double montant) {
         this.uuid = provenance;
+        this.identifiant = id;
         this.ownerAdresss = ownerAdresss;
         this.montant = montant;
     }
@@ -29,7 +31,7 @@ public class UTxO implements Comparable {
 
     @Override
     public String toString() {
-        return "UTxO [uuid=" + uuid + ", montant=" + montant + "]";
+        return "UTxO [uuid=" + identifiant + ", montant=" + montant + "]";
     }
 
     @Override
@@ -43,4 +45,12 @@ public class UTxO implements Comparable {
             return 0;
         }
     }
+
+    public UUID getIdentifiant() {
+        return identifiant;
+    }
+
+    public void setIdentifiant(UUID identifiant) {
+        this.identifiant = identifiant;
+    }
 }
diff --git a/src/main/java/fr/miage/Wallet.java b/src/main/java/fr/miage/Wallet.java
index 0c31fdd1054cf43ed8e395ffca9d8c708abe16ca..47d0cff0b0ae5e9adea21ce6fba61767d0e67697 100644
--- a/src/main/java/fr/miage/Wallet.java
+++ b/src/main/java/fr/miage/Wallet.java
@@ -1,31 +1,13 @@
 package fr.miage;
 
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
-import java.security.InvalidKeyException;
 import java.security.KeyPair;
 import java.security.KeyPairGenerator;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
-import java.security.PrivateKey;
-import java.security.PublicKey;
-import java.security.Signature;
-import java.security.SignatureException;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
 public class Wallet {
-    // private PublicKey publicKey;
-    // private PrivateKey privateKey; // pour la signature
     private KeyPair keyPair;
     private double solde;
     private List<UTxO> utxos;
@@ -37,46 +19,6 @@ public class Wallet {
         this.utxos = new ArrayList<UTxO>();
     }
 
-    // public void initWallet() throws NoSuchAlgorithmException {
-    // this.publicKey = hashSha256(this.privateKey);
-    // this.utxos = new ArrayList<>();
-    // }
-
-    // public void createKeyPair(String privateKey, String name) throws
-    // InterruptedException {
-
-    // String command = "keytool -genkeypair -alias wallet_" + name + " -keyalg RSA
-    // -keysize 2048 -dname \"CN=" + name
-    // + "\" -validity 365 -storetype JKS -keystore keystore.jks -storepass \"" +
-    // privateKey + "\"";
-
-    // System.out.println(command);
-    // ProcessBuilder processBuilder = new ProcessBuilder(command.split("\\s+"));
-    // processBuilder.redirectErrorStream(true);
-    // try {
-    // Process process = processBuilder.start();
-    // OutputStream outputStream = process.getOutputStream();
-    // outputStream.write("\n".getBytes(StandardCharsets.UTF_8));
-    // outputStream.flush();
-    // outputStream.close();
-    // InputStream inputStream = process.getInputStream();
-    // InputStream errorStream = process.getErrorStream();
-    // byte[] buffer = new byte[1024];
-    // int bytesRead;
-    // while ((bytesRead = inputStream.read(buffer)) != -1) {
-    // System.out.write(buffer, 0, bytesRead);
-    // }
-    // while ((bytesRead = errorStream.read(buffer)) != -1) {
-    // System.err.write(buffer, 0, bytesRead);
-
-    // }
-    // } catch (IOException e) {
-    // e.printStackTrace();
-    // System.out.println("Erreur lors de la création du keypair");
-    // }
-    // System.out.println("Le wallet de " + name + " a été créé avec succès");
-    // }
-
     public KeyPair generateKeyPair() throws NoSuchAlgorithmException {
         KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
         keyPairGenerator.initialize(2048);
@@ -84,12 +26,7 @@ public class Wallet {
         return keyPair;
     }
 
-    private String hashSha256(String privateKey) throws NoSuchAlgorithmException {
-        MessageDigest md = MessageDigest.getInstance("SHA-256");
-        byte[] hash = md.digest(privateKey.getBytes(StandardCharsets.UTF_8));
-        return new String(hash, StandardCharsets.UTF_8);
-    }
-
+    @SuppressWarnings("unchecked")
     public List<UTxO> getUTxOsForTransaction(double amount) {
         List<UTxO> result = new ArrayList<>();
         double res = 0;
@@ -114,42 +51,6 @@ public class Wallet {
 
     }
 
-    // public void loadPrivateKey() throws UnrecoverableKeyException,
-    // KeyStoreException, NoSuchAlgorithmException,
-    // CertificateException, FileNotFoundException, IOException {
-    // KeyStore keyStore = KeyStore.getInstance("JKS");
-    // keyStore.load(new FileInputStream("keystore.jks"), null); // replace null by
-    // privateKey
-    // PrivateKey privateKey = (PrivateKey) keyStore.getKey("wallet_" + this.name,
-    // null); // replace null by //
-    // // privateKey// // (password)
-    // }
-
-    // public void publishPublicKey() {
-    // String command = "keytool -exportcert -alias wallet_" + name
-    // + " -storetype JKS -keystore keystore.jks -file certificate.cer -rfc
-    // -storepass \"" + privateKey + "\"";
-    // System.out.println(command);
-    // ProcessBuilder processBuilder = new ProcessBuilder(command.split("\\s+"));
-    // try {
-    // Process process = processBuilder.start();
-    // } catch (IOException e) {
-    // e.printStackTrace();
-    // System.out.println("Erreur lors de la publication de la clé publique");
-    // }
-    // }
-
-    // public void loadPublicKeyForVerification() {
-    // String command = "keytool -exportcert -alias wallet_" + name
-    // + " -storetype JKS -keystore keystore.jks -file certificate.cer -rfc
-    // -storepass \"" + privateKey + "\"";
-
-    // }
-
-    // public String getPublicKey() {
-    // return this.publicKey;
-    // }
-
     public String getName() {
         return name;
     }
@@ -158,10 +59,6 @@ public class Wallet {
         this.name = name;
     }
 
-    // public String getPrivateKey() {
-    // return this.privateKey;
-    // }
-
     public List<UTxO> getUtxos() {
         return this.utxos;
     }
diff --git a/src/main/java/fr/miage/blocs/Bloc.java b/src/main/java/fr/miage/blocs/Bloc.java
index a55e7a42d744136e329fd4fc91e3ae211575c0ea..05c03f9a633fef51302b4a704629a393cc6c3503 100644
--- a/src/main/java/fr/miage/blocs/Bloc.java
+++ b/src/main/java/fr/miage/blocs/Bloc.java
@@ -20,46 +20,74 @@ import fr.miage.Transaction;
 import fr.miage.UTxO;
 import fr.miage.Wallet;
 
-import fr.miage.Blockchain;
-import fr.miage.Coinbase;
-import fr.miage.EnumTypeTransaction;
-import fr.miage.Transaction;
-import fr.miage.UTxO;
-
 public class Bloc {
     private String hash;
     private List<Transaction> transactions; // transaction à insérer dans le bloc
-    private String header; // Contient le nonce et le hash du bloc précédent
-
+    // private String header; // Contient le nonce et le hash du bloc précédent
+    private String previousHash;
+    private long time;
+    // private String transactionsInfo;
+    private int nonce;
     private Coinbase coinbase;
 
-    public Bloc(String hash, List<Transaction> transactions) {
-        this.hash = hash;
+    public Bloc(List<Transaction> transactions, String previousHash) {
+        this.previousHash = previousHash;
+        this.time = Instant.now().toEpochMilli();
+        this.nonce = 0;
         this.transactions = transactions;
+        this.hash = generateHash();
+
+    }
+
+    public String generateHash() {
+        String hash = DigestUtils.sha256Hex(this.transactions.toString() + this.previousHash + this.time + this.nonce);
+        this.hash = hash;
+        return hash;
+    }
+
+    public void setNonce(int nonce) {
+        this.nonce = nonce;
+    }
+
+    public void setPreviousHash(String previousHash) {
+        this.previousHash = previousHash;
     }
 
-    public Bloc() {
+    public void setTime(long time) {
+        this.time = time;
+    }
+
+    public int getNonce() {
+        return nonce;
+    }
+
+    public String getPreviousHash() {
+        return previousHash;
+    }
+
+    public long getTime() {
+        return time;
     }
 
     public String getHash() {
         return hash;
     }
 
-    public String getHeader() {
-        return header;
-    }
+    // public String getHeader() {
+    // return header;
+    // }
 
     public void setHash(String hash) {
         this.hash = hash;
     }
 
-    public void setHeader(String header) {
-        this.header = header;
-    }
+    // public void setHeader(String header) {
+    // this.header = header;
+    // }
 
-    public Bloc(List<Transaction> transactions) {
-        this.transactions = transactions;
-    }
+    // public Bloc(List<Transaction> transactions) {
+    // this.transactions = transactions;
+    // }
 
     public List<Transaction> getTransactions() {
         return transactions;
@@ -74,7 +102,7 @@ public class Bloc {
         List<Transaction> transactions = new ArrayList<Transaction>();
         for (Wallet wallet : wallets) {
             int amount = RandomNumberGenerator.getRandomNumber(1, 20);
-            UTxO utxo = new UTxO(null, wallet.getKeyPair().getPublic(), amount);
+            UTxO utxo = new UTxO(null, UUID.randomUUID(), wallet.getKeyPair().getPublic(), amount);
             wallet.addUTxO(utxo);
             Blockchain.utxos.add(utxo);
             List<UTxO> utxos = new ArrayList<UTxO>() {
@@ -87,28 +115,10 @@ public class Bloc {
             transactions.add(coinbase);
         }
         // System.out.println("Set UTxO INITIAL " + Blockchain.utxos);
-        BlocHeader blocHeader = new BlocHeader("", "", Instant.now().toEpochMilli());
-        String header = blocHeader.toString();
-        String hash = MinageManager.generateHash(header, 0.0);
-        return new Bloc(hash, transactions);
-    }
-
-    // BlocHeader blocHeader = new BlocHeader("", Instant.now().toEpochMilli(), 0);
-    // String header = blocHeader.toString();
-    // String hash = generateHash(header, transactions);return new
-    // Bloc(hash,transactions);
-
-    // public static Bloc createBloc(List<Transaction> transactions, String
-    // previousHash) {
-    // BlocHeader blocHeader = new BlocHeader(previousHash,
-    // Instant.now().toEpochMilli(), 0);
-    // String header = blocHeader.toString();
-    // String hash = generateHash(header, transactions);
-    // return new Bloc(hash, transactions);
-    // }
-
-    private static String generateHash(String header, List<Transaction> transactions) {
-        return DigestUtils.sha256Hex(header + transactions.toString());
+        // BlocHeader blocHeader = new BlocHeader("", "", Instant.now().toEpochMilli());
+        // String header = blocHeader.toString();
+        // String hash = MinageManager.generateHash(header, 0.0);
+        return new Bloc(transactions, "0000");
     }
 
     public String getTransactionsString() {
@@ -140,10 +150,8 @@ public class Bloc {
 
     @Override
     public String toString() {
-        return "{" +
-                " hash='" + getHash() + "'" +
-                ", transactions='" + getTransactions() + "'" +
-                ", header='" + getHeader() + "'" +
-                "}";
+        return "Bloc [hash=" + hash + ", transactions=" + transactions + ", previousHash=" + previousHash + ", time="
+                + time + ", nonce=" + nonce + ", coinbase=" + coinbase + "]";
     }
-}
+
+}
\ No newline at end of file
diff --git a/src/main/java/fr/miage/blocs/BlocHeader.java b/src/main/java/fr/miage/blocs/BlocHeader.java
index 847334a3cfb44ed2fad233ef31d97318b90a96ae..1e34961f394060cb648ae65fddc9b1b5dc6a8351 100644
--- a/src/main/java/fr/miage/blocs/BlocHeader.java
+++ b/src/main/java/fr/miage/blocs/BlocHeader.java
@@ -3,35 +3,25 @@ package fr.miage.blocs;
 public class BlocHeader {
     private String previousHash;
     private long time;
-    private String transactions;
-    // private long nonce;
-    // private long size;
-    // public static final int DIFFICULTY = 27;
+    private String transactionsInfo;
+    private int nonce;
+
+    public BlocHeader(String transactions, String previousHash, long time, int nonce) {
 
-    public BlocHeader(String transactions, String previousHash, long time) {
-        // this.hash = hash;
         this.previousHash = previousHash;
         this.time = time;
-        this.transactions = transactions;
-        // this.nonce = nonce;
-        // this.size = size;
-    }
-
-    // public String getHash() {
-    // return hash;
-    // }
+        this.transactionsInfo = transactions;
+        this.nonce = nonce;
 
-    // public void setHash(String hash) {
-    // this.hash = hash;
-    // }
+    }
 
     public String getPreviousHash() {
         return previousHash;
     }
 
-    // public void setPreviousHash(String previousHash) {
-    // this.previousHash = previousHash;
-    // }
+    public void setNonce(int nonce) {
+        this.nonce = nonce;
+    }
 
     public long getTime() {
         return time;
@@ -39,27 +29,8 @@ public class BlocHeader {
 
     @Override
     public String toString() {
-        return "BlocHeader [previousHash=" + previousHash + ", time=" + time + ", transactions=" + transactions + "]";
+        return "BlocHeader [previousHash=" + previousHash + ", time=" + time + ", transactions=" + transactionsInfo
+                + "]";
     }
 
-    // public void setTime(long time) {
-    // this.time = time;
-    // }
-
-    // public long getNonce() {
-    // return nonce;
-    // }
-
-    // public void setNonce(long nonce) {
-    // this.nonce = nonce;
-    // }
-
-    // public long getSize() {
-    // return size;
-    // }
-
-    // public void setSize(long size) {
-    // this.size = size;
-    // }
-
 }
diff --git a/src/main/java/fr/miage/threads/Mineur.java b/src/main/java/fr/miage/threads/Mineur.java
index 5d930a6f8a35e4a4bc555fdfac0e778b47744596..82cadd91b8e594e78832661c8461bbe6fc4ff6ca 100644
--- a/src/main/java/fr/miage/threads/Mineur.java
+++ b/src/main/java/fr/miage/threads/Mineur.java
@@ -13,7 +13,6 @@ import fr.miage.blocs.Bloc;
 
 public class Mineur extends Thread {
     private Blockchain blockchain;
-    private MinageManager minageManager = new MinageManager(blockchain);
 
     private Wallet wallet;
 
@@ -25,7 +24,6 @@ public class Mineur extends Thread {
     }
 
     public void run() {
-        System.out.println("Attente de transactions pour minage....");
         while (true) {
             try {
                 if (Blockchain.transactionsPool.size() >= 20) {
@@ -35,7 +33,8 @@ public class Mineur extends Thread {
                     this.transactions = getLastTransactions();
 
                     System.out.println("[MINAGE] -- Minage du bloc....");
-                    Bloc bloc = MinageManager.mineABloc(previousBloc, transactions);
+                    Bloc bloc = new Bloc(transactions, previousBloc.getHash());
+                    MinageManager.mineABloc(bloc);
                     Blockchain.transactionsPool.removeAll(transactions);
                     transactions.clear();
                     if (bloc != null) {
@@ -45,7 +44,6 @@ public class Mineur extends Thread {
                                 + bloc.getCoinbase().getOutputs().getFirst().getMontant());
                         this.wallet.addUTxO(bloc.getCoinbase().getOutputs().getFirst());
                     }
-                    // remove the transactions from the pool
                 }
                 Thread.sleep(1000);
 
diff --git a/src/main/java/fr/miage/threads/TransactionCreator.java b/src/main/java/fr/miage/threads/TransactionCreator.java
index 3a88652aa31a3f1f6ccee63a0174fa536cafd9d1..58a32094b10474c8148eca6f4d4fe795dc7facef 100644
--- a/src/main/java/fr/miage/threads/TransactionCreator.java
+++ b/src/main/java/fr/miage/threads/TransactionCreator.java
@@ -16,11 +16,11 @@ public class TransactionCreator extends Thread {
     public void run() {
         while (true) {
             blockchain.createTrasaction();
-            System.out.println("[POOL] Nombre de transaction dans la pool : " + Blockchain.transactionsPool.size());
+            System.out.println(
+                    "[POOL] Nombre de transaction dans la pool : " + Blockchain.transactionsPool.size() + "\n");
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException e) {
-                // TODO Auto-generated catch block
                 e.printStackTrace();
             }
         }
diff --git a/target/classes/fr/miage/App.class b/target/classes/fr/miage/App.class
index dde94adf03d42bc0ead864a54567da56b888d422..1388792d8d6fb77aefb8a404c65223d66c2edde7 100644
Binary files a/target/classes/fr/miage/App.class and b/target/classes/fr/miage/App.class differ