From 17e9862a1fc8b75634a4ae6005ba0f67935536b2 Mon Sep 17 00:00:00 2001
From: corentinstd <corentinstd@gmail.com>
Date: Tue, 30 Jan 2024 14:16:34 +0100
Subject: [PATCH] modif

---
 pom.xml                                       |   5 +-
 src/main/java/fr/miage/App.java               |   8 ++-
 src/main/java/fr/miage/Bloc.java              |  33 ++++++++++
 src/main/java/fr/miage/BlocHeader.java        |  60 ++++++++++++++++++
 src/main/java/fr/miage/Blockchain.java        |   6 ++
 .../java/fr/miage/EnumTypeTransaction.java    |   5 ++
 src/main/java/fr/miage/MinageManager.java     |  36 ++++++++++-
 src/main/java/fr/miage/Transaction.java       |  10 +++
 src/main/java/fr/miage/UTxO.java              |   7 ++
 src/main/java/fr/miage/Wallet.java            |  12 ++++
 target/blockchain-project-1.0-SNAPSHOT.jar    | Bin 2640 -> 7175 bytes
 target/classes/fr/miage/App.class             | Bin 531 -> 894 bytes
 .../compile/default-compile/createdFiles.lst  |   8 +++
 .../compile/default-compile/inputFiles.lst    |   8 +++
 14 files changed, 194 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/fr/miage/BlocHeader.java
 create mode 100644 src/main/java/fr/miage/EnumTypeTransaction.java

diff --git a/pom.xml b/pom.xml
index 8debaf1..0f1c75e 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 71b6b24..6d01adc 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 f4cffff..2fe1256 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 0000000..0f5f02d
--- /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 651cafa..c3f5398 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 0000000..765fc59
--- /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 17cc574..ac0d414 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 bd17ac2..b7ca275 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 6275dfb..e52bfef 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 7f02c73..49d390c 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
GIT binary patch
literal 7175
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

delta 1512
zcmZp-xFEtC;LXg!#lXSA!4TMNFp+l-Gl*KFq7v9_5W#>1m>C!t(u(vU${9Eqz{<a<
zfRs;`X4C@H9*o9dx{lGU9;Cm6Rh2i0k%2*&iGe`~qCYn?F+Ek^v7kUNIVZ8WI5*JS
zn<-G_-@5g$dnV6Xw%0p4vpY?Ai$N2|qN4$giQQr0d;P+nDPA{xk$!d20$2M5@}hHR
zw(#ufF1EP;Q?B6M_3y{k8<J&acqpEoxN(AO-$ENP|3lwg9^9%o|GQDfg=c55=!zFT
zig&ZV^E^o`m?6fs;orsG=P!HwI>ME%vdZ$LTkE&AVUAaNw}{lK_bWA*s@m%3+-bih
zZRR^=<Eg-n0Y{~rOFO$7{U4p=KC$hoj*1)0?zv_Ci~Y7K=l=HEamjAJkA#u<!vLcx
zGNLD5&%8hVm){p#CoMk<f%-WA4AJw&2Ew+hG@UO-n!FTv$L+fD>$St1Vs3H2owROO
z%Grdn!!zYhc#En(Ir%|DZDFU>U7I@14L@FmT+iIJ()iWQ!{r;Mr|fk!o!%fbJ7jG<
z)3y!1cMtHDJ%2R$NY94w52sE^d)2e0O$uAkzgf(O=S|{#D`(|IvwDUAZ+4CjHKd@2
z#2F}x{hJLUE*|}u_MeG?ft8zq!Dw<1qu%5Y4$b;26K+g=`{nWe`EM;$TlturZ$;O9
z-_3vj{ku6oDng%RFnSeh_Wg3Ud7&)evn(dX{crsB<rf|QTfF@GDClH#0$b#c3+{h+
z8a`E2WQ}b&uw_XOU&N}On7E#kc5)Wxa+NzS)ilTHO|RJbym0Zs1dqI9&%>{6SRg2V
zE8yUQ`_3n#Wa_i@?WXrg&A-0+;f4DG+H<cRI`Mde?RQ~mRlO9hpYMM?>b!n5#rs<E
z3ZIj!Y`iDWJjA+O^2m~j7P_Hr=QWJKS)5hfom_m%Rm4kl^0ZqEou>*%KY8)$`S;VS
z<;AZXMs7LG8Fj!fJno^u`$Zgc=iTk`pWxcTBVc~QBjs5G(~o91@A?^8c?_--x33JD
zw?(5tRQHsO!DLsTIp^B9T~oc$;%GfP>cO3dnMXg1WJhYUsV_7Yx-V&1DHObWrR2tq
zUh|r{B%+zK_eO8Md?sLO<IPO5kav7bYB|+C7P3sd)t0A{dvh1x)ufxhbe3G0xR+sr
z?kd|gN1ro4F}o~RbN<_h)vwp`)}N2_z7=UR`+BbGj!L8X4HZiLwKg(#Ck|zqZf5o7
z$;ghWe}5wX^`4b$pYM4&b<e3C62Xb?OBfP`?k`{0AE-5*>1x$o9jUib)AUsQ1DEEm
zUa)bo$WnvFp?N01A}*NDV$yoT6x6P}a#LKOX1D*smC=c%#e9zs7A;_UTEmu;yWhTE
znfJl>=6hQeM9y%mp7L2<jCC^CiDNO3cWQq6e(&XzJrlQWy78n?|Hd=5ic-EsQaig>
z=x+M<;X~m0D|>8sp61JNUElXvH*{Opo4%-$vLCC2Sk_;h!fk$jp}=&zMo;BAXO_&m
zkuceJ!}RHHj<&ycRadfATv=-~cLnF_CDlKg*S#sJ=UlJt%@BUU^bbeB+mDYr`>pn+
zzPA^>XaBqM-rq;@_l$PMX6}qB=dZh9x<lIY|G#}7`HJlRr?Oi9e&<tPeOiv&o@?62
znOi=`d8Njgyp27!*3#VG;K{|+PvSRy$jhyZn{-belr50cJ|b5HHXBUl;XT01$Rxrn
z0xJq9vy0n<3$u;l(vwrfCBf_laXm1-QQQPfzYw<q)2b5AU^-hOECE}=2P;RHH11*q
z7o%v!V1PHmZj3w%)6BrYu%yw4d2%nK?&L?3!e9$6rKFiwvw?*?c=^Nvyjj^m%DEW0
N7>+P8FqE-_cmP|%d58c2

diff --git a/target/classes/fr/miage/App.class b/target/classes/fr/miage/App.class
index 2d323d3bb26f550b630926e29147fce43ff6dd00..e101c779abed4e7b739e1fa70d480be8175b415c 100644
GIT binary patch
literal 894
zcmX^0Z`VEs1_nn4D|QAZMh2d=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>Yt1lD
z20;d4b_O97mjzcAm!#(MFo-aSGBPmdmzFRxh(a`H=IaL(W#*LxmlUNY=2~+wh%+*X
zyBuDbR9d2tlB$rCsF0MCpPZeXk(ims#URNb&CVdj$RG^17*#J1gA9W#BLjN@$he$5
zMg~z0h!x<lfxC~LL7tI8815w}xak}Wii`}rPC5AqAua|v24zs7$+9!3GBWVPb%iJ9
z<fN8xFsL&!a21p$<zyy%r&bzrFlaI|a2FJ1mL-;?f&{o2R2Z~D`gIr?)Umk62kZ@0
z_i-@jAscGM!C-)5s1YLrOJY%aF(ZR8mhfj};6j8KD3IY!M)=B_k%2QQKMCRoMg~Dd
z{6d7R85y_}b25`tAzVfVuHgLAqU2P!Oi)tca4aa$1G$?)k%5tcnE?ct7#Kk*i-D1W
zoq>TtpMjBqk%57MRcku~$3_MQ1||kB1_lN;upm1FHv<C$517r$z{9}Hz`(%Cz{kK3
z)!fX$!ob47z@WW}K|n}s8-v7d2DwNfh3yPVKD!xIB8Ak1G`2Hn`GVQHLi*bowEPfO
zh%vA-Ffed4a4_&P2r=+8$T0{oXfX(Zt<-`T%V5Z0#K6EH#30FF%wWR6$RNkS%V5f2
Y#=yj&#lXm5&S1vC%)rQC0d}?}0F&R!9{>OV

delta 357
zcmeyzHkn2I)W2Q(7#J8#7?ijem>8JZ8CZB2SQ*$R$}1^wGH@_(vNLe;FmN;QFfs^a
zC6*=X=OpH(>jzgBm!#%Syr^Kz$H>6rk(!f}uMnPJl#`;!#UQ{S$j%_d!ywEc!pI;D
z){~j9A5fH;R}x%Ol$w}3S)WlwT#S){C#^_7H#0FkRo}6ofRTa4IX@+JVo-cNBLhof
zQF<{WgK)GDSUbeZlA_GKbZbTiuHgLAqU2P!%$!t41`fx90zHr-21N!@1||j&U}9hd
z`GA3uL7ahsL7#z<fsuiMfmLfe1LH;p1_mYu2?hoRHn1Q&gCqk30}q(Z${@uc&A`Cm
z$H^eWAPd!P&Hyrvfq`=q1G^CKHU@r#383I&VBlupVBkSAg_A*!L7stufssK0Y?mSc
DOCCBa

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 a6e1610..be281bf 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 b3b66de..1ddb5f3 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
-- 
GitLab