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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𝔦QLvL`AmwO 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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