diff --git a/pom.xml b/pom.xml
index 8debaf11b880e4b075cc973e0df085b85b5ee3bf..0f1c75e78f7aed8cca2c9d66cda8fbf70954df8c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,8 +14,9 @@
 
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.source>1.8</maven.compiler.source>
-    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven.compiler.source>21</maven.compiler.source>
+    <maven.compiler.target>21</maven.compiler.target>
+    <maven.compiler.release>21</maven.compiler.release>
   </properties>
 
   <dependencies>
diff --git a/src/main/java/fr/miage/App.java b/src/main/java/fr/miage/App.java
index 71b6b24fb0e14d830574bd8deeb73d7fab33f30c..6d01adca9e4b2ef8e18fd1d76548fbdbb3573cbf 100644
--- a/src/main/java/fr/miage/App.java
+++ b/src/main/java/fr/miage/App.java
@@ -8,6 +8,12 @@ public class App
 {
     public static void main( String[] args )
     {
-        System.out.println( "Hello World!" );
+        System.out.println("Début de la blockchain");
+        // Création de la blockchain
+        Blockchain blockchain = new Blockchain("BloBlockchain");
+        //Création de 2 wallets
+        Wallet bobWallet = new Wallet("publicKey1", "privateKey1");
+        Wallet aliceWallet = new Wallet("publicKey2", "privateKey2");
+
     }
 }
diff --git a/src/main/java/fr/miage/Bloc.java b/src/main/java/fr/miage/Bloc.java
index f4cffff5b629086a9e3aa7fd2d45ee03ab2a383f..2fe1256d91c0e03449ad26873225eb1b610d69d0 100644
--- a/src/main/java/fr/miage/Bloc.java
+++ b/src/main/java/fr/miage/Bloc.java
@@ -3,5 +3,38 @@ package fr.miage;
 import java.util.List;
 
 public class Bloc {
+    private String hash;
     private List<Transaction> transactions;
+    private String header;
+    
+
+    public Bloc(String hash,List<Transaction> transactions) {
+        this.hash = hash;
+        this.transactions = transactions;   
+     }
+
+     public String getHash() {
+         return hash;
+     }
+     public String getHeader() {
+         return header;
+     }
+     public void setHash(String hash) {
+         this.hash = hash;
+     }
+     public void setHeader(String header) {
+         this.header = header;
+     }
+
+
+    public Bloc(List<Transaction> transactions) {
+        this.transactions = transactions;
+    }
+
+    public List<Transaction> getTransactions() {
+        return transactions;
+    }
+    public void setTransactions(List<Transaction> transactions) {
+        this.transactions = transactions;
+    }
 }
diff --git a/src/main/java/fr/miage/BlocHeader.java b/src/main/java/fr/miage/BlocHeader.java
new file mode 100644
index 0000000000000000000000000000000000000000..0f5f02ddd3adf6fe0c756a8fd20d4c8ad622c084
--- /dev/null
+++ b/src/main/java/fr/miage/BlocHeader.java
@@ -0,0 +1,60 @@
+// package fr.miage;
+
+// public class BlocHeader {
+//     private String previousHash;
+//     private long time;
+//     private long nonce;
+//     private long size;
+//     public static final int DIFFICULTY = 27;
+
+//     public BlocHeader(String hash, String previousHash, long time, long nonce, long size) {
+//         this.hash = hash;
+//         this.previousHash = previousHash;
+//         this.time = time;
+//         this.nonce = nonce;
+//         this.size = size;
+//     }
+
+//     public String getHash() {
+//         return hash;
+//     }
+
+//     public void setHash(String hash) {
+//         this.hash = hash;
+//     }
+
+//     public String getPreviousHash() {
+//         return previousHash;
+//     }
+
+//     public void setPreviousHash(String previousHash) {
+//         this.previousHash = previousHash;
+//     }
+
+//     public long getTime() {
+//         return time;
+//     }
+
+//     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/Blockchain.java b/src/main/java/fr/miage/Blockchain.java
index 651cafafade3183da0ec98d0bdd5c6a1657d38fc..c3f539863199bf9467fefa2b17cddad8ed9d4f9c 100644
--- a/src/main/java/fr/miage/Blockchain.java
+++ b/src/main/java/fr/miage/Blockchain.java
@@ -5,4 +5,10 @@ import java.util.LinkedList;
 public class Blockchain {
     private String name; 
     private LinkedList<Bloc> blocs;
+
+    public Blockchain(String name) {
+        this.name = name;
+        this.blocs = new LinkedList<Bloc>();
+    }
+    
 }
diff --git a/src/main/java/fr/miage/EnumTypeTransaction.java b/src/main/java/fr/miage/EnumTypeTransaction.java
new file mode 100644
index 0000000000000000000000000000000000000000..765fc59d374b85d1e7d135fec0503d15a9968d39
--- /dev/null
+++ b/src/main/java/fr/miage/EnumTypeTransaction.java
@@ -0,0 +1,5 @@
+package fr.miage;
+
+public enum EnumTypeTransaction {
+    NORMAL, COINBASE;
+}
diff --git a/src/main/java/fr/miage/MinageManager.java b/src/main/java/fr/miage/MinageManager.java
index 17cc5742565442f74e19f70e9388749e6fb05a63..ac0d41424d0e514939c3fab38bb5c004f9f4cfd1 100644
--- a/src/main/java/fr/miage/MinageManager.java
+++ b/src/main/java/fr/miage/MinageManager.java
@@ -1,5 +1,39 @@
 package fr.miage;
 
+import java.math.BigInteger;
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.util.Optional;
+import java.util.stream.DoubleStream;
+
+import javax.swing.text.html.Option;
+
+import org.apache.commons.codec.digest.DigestUtils;
+
 public class MinageManager {
-    //TODO
+
+    private static final int DIFFICULTY = 27;
+
+    
+
+    public MinageManager() {
+    }
+
+
+    public Bloc mineABloc(Bloc previousBloc) {
+        double target = Math.pow(2, 256 - DIFFICULTY);
+        //DoubleStream doubleStream = DoubleStream.iterate(0, i -> i + 1).limit((long) Math.pow(2, DIFFICULTY));
+        Compute result = new Compute(new BigInteger(DigestUtils.sha256Hex(previousBloc.getHeader() + Math.pow(2,DIFFICULTY)), 16).doubleValue(), Math.pow(2,DIFFICULTY));
+        if(result.hash < target){
+            System.out.println("Bloc miné avec succès : " + result.nonce);
+            System.out.println("Hash : " + DigestUtils.sha256Hex(previousBloc.getHeader() + result.nonce));
+            Bloc bloc = new Bloc(transactions, new BlocHeader(DigestUtils.sha256Hex(previousBloc.getHeader() + result.nonce), previousBloc.getHeader(), System.currentTimeMillis(), result.nonce, transactions.size()));
+        }
+        System.out.println("Failed after " + BlocHeader.DIFFICULTY + " tries");
+        return new Result("", BlocHeader.DIFFICULTY);
+
+    }
+
+ 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 bd17ac27115b836222af12e21ddd41e1464cd066..b7ca27528f4814f8c177aa172a784c6e17056f5b 100644
--- a/src/main/java/fr/miage/Transaction.java
+++ b/src/main/java/fr/miage/Transaction.java
@@ -6,6 +6,16 @@ public class Transaction {
     private String id;
     private List<UTxO> inputs;
     private List<UTxO> outputs; 
+    //private double fees; 
     private String signature; 
+    private String typeTransaction;
+
+    public Transaction(String id, List<UTxO> inputs, List<UTxO> outputs, String signature, String typeTransaction) {
+        this.id = id;
+        this.inputs = inputs;
+        this.outputs = outputs;
+        this.signature = signature;
+    }
+    //créer transaction coinbase
 
 }
diff --git a/src/main/java/fr/miage/UTxO.java b/src/main/java/fr/miage/UTxO.java
index 6275dfba20b6651877662715f66064214d8b17f7..e52bfef990b98f0370e49d640139c4e38a17bd5b 100644
--- a/src/main/java/fr/miage/UTxO.java
+++ b/src/main/java/fr/miage/UTxO.java
@@ -5,4 +5,11 @@ public class UTxO {
     private String hashWallet; // hash du wallet
     private Transaction transaction; // transaction précédente (provenance de l'argent) --> peut etre meme que le hash de la transaction
     private double montant;
+
+    public UTxO(String hashWallet, Transaction transaction, double montant) {
+        this.hashWallet = hashWallet;
+        this.transaction = transaction;
+        this.montant = montant;
+    }
+    
 }
diff --git a/src/main/java/fr/miage/Wallet.java b/src/main/java/fr/miage/Wallet.java
index 7f02c73127e499cb5b4d7a2c638e3afc0e7a5715..49d390cdfc7df0d7eeec4c79b345fb945c6fe159 100644
--- a/src/main/java/fr/miage/Wallet.java
+++ b/src/main/java/fr/miage/Wallet.java
@@ -1,5 +1,8 @@
 package fr.miage;
 
+import java.nio.charset.StandardCharsets;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 import java.util.List;
 
 public class Wallet {
@@ -13,5 +16,14 @@ public class Wallet {
         this.publicKey = publicKey;
         this.privateKey = privateKey;
     }
+
+    public void initWallet(byte[] data) throws NoSuchAlgorithmException{
+      
+    }
+
+    private String hashSha256(String privateKey) throws NoSuchAlgorithmException{
+        MessageDigest md = MessageDigest.getInstance("SHA-256");
+        byte[] hash = md.digest(privateKey.getBytes(StandardCharsets.UTF_8));
+    }
     
 }
diff --git a/target/blockchain-project-1.0-SNAPSHOT.jar b/target/blockchain-project-1.0-SNAPSHOT.jar
index 7de4d656a0ec888f2265e9e8c7a4b85fc456a088..f988b3b41a7cb272d887a9a6c7dcaa36582b7f2b 100644
Binary files a/target/blockchain-project-1.0-SNAPSHOT.jar and b/target/blockchain-project-1.0-SNAPSHOT.jar differ
diff --git a/target/classes/fr/miage/App.class b/target/classes/fr/miage/App.class
index 2d323d3bb26f550b630926e29147fce43ff6dd00..e101c779abed4e7b739e1fa70d480be8175b415c 100644
Binary files a/target/classes/fr/miage/App.class and b/target/classes/fr/miage/App.class differ
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index a6e1610dec9c1092eb02c52d3fa7ca8dad0b362a..be281bf01b03b789780e7cc2b46bf12684a2eabe 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1 +1,9 @@
+fr/miage/Transaction.class
+fr/miage/Bloc.class
+fr/miage/UTxO.class
 fr/miage/App.class
+fr/miage/Blockchain.class
+fr/miage/EnumTypeTransaction.class
+fr/miage/MinageManager.class
+fr/miage/Wallet.class
+fr/miage/BlocHeader.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index b3b66de328ae313efc5380a048374ad03ff3ebc2..1ddb5f309e514dde9bd943a2edf1123475ceac1e 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1 +1,9 @@
+/Users/corentinstd/Library/CloudStorage/OneDrive-Personnel/Cours/M2_S1/Blockchain/blockchain-project/src/main/java/fr/miage/EnumTypeTransaction.java
+/Users/corentinstd/Library/CloudStorage/OneDrive-Personnel/Cours/M2_S1/Blockchain/blockchain-project/src/main/java/fr/miage/Bloc.java
+/Users/corentinstd/Library/CloudStorage/OneDrive-Personnel/Cours/M2_S1/Blockchain/blockchain-project/src/main/java/fr/miage/Blockchain.java
 /Users/corentinstd/Library/CloudStorage/OneDrive-Personnel/Cours/M2_S1/Blockchain/blockchain-project/src/main/java/fr/miage/App.java
+/Users/corentinstd/Library/CloudStorage/OneDrive-Personnel/Cours/M2_S1/Blockchain/blockchain-project/src/main/java/fr/miage/MinageManager.java
+/Users/corentinstd/Library/CloudStorage/OneDrive-Personnel/Cours/M2_S1/Blockchain/blockchain-project/src/main/java/fr/miage/Transaction.java
+/Users/corentinstd/Library/CloudStorage/OneDrive-Personnel/Cours/M2_S1/Blockchain/blockchain-project/src/main/java/fr/miage/Wallet.java
+/Users/corentinstd/Library/CloudStorage/OneDrive-Personnel/Cours/M2_S1/Blockchain/blockchain-project/src/main/java/fr/miage/BlocHeader.java
+/Users/corentinstd/Library/CloudStorage/OneDrive-Personnel/Cours/M2_S1/Blockchain/blockchain-project/src/main/java/fr/miage/UTxO.java