From 4766f5ec32df49785d8cd19af2ee251a03bdd76d Mon Sep 17 00:00:00 2001
From: saintdi25u <corentinstd@gmail.com>
Date: Sat, 24 Feb 2024 14:30:44 +0100
Subject: [PATCH] =?UTF-8?q?feat-transaction=20:=20avancement=20dans=20la?=
 =?UTF-8?q?=20cr=C3=A9ation=20des=20transactions?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .DS_Store                                     | Bin 6148 -> 0 bytes
 .vscode/settings.json                         |   3 -
 keystore.jks                                  | Bin 0 -> 2061 bytes
 src/.DS_Store                                 | Bin 6148 -> 0 bytes
 src/main/java/fr/miage/App.java               |  55 +++++-----
 src/main/java/fr/miage/Bloc.java              |  17 ++--
 src/main/java/fr/miage/Blockchain.java        |  61 +++++++----
 src/main/java/fr/miage/Transaction.java       |  45 ++++----
 src/main/java/fr/miage/UTxO.java              |  18 ++--
 src/main/java/fr/miage/Wallet.java            |  96 ++++++++++--------
 target/blockchain-project-1.0-SNAPSHOT.jar    | Bin 7175 -> 0 bytes
 target/classes/fr/miage/App.class             | Bin 1208 -> 0 bytes
 target/maven-archiver/pom.properties          |   4 -
 .../compile/default-compile/createdFiles.lst  |   9 --
 .../compile/default-compile/inputFiles.lst    |   9 --
 .../default-testCompile/inputFiles.lst        |   0
 16 files changed, 166 insertions(+), 151 deletions(-)
 delete mode 100644 .DS_Store
 delete mode 100644 .vscode/settings.json
 create mode 100644 keystore.jks
 delete mode 100644 src/.DS_Store
 mode change 100755 => 100644 src/main/java/fr/miage/App.java
 mode change 100755 => 100644 src/main/java/fr/miage/Blockchain.java
 mode change 100755 => 100644 src/main/java/fr/miage/Transaction.java
 mode change 100755 => 100644 src/main/java/fr/miage/UTxO.java
 delete mode 100644 target/blockchain-project-1.0-SNAPSHOT.jar
 delete mode 100644 target/classes/fr/miage/App.class
 delete mode 100644 target/maven-archiver/pom.properties
 delete mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
 delete mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
 delete mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst

diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 9c80ff7151c0c744b384abb047561d4d60cce3f8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmZQzU|@7AO)+F(5MW?n;9!8zEL;p&0Z1N%F(jFwA|OK;L1yHn8wMxm=N3T4N2$>e
z7!85J9Ri@d%fg_?kj{|FP=b<w8P!3V9xj)g@8Xh_lb-}BFdF8V?mX(qz`%ecpMqDu
zAOopv;0XYQ3Oj=yLm5LcLo!1?LkdGGitP*xP7DkTXev<Mz;GpdHP{Ups*qiROBITH
zz~vwVGea>$5koSnJ3PKKFu-I`?Qckf+7H#2n~!WSx-6=F3qby7V<=%rWGG@tXGld0
zdxqsk3=9k?^2m1kG0fk|z5(oaG&Kkp;8KI)4#o)}cZ}kZ83K$DZ*y=%=uvVs1V%$(
zGz8!w04g68Kz#)U1_lQx-2kCMQVfg?4B##RBd8ew)dlVcK-7S=g4BStf@qLd21XDI
zEDzSoz{tP?*2xI&hA=QNLaJg0Mh38U21c;WAaSsE21c;W3=E7A?F@_%?F@{d#tO(>
zP=f|UL$ot6f^7#|F-nYvz-R~{g#a^zEdZ+jT^Sf~_5UHNM#<3-7!84883K$fF2OFK
z?l!b;#qcDkt_9Vn2~Zi3I#6}Y2&$Jsl`XU(0Fq{c3@A!~*dWZv0IA6tA#Dgy^$*fI
Q+7JK*&L|!YfdL8u0MMs<rT_o{

diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index e0f15db..0000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "java.configuration.updateBuildConfiguration": "automatic"
-}
\ No newline at end of file
diff --git a/keystore.jks b/keystore.jks
new file mode 100644
index 0000000000000000000000000000000000000000..4113915d016bb4e87cb93f1512cc2661b45a4271
GIT binary patch
literal 2061
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

literal 0
HcmV?d00001

diff --git a/src/.DS_Store b/src/.DS_Store
deleted file mode 100644
index fbb6cd10b24a60f472c9b06770d7b373e8fec9d2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6148
zcmZQzU|@7AO)+F(5MW?n;9!8zj35RBCIAV8Fop~hR0Jf+2r?rl-7q*gKeqrXJ`^aB
z+gTWL84?*X8S+rw@9~|1fdMX;oA2V1l#`zX39yE=?A1pdQRP$c$`@oHhs^>|*sw5^
zFr+dRGnAm(3zA}h%i**asy8<uhrLjFRC~c@j}oIHFd71*Aut*OBRd2bA>QZUhR~zr
zXb6mkz-S1-LjY7hD1iD33=9koP`Uv^gQOT385qD_07g(V8LA814}hovX$7ePX$8?B
ztqhDH7FZsvm4T6g1+0@1+znx1U<7wbKr~o810&dG5Ff0afe~yo0|O&OI|Cy`I|Hoq
z!U*cofXs(zXJ7=|4z^;H7!85Z5I_n6W(ZpVRR6m&z_SoUbd($ofzc2c5h1|H;u7rQ
z1gbP~co$UHg6h)*s640+hE&I(iW#*Lzyujklz=J)RresRAR1g1GcquMwT?CfU?DV0
KkA?vKLjV9UHbIX7

diff --git a/src/main/java/fr/miage/App.java b/src/main/java/fr/miage/App.java
old mode 100755
new mode 100644
index e0cad8e..c0f3673
--- a/src/main/java/fr/miage/App.java
+++ b/src/main/java/fr/miage/App.java
@@ -1,65 +1,62 @@
 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;
 
 /**
  * Hello world!
  *
  */
-public class App 
-{
-    public static void main( String[] args ) throws NoSuchAlgorithmException, InterruptedException
-    {
+public class App {
+    public static void main(String[] args) throws NoSuchAlgorithmException, InterruptedException {
         System.out.println("Début de la blockchain");
         // Création de 2 wallets
         Wallet bobWallet = new Wallet("jesuislacleprivedebob", "bob");
-        //Wallet aliceWallet = new Wallet("je suis la clé privé de alice", "alice");  
+        Wallet aliceWallet = new Wallet("je suis la clé privé de alice", "alice");
 
-        Set<Wallet> wallets = new HashSet<Wallet>() {
-            {
-                add(bobWallet);
-                //add(aliceWallet);
-            }
-        };
+        List<Wallet> wallets = Arrays.asList(bobWallet, aliceWallet);
         Blockchain blockchain = new Blockchain("BloBlockchain", wallets);
 
-
+        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);
+        // 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++;
-        // }
+        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);
+        // 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
+
+        // 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);
-        //     }
+        // {
+        // add(bobWallet);
+        // add(aliceWallet);
+        // }
         // };
         // // Création de la blockchain
 
-
         // // MinageManager minageManager = new MinageManager(blockchain);
         // // minageManager.mineABloc();
     }
diff --git a/src/main/java/fr/miage/Bloc.java b/src/main/java/fr/miage/Bloc.java
index 00e64ee..f0a5a42 100644
--- a/src/main/java/fr/miage/Bloc.java
+++ b/src/main/java/fr/miage/Bloc.java
@@ -5,6 +5,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Random;
 import java.util.Set;
+import java.util.UUID;
 
 import org.apache.commons.codec.digest.DigestUtils;
 
@@ -46,11 +47,11 @@ public class Bloc {
         this.transactions = transactions;
     }
 
-    public static Bloc createGenuineBloc(Set<Wallet> wallets) {
+    public static Bloc createGenuineBloc(List<Wallet> wallets) {
         List<Transaction> transactions = new ArrayList<Transaction>();
         for (Wallet wallet : wallets) {
             int amount = RandomNumberGenerator.getRandomNumber(1, 20);
-            UTxO utxo = new UTxO(null, amount); 
+            UTxO utxo = new UTxO(null, wallet.getPublicKey(), amount);
             wallet.addUTxO(utxo);
             Blockchain.utxos.add(utxo);
             List<UTxO> utxos = new ArrayList<UTxO>() {
@@ -58,10 +59,11 @@ public class Bloc {
                     add(utxo);
                 }
             };
-            
+
             Coinbase coinbase = new Coinbase(utxos, wallet.getPublicKey(), EnumTypeTransaction.COINBASE);
             transactions.add(coinbase);
         }
+        System.out.println("Set UTxO INITIAL " + Blockchain.utxos);
 
         BlocHeader blocHeader = new BlocHeader("", Instant.now().toEpochMilli(), 0);
         String header = blocHeader.toString();
@@ -88,13 +90,12 @@ public class Bloc {
         }
     }
 
-
     @Override
     public String toString() {
         return "{" +
-            " hash='" + getHash() + "'" +
-            ", transactions='" + getTransactions() + "'" +
-            ", header='" + getHeader() + "'" +
-            "}";
+                " hash='" + getHash() + "'" +
+                ", transactions='" + getTransactions() + "'" +
+                ", header='" + getHeader() + "'" +
+                "}";
     }
 }
diff --git a/src/main/java/fr/miage/Blockchain.java b/src/main/java/fr/miage/Blockchain.java
old mode 100755
new mode 100644
index 8accd91..bab320c
--- a/src/main/java/fr/miage/Blockchain.java
+++ b/src/main/java/fr/miage/Blockchain.java
@@ -1,5 +1,7 @@
 package fr.miage;
 
+import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -7,13 +9,13 @@ import java.util.Random;
 import java.util.Set;
 
 public class Blockchain {
-    private String name; 
+    private String name;
     private LinkedList<Bloc> blocs;
-    private Set<Wallet> wallets;
+    private List<Wallet> wallets;
     public static Set<UTxO> utxos = new HashSet<>();
     public Set<Transaction> transactionsPool = new HashSet<>();
 
-    public Blockchain(String name, Set<Wallet> wallets) {
+    public Blockchain(String name, List<Wallet> wallets) {
         this.name = name;
         this.wallets = wallets;
         // Création du premier bloc contenant les transactions de coinbase
@@ -25,28 +27,49 @@ public class Blockchain {
         ;
     }
 
-    //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
-        Set<Wallet> walletsCopy = new HashSet<>(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);
 
-        int walletIndexSender = new Random().nextInt(walletsCopy.size());
-        Wallet walletSender = selectWallet(walletIndexSender);
+        Wallet walletSender = selectWallet(walletsCopy);
         walletsCopy.remove(walletSender);
 
-        int walletIndexReceiver = new Random().nextInt(walletsCopy.size());
-        Wallet walletReceiver = selectWallet(walletIndexReceiver);
+        Wallet walletReceiver = selectWallet(walletsCopy);
+        walletsCopy.remove(walletReceiver);
 
         double amountWalletSender = walletSender.getUtxos().stream().mapToDouble(utxo -> utxo.getMontant()).sum();
-        double randomAmountToSend = new Random().nextInt((int) amountWalletSender);
+        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;
+        }
+
         Transaction tx = new Transaction(walletSender, walletReceiver, randomAmountToSend, EnumTypeTransaction.NORMAL);
+
         this.transactionsPool.add(tx);
     }
 
-    public Wallet selectWallet(int index){
+    public Wallet selectWallet(List<Wallet> wallets) {
+        if (wallets.size() == 0) {
+            return null;
+        }
+        if (wallets.size() == 1) {
+            return wallets.get(0);
+        }
+        int index = new Random().nextInt(wallets.size());
+
         int i = 0;
         for (Wallet wallet : wallets) {
-            if(i == index){
+            if (i == index) {
                 return wallet;
             }
             i++;
@@ -71,16 +94,16 @@ public class Blockchain {
         return this.blocs;
     }
 
-    public Set<Wallet> getWallets() {
+    public List<Wallet> getWallets() {
         return this.wallets;
     }
 
     @Override
     public String toString() {
         return "{" +
-            " name='" + getName() + "'" +
-            ", blocs='" + getBlocs() + "'" +
-            ", wallets='" + getWallets() + "'" +
-            "}";
+                " name='" + getName() + "'" +
+                ", blocs='" + getBlocs() + "'" +
+                ", wallets='" + getWallets() + "'" +
+                "}";
     }
 }
diff --git a/src/main/java/fr/miage/Transaction.java b/src/main/java/fr/miage/Transaction.java
old mode 100755
new mode 100644
index e52ca8e..4835dcd
--- a/src/main/java/fr/miage/Transaction.java
+++ b/src/main/java/fr/miage/Transaction.java
@@ -13,7 +13,7 @@ public class Transaction {
     private Wallet sender;
     private Wallet receiver;
     private List<UTxO> inputs;
-    private List<UTxO> outputs; 
+    private List<UTxO> outputs;
     private EnumTypeTransaction typeTransaction;
 
     public Transaction(List<UTxO> inputs, List<UTxO> outputs, String signature, EnumTypeTransaction typeTransaction) {
@@ -23,36 +23,37 @@ public class Transaction {
         this.id = UUID.randomUUID();
     }
 
-    public Transaction(Wallet sender, Wallet receiver ,double amount, EnumTypeTransaction typeTransaction) {
+    public Transaction(Wallet sender, Wallet receiver, double amount, EnumTypeTransaction typeTransaction) {
         this.inputs = sender.getUTxOsForTransaction(amount);
-        if (inputs != null ) {
-            if(isValidTransaction(inputs)){
+        System.out.println("Inputs : " + this.inputs);
+        System.out.println("Set UTxO : " + Blockchain.utxos);
+        if (inputs != null) {
+            if (isValidTransaction(inputs)) {
                 this.sender = sender;
                 this.receiver = receiver;
                 this.typeTransaction = typeTransaction.NORMAL;
                 this.id = UUID.randomUUID();
-                UTxO utxoAmount = new UTxO(receiver.getPublicKey(), getTotalAmountUtxoInput(inputs)); // peut etre changr par amout
+                UTxO utxoAmount = new UTxO(this.id, receiver.getPublicKey(), amount); // peut
+                                                                                      // etre
+                // changr par
+                // amout
                 this.receiver.addUTxO(utxoAmount);
-                UTxO utxoRest = new UTxO(sender.getPublicKey(), getTotalAmountUtxoInput(inputs) - amount);
+                UTxO utxoRest = new UTxO(this.id, sender.getPublicKey(), getTotalAmountUtxoInput(inputs) - amount);
                 this.sender.addUTxO(utxoRest);
                 this.outputs = Arrays.asList(utxoAmount, utxoRest);
-                updateSetUtxo();   
+                Blockchain.utxos.addAll(this.outputs);
             } else {
                 System.err.println("Transaction invalide, utxo absent");
             }
         } else {
-            System.out.println("Solde insuffisant");     
+            System.out.println("Solde insuffisant");
         }
-    }
-
-    public void updateSetUtxo(){
-        Blockchain.utxos.clear();
-        Blockchain.utxos.addAll(this.outputs);
+        Blockchain.utxos.removeAll(this.inputs);
     }
 
     // public void signTransaction() throws NoSuchAlgorithmException{
-    //     Signature signature = Signature.getInstance("SHA256withRSA");
-    //     signature.initSign(sender.getPrivateKey());
+    // Signature signature = Signature.getInstance("SHA256withRSA");
+    // signature.initSign(sender.getPrivateKey());
     // }
 
     public double getTotalAmountUtxoInput(List<UTxO> inputs) {
@@ -63,7 +64,7 @@ public class Transaction {
         return total;
     }
 
-   public boolean isValidTransaction( List<UTxO> inputs) {
+    public boolean isValidTransaction(List<UTxO> inputs) {
         boolean isValid = true;
         for (UTxO utxo : inputs) {
             if (!Blockchain.utxos.contains(utxo)) {
@@ -77,7 +78,6 @@ public class Transaction {
         return this.id;
     }
 
-
     public void setId(UUID id) {
         this.id = id;
     }
@@ -90,7 +90,6 @@ public class Transaction {
         return this.outputs;
     }
 
-
     public EnumTypeTransaction getTypeTransaction() {
         return this.typeTransaction;
     }
@@ -98,10 +97,10 @@ public class Transaction {
     @Override
     public String toString() {
         return "{" +
-            " id='" + getId() + "'" +
-            ", inputs='" + getInputs() + "'" +
-            ", outputs='" + getOutputs() + "'" +
-            ", typeTransaction='" + getTypeTransaction() + "'" +
-            "}";
+                " id='" + getId() + "'" +
+                ", inputs='" + getInputs() + "'" +
+                ", outputs='" + getOutputs() + "'" +
+                ", typeTransaction='" + getTypeTransaction() + "'" +
+                "}";
     }
 }
diff --git a/src/main/java/fr/miage/UTxO.java b/src/main/java/fr/miage/UTxO.java
old mode 100755
new mode 100644
index fbdf1e6..626101d
--- a/src/main/java/fr/miage/UTxO.java
+++ b/src/main/java/fr/miage/UTxO.java
@@ -4,28 +4,32 @@ import java.util.UUID;
 
 public class UTxO implements Comparable {
     //UTXO : Hash qui renvoie a la transaction d'avant
-    private UUID uuid; // identifiant
-    private String transactionHash; // transaction de provenance de l'Utxo (provenance de l'argent) --> peut etre meme que le hash de la transaction
+    private UUID uuid; // identifiant (transaction de provenances)
+    private String ownerAdresss; // clé publique du wallet
     private double montant;
 
-    public UTxO(String transactionHash, double montant) {
-        this.transactionHash = transactionHash;
+    public UTxO(UUID provenance, String ownerAdresss, double montant) {
+        this.uuid = provenance;
+        this.ownerAdresss = ownerAdresss;
         this.montant = montant;
     }
 
-    public String getTransaction() {
-        return this.transactionHash;
+    public String ownerAdress() {
+        return this.ownerAdresss;
     }
 
     public double getMontant() {
         return this.montant;
     }
+    public UUID getUuid() {
+        return uuid;
+    }
 
 
 
     @Override
     public String toString() {
-        return "UTxO [uuid=" + uuid + ", transactionHash=" + transactionHash + ", montant=" + montant + "]";
+        return "UTxO [uuid=" + uuid + ", ownerAdress=" + ownerAdresss + ", montant=" + montant + "]";
     }
 
     @Override
diff --git a/src/main/java/fr/miage/Wallet.java b/src/main/java/fr/miage/Wallet.java
index 9beca0f..17f6e85 100644
--- a/src/main/java/fr/miage/Wallet.java
+++ b/src/main/java/fr/miage/Wallet.java
@@ -15,8 +15,10 @@ public class Wallet {
     private String privateKey; // pour la signature
     private double solde;
     private List<UTxO> utxos;
+    private String name; // temp
 
     public Wallet(String privateKey, String name) throws NoSuchAlgorithmException, InterruptedException {
+        this.name = name;
         this.privateKey = privateKey;
         initWallet();
         createKeyPair(privateKey, name);
@@ -27,38 +29,41 @@ public class Wallet {
         this.utxos = new ArrayList<>();
     }
 
-    public void createKeyPair(String privateKey, String name) throws InterruptedException{
+    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 + "\"";
+        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();
+        // 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();
+        // // InputStream inputStream = process.getInputStream();
+        // // InputStream errorStream = process.getErrorStream();
 
-        byte[] buffer = new byte[1024];
-        int bytesRead;
+        // // byte[] buffer = new byte[1024];
+        // // int bytesRead;
 
-        while ((bytesRead = inputStream.read(buffer)) != -1) {
-             System.out.write(buffer, 0, 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");
-        }
+        // // 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");
     }
 
@@ -69,30 +74,41 @@ public class Wallet {
     }
 
     public List<UTxO> getUTxOsForTransaction(double amount) {
-       List<UTxO> result = new ArrayList<>();
-       int res = 0;
-       boolean stop = false;
-       Collections.sort(this.utxos);
-       for (UTxO utxo : this.utxos) {
-        if(res >= amount) {
-            stop = true;
+        List<UTxO> result = new ArrayList<>();
+        double res = 0;
+        boolean stop = false;
+        Collections.sort(this.utxos);
+        for (UTxO utxo : this.utxos) {
+            if (res >= amount) {
+                stop = true;
+            }
+            if (res < amount && !stop) {
+                result.add(utxo);
+                res += utxo.getMontant();
+            }
         }
-        if (res < amount && !stop) {
-            result.add(utxo);
-            res += utxo.getMontant();
-        } 
-    }
+        utxos.removeAll(result);
+
         if (res < amount) {
             return null;
         } else {
             return result;
         }
+
     }
 
     public String getPublicKey() {
         return this.publicKey;
     }
 
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
     public String getPrivateKey() {
         return this.privateKey;
     }
@@ -104,13 +120,13 @@ public class Wallet {
     public void addUTxO(UTxO utxo) {
         this.utxos.add(utxo);
     }
-    
+
     @Override
     public String toString() {
         return "{" +
-            " publicKey='" + getPublicKey() + "'" +
-            ", privateKey='" + getPrivateKey() + "'" +
-            ", utxos='" + getUtxos() + "'" +
-            "}";
+                " publicKey='" + getPublicKey() + "'" +
+                ", privateKey='" + getPrivateKey() + "'" +
+                ", utxos='" + getUtxos() + "'" +
+                "}";
     }
 }
diff --git a/target/blockchain-project-1.0-SNAPSHOT.jar b/target/blockchain-project-1.0-SNAPSHOT.jar
deleted file mode 100644
index f988b3b41a7cb272d887a9a6c7dcaa36582b7f2b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7175
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

diff --git a/target/classes/fr/miage/App.class b/target/classes/fr/miage/App.class
deleted file mode 100644
index e1089d23ed730878e852d327dc5414686a9f68fc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1208
zcmX^0Z`VEs1_nn4H+BXlMh2d=BK_RV#Pn2s$ASWO1{OvJfvm)`ME#t^ymWp4q^#8B
z5=I6#o6Nk-5<5l)W)00SMg|t={FGEK24)6M9tKthHbw@1pUk{eztY^K)S{5Yq?}Yn
z1|gsP<iwn?#G*_PA1cUFl95@=$iU}=Y^OCN150jVW*#Ghm`1b@!tUUbqRhN>Ymj|h
zt`*6t1tppJdByAuLW~S*U{%Gb$)!b^C6)Sq`N5^h8IC#W`9+x}8M$!9><l7|402$#
zVBdJ=m82FGl@^qwroh#3GKeuqurr9GcssbVxFj`~he47-ijjdizqEvrK@{S$%zXWT
zqRhOK;F6-$#9V6*1{p>MahJm@lS)ezQc@Li5*3ni@{_ZZGZHiNxESOZ6xbQ$85xAZ
zZa~$`!=T8Z#K^#205UEokC8!C17Zc(sc_G;GpH~!@WaC^JTWIHwS<E~jgdh#E48>Z
zvp6R)IVZKCD6=dzB{eBOiGx9dk%2iWKZ%P$nL!H_J=%;6>R61%ZkaA410UQn$ASVC
zLoNm#27Qn@28;|M8i<&KxWrmBjGe)VkwF-)$qDX%4h9oO241I}e1s4egCT<%$S`w8
z1{Iu+DlN&((GN~70mnT{Vo`cABZDxOq`}C*nUtRdaR?)WAcor*8Q9Cg;Z+Puq2M@x
z8_meTg@`Fo^kVUVH6w!<YBH`YNQEY4B}n+e%(KC;+|HVjfh#z_v?w{%EfbU@I2;QK
z^gxbaWZ?14%S$bC&PgmTPAz6+;Py)`F7ZtT<(^^&MFvI&W(E*oVqgU2E(S&hb_NCp
zeFjDbMg|53R;}#}92*%J7?>Ei7#JAXz=GTi+zbp1JYY5}0}lf)0|Nsm10MrF0~3P)
zSQQh4AcHX2pvep@3@i)`44Ru5M1`ccG05&_P>vK*6;j{Mpy{)lK_^msJA<C@ZU)0h
zA!D8G45oe{%b3BIi7~J;Ffi~la4-lmh%ksS$TCPVXfQZ}E!Tn=%3#4@$-uxM!XV0E
z#bC|A$RNwW!(hW;%fQ5-!NAC1$6(LE%-{fZEJV(cfr){c!3pdoX9gDr1_mw$Mg|>F
P5HK(>xH2#>uz>ggu5BU>

diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
deleted file mode 100644
index 976b61a..0000000
--- a/target/maven-archiver/pom.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-#Created by Apache Maven 3.9.6
-artifactId=blockchain-project
-groupId=fr.miage
-version=1.0-SNAPSHOT
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
deleted file mode 100644
index be281bf..0000000
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ /dev/null
@@ -1,9 +0,0 @@
-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
deleted file mode 100644
index 1ddb5f3..0000000
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ /dev/null
@@ -1,9 +0,0 @@
-/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
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
deleted file mode 100644
index e69de29..0000000
-- 
GitLab