From 147e0244e568b6b497c00213de0eade617e336de Mon Sep 17 00:00:00 2001 From: droideparanoico Date: Sun, 15 Aug 2021 17:20:44 +0200 Subject: [PATCH] Added README and solved ScheduledExecutorService halting --- .gitignore | 65 ++---------------- README.md | 13 ++++ src/main/java/Main.java | 10 +-- src/main/java/model/Block.java | 4 +- .../{BlockChain.java => Blockchain.java} | 14 ++-- src/main/java/model/Miner.java | 8 +-- src/main/java/model/Transaction.java | 2 +- src/main/java/util/FileManagement.java | 6 +- src/main/java/util/TransactionsGenerator.java | 39 ++++------- src/main/resources/img/blockchain.png | Bin 0 -> 101084 bytes ...lockChainTest.java => BlockchainTest.java} | 24 +++---- 11 files changed, 69 insertions(+), 116 deletions(-) create mode 100644 README.md rename src/main/java/model/{BlockChain.java => Blockchain.java} (94%) create mode 100644 src/main/resources/img/blockchain.png rename src/test/java/{BlockChainTest.java => BlockchainTest.java} (80%) diff --git a/.gitignore b/.gitignore index 1e5d2d9..2cd97a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,61 +1,10 @@ -/.idea/.gitignore -/build/reports/tests/test/css/base-style.css -/build/classes/java/main/model/Block.class -/out/production/blockchain_gitea/model/Block.class -/build/classes/java/main/model/BlockChain.class -/out/production/blockchain_gitea/model/BlockChain.class -/blockChain.txt -/build/classes/java/test/BlockChainTest.class -/build/reports/tests/test/classes/BlockChainTest.html -/.gradle/buildOutputCleanup/buildOutputCleanup.lock -/.gradle/buildOutputCleanup/cache.properties -/.gradle/checksums/checksums.lock -/.idea/compiler.xml -/build/reports/tests/test/packages/default-package.html -/.gradle/7.1/dependencies-accessors/dependencies-accessors.lock -/.gradle/7.1/executionHistory/executionHistory.lock -/.gradle/7.1/fileHashes/fileHashes.lock -/build/classes/java/main/util/FileManagement.class -/out/production/blockchain_gitea/util/FileManagement.class -/.gradle/7.1/dependencies-accessors/gc.properties -/.gradle/7.1/gc.properties -/.gradle/vcs-1/gc.properties -/.idea/gradle.xml -/gradle/wrapper/gradle-wrapper.jar -/gradle/wrapper/gradle-wrapper.properties +/.idea/* +/.gradle/* +/build/* +/out/* +/gradle/* /gradlew /gradlew.bat -/build/classes/java/main/util/HashFunction.class -/out/production/blockchain_gitea/util/HashFunction.class -/build/reports/tests/test/index.html -/.idea/sonarlint/issuestore/index.pb -/.idea/jarRepositories.xml -/.gradle/7.1/fileChanges/last-build.bin -/build/classes/java/main/Main.class -/out/production/blockchain_gitea/Main.class -/build/classes/java/main/model/Miner.class -/out/production/blockchain_gitea/model/Miner.class -/.idea/misc.xml -/build/classes/java/main/exceptions/NoSelfTransactionException.class -/build/classes/java/main/exceptions/NotEnoughCoinsException.class -/out/production/blockchain_gitea/exceptions/NotEnoughCoinsException.class -/build/test-results/test/binary/output.bin -/build/test-results/test/binary/output.bin.idx -/build/tmp/compileJava/previous-compilation-data.bin -/build/tmp/compileTestJava/previous-compilation-data.bin +/blockchain.txt /KeyPair/privateKey -/.idea/inspectionProfiles/Project_Default.xml -/KeyPair/publicKey -/build/reports/tests/test/js/report.js -/build/test-results/test/binary/results.bin -/.idea/runConfigurations.xml -/build/classes/java/main/util/Security.class -/out/production/blockchain_gitea/util/Security.class -/build/reports/tests/test/css/style.css -/build/test-results/test/TEST-BlockChainTest.xml -/build/classes/java/main/model/Transaction.class -/out/production/blockchain_gitea/model/Transaction.class -/build/classes/java/main/util/TransactionsGenerator.class -/out/production/blockchain_gitea/util/TransactionsGenerator.class -/.idea/uiDesigner.xml -/.idea/vcs.xml +/KeyPair/publicKey \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..376fcd8 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +

Blockchain

+ +Blockchain implementation with following characteristics: + +- Ability to store transactions between users. +- Mining reward for each block added to the blockchain. +- Proof of work with magic number self-balancing hashing. +- SHA-256 algorithm based hashing. + +Main method allows to test it by creating fake miners, and it is also included a transaction generator to mock a series of users interacting each other. +Execution example: + + ![](src/main/resources/img/blockchain.png) \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index f4111ed..f1af7e8 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -3,7 +3,7 @@ import java.io.IOException; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; -import model.BlockChain; +import model.Blockchain; import util.TransactionsGenerator; import model.Miner; import util.FileManagement; @@ -14,7 +14,7 @@ public final class Main { public static void main(final String[] args) throws InterruptedException, IOException { final var nThreads = Runtime.getRuntime().availableProcessors(); - final var blockChain = BlockChain.getInstance(); + final var blockchain = Blockchain.getInstance(); // Cryptographic keys management final File publicKey = new File(Security.PUBLIC_KEY); @@ -27,13 +27,13 @@ public final class Main { final var transactionsExecutor = Executors.newScheduledThreadPool(nThreads); // Mocks a generator to send transactions into the blockchain - transactionsExecutor.scheduleAtFixedRate(new TransactionsGenerator(blockChain), 0, 200, TimeUnit.MILLISECONDS); + transactionsExecutor.scheduleAtFixedRate(new TransactionsGenerator(blockchain), 0, 200, TimeUnit.MILLISECONDS); final var minerExecutor = Executors.newFixedThreadPool(nThreads); // Creation of 15 miners IntStream.range(0, 15) - .mapToObj(minerId -> new Miner(minerId, blockChain)) + .mapToObj(minerId -> new Miner(minerId, blockchain)) .forEach(minerExecutor::submit); minerExecutor.shutdown(); @@ -48,7 +48,7 @@ public final class Main { transactionsExecutor.shutdownNow(); } - FileManagement.saveBlockChain(blockChain); + FileManagement.saveBlockchain(blockchain); } diff --git a/src/main/java/model/Block.java b/src/main/java/model/Block.java index f6952a4..7ab5d9a 100644 --- a/src/main/java/model/Block.java +++ b/src/main/java/model/Block.java @@ -48,7 +48,7 @@ public class Block implements Serializable { public String toString() { return "Block: " + "\n" + "Created by miner #" + this.minerId + "\n" - + "miner #" + this.minerId + " gets 100 VC\n" + + "miner #" + this.minerId + " gets 100 KarmaCoins\n" + "Id: " + this.id + "\n" + "Timestamp: " + this.timeStamp + "\n" + "Magic number: " + this.magicNumber + "\n" @@ -61,7 +61,7 @@ public class Block implements Serializable { public String messagesToString() { return transactions.isEmpty() ? "No transactions\n" : transactions.stream() - .map(m -> "ID: ".concat(String.valueOf(m.getId()).concat(" - ").concat(m.getText()).concat("\n"))) + .map(m -> "Id: ".concat(String.valueOf(m.getId()).concat(" - ").concat(m.getText()).concat("\n"))) .collect(Collectors.joining()); } diff --git a/src/main/java/model/BlockChain.java b/src/main/java/model/Blockchain.java similarity index 94% rename from src/main/java/model/BlockChain.java rename to src/main/java/model/Blockchain.java index 39dd89a..16c5fac 100644 --- a/src/main/java/model/BlockChain.java +++ b/src/main/java/model/Blockchain.java @@ -18,7 +18,7 @@ import java.util.stream.Collectors; import static java.lang.String.valueOf; -public class BlockChain implements Serializable { +public class Blockchain implements Serializable { private static final long serialVersionUID = 1L; private static final float LOWER_LIMIT_SECS = 0.1F; @@ -35,17 +35,17 @@ public class BlockChain implements Serializable { private int magicNumber; private float generationSecs = 0; - public static BlockChain getInstance() { + public static Blockchain getInstance() { try { - final BlockChain blockChain = (BlockChain) FileManagement.loadBlockChain(); - if (!blockChain.validateBlockchain()) { + final Blockchain blockchain = (Blockchain) FileManagement.loadBlockchain(); + if (!blockchain.validateBlockchain()) { System.out.println("Blockchain not valid! Creating new one"); - return new BlockChain(); + return new Blockchain(); } else { - return blockChain; + return blockchain; } } catch (final ClassNotFoundException | IOException e) { - return new BlockChain(); + return new Blockchain(); } } diff --git a/src/main/java/model/Miner.java b/src/main/java/model/Miner.java index 6586b96..441326e 100644 --- a/src/main/java/model/Miner.java +++ b/src/main/java/model/Miner.java @@ -3,16 +3,16 @@ package model; public class Miner implements Runnable { private final int minerId; - private final BlockChain blockChain; + private final Blockchain blockchain; - public Miner(final int minerId, final BlockChain blockChain) { + public Miner(final int minerId, final Blockchain blockchain) { this.minerId = minerId; - this.blockChain = blockChain; + this.blockchain = blockchain; } @Override public void run() { - blockChain.addBlock(minerId); + blockchain.addBlock(minerId); } } diff --git a/src/main/java/model/Transaction.java b/src/main/java/model/Transaction.java index 9419ae1..171da38 100644 --- a/src/main/java/model/Transaction.java +++ b/src/main/java/model/Transaction.java @@ -23,7 +23,7 @@ public class Transaction implements Serializable { final PublicKey publicKey ) throws NoSuchAlgorithmException, InvalidKeyException, SignatureException { this.id = id; - this.text = sender + " sent " + amount + " VC to " + receiver; + this.text = sender + " sent " + amount + " KarmaCoins to " + receiver; this.signature = Security.sign(text, privateKey); this.publicKey = publicKey; } diff --git a/src/main/java/util/FileManagement.java b/src/main/java/util/FileManagement.java index 0ec215a..bfabf90 100644 --- a/src/main/java/util/FileManagement.java +++ b/src/main/java/util/FileManagement.java @@ -11,13 +11,13 @@ import java.io.ObjectOutputStream; public final class FileManagement { - private static final String BLOCKCHAIN = "blockChain.txt"; + private static final String BLOCKCHAIN = "blockchain.txt"; private FileManagement() { throw new IllegalStateException("FileManagement class"); } - public static void saveBlockChain(final Object obj) throws IOException { + public static void saveBlockchain(final Object obj) throws IOException { final FileOutputStream fos = new FileOutputStream(BLOCKCHAIN); final BufferedOutputStream bos = new BufferedOutputStream(fos); final ObjectOutputStream oos = new ObjectOutputStream(bos); @@ -25,7 +25,7 @@ public final class FileManagement { oos.close(); } - public static Object loadBlockChain() throws IOException, ClassNotFoundException { + public static Object loadBlockchain() throws IOException, ClassNotFoundException { final FileInputStream fis = new FileInputStream(BLOCKCHAIN); final BufferedInputStream bis = new BufferedInputStream(fis); final ObjectInputStream ois = new ObjectInputStream(bis); diff --git a/src/main/java/util/TransactionsGenerator.java b/src/main/java/util/TransactionsGenerator.java index c19394d..f9dae46 100644 --- a/src/main/java/util/TransactionsGenerator.java +++ b/src/main/java/util/TransactionsGenerator.java @@ -2,14 +2,7 @@ package util; import java.util.Arrays; import java.util.stream.Stream; -import model.BlockChain; -import exceptions.NotEnoughCoinsException; - -import java.io.IOException; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.security.SignatureException; -import java.security.spec.InvalidKeySpecException; +import model.Blockchain; import java.util.Random; public class TransactionsGenerator implements Runnable { @@ -20,11 +13,11 @@ public class TransactionsGenerator implements Runnable { "Thom", "Jonny", "Ed", "Colin", "Phil" ).toArray(String[]::new); - private final BlockChain blockChain; + private final Blockchain blockchain; - public TransactionsGenerator(final BlockChain blockChain) { - this.blockChain = blockChain; - if (blockChain.getUsersCoins().isEmpty()) { + public TransactionsGenerator(final Blockchain blockchain) { + this.blockchain = blockchain; + if (blockchain.getUsersCoins().isEmpty()) { setInitialUserCoins(); } } @@ -32,20 +25,18 @@ public class TransactionsGenerator implements Runnable { @Override public void run() { try { - blockChain.acceptTransaction( - blockChain.getNextTransactionId(), + blockchain.acceptTransaction( + blockchain.getNextTransactionId(), getRandomUserName(), getRandomAmount(), getRandomUserName() ); - } catch (final NoSuchAlgorithmException | - SignatureException | - InvalidKeyException | - IOException | - InvalidKeySpecException | - NotEnoughCoinsException e) - { - e.printStackTrace(); +/* + Catching throwable instead of exception to avoid ScheduledExecutorService from stop working + because any thrown exception or error reaching the executor causes the executor to halt. +*/ + } catch (final Throwable t) { + t.printStackTrace(); } } @@ -55,13 +46,13 @@ public class TransactionsGenerator implements Runnable { private int getRandomAmount(){ final int MIN_AMOUNT = 1; - final int MAX_AMOUNT = 100; + final int MAX_AMOUNT = 50; return random.nextInt((MAX_AMOUNT - MIN_AMOUNT) + 1) + MIN_AMOUNT; } private void setInitialUserCoins() { - Arrays.stream(userNames).forEach(userName -> blockChain.acceptUser(userName, INITIAL_COINS)); + Arrays.stream(userNames).forEach(userName -> blockchain.acceptUser(userName, INITIAL_COINS)); } } \ No newline at end of file diff --git a/src/main/resources/img/blockchain.png b/src/main/resources/img/blockchain.png new file mode 100644 index 0000000000000000000000000000000000000000..a9aeeecc74717c6a5a464960c33e0683ffc8ea42 GIT binary patch literal 101084 zcmbTdbyOU|wl7RVfZ)M`LvVNZ5Zv9}-Q5WUx4_^U+}&+(cXxMpw{OU~=h{2>ee1sY zr+d}v?&;c9z3V5tLS&^y;9;;}z`(%Z#Y6?=!N5MsfPsNSeuf0K9PR0PgASh@euyc4 z2K_ug8wP`ceFGB{!dv;0^!wpRUI!)w{A$vc5W)i(5en09# zilzU(WY|`QR0hjK#uJ;Rfz2NsbbB|?NS3y_9d0|74O|zttYRD!U)!jPN7!NRp?b>E zD?43X@cIp1SEEzu=l4fy4&`hYj%4GXOa5lj{Zm6972Z81XuZ;YJO3Q|5i`@1nF!T( z=ciirMXS>V%=-uVv@L;I&ZJ z0@tdI_{f|kaA)hhPsDurX;?hH#uX~Uc=!(jv$Jf!6u0nxGK(PbVL8I!32$J8`|r^a zt%gU@Pwp4nH`a1Xztslu3?l3j7nHWCiv)XLx z-kBV%dZUrust~inHzDLWJmB%F;RrGtrzdP*O&i9CEdsT=(9ot@X%hl{m z@Z#s6V$?^F*nA)BV7}379+|#5dLJ#g&;WRAnkS~+q=d@XwU4uX@rkPbT8K)AIBT)h{E?=?0{uxtPymGJS)&q*NvpxNXYGF&4l9rV_}t3Z2wvST9*0Yk3aVy-8}UwDz6MNVGiC$HkPb8)=r zj3t#%aBX2|W{>(e@IKvAt0t4*)zmnOgj-1m3cXB_zjKe{%#tQQ?7cnssVIr+vSv8O#^1iUAVNIu77eyC7P8L1XLK~8t}75( z*4a0BO9g0^fY;~`Xu=D}pNccKmTqvZ&ztMdtZ^xzA?Gofqch%lFqU-PCGae@0G@p> zr|>a3yiQ0O-$`cs8<*icI~Nz9{IVa`CyztvpD@F(cE#- z_8Z9QD?tqA-Qb@d7Gmu0F$&|BvczL#kTiBB+K>>Lo_~Jxj8kQ$*6NBrHpfoAM(6P6 zL>wCh$6&nv;O=4?&dQW*FcGpHuZ&u0u?konh5mIa^Cw(CMmkk!$q9#O>8t&*?#BQX zRwccI)pTb(4xB|iY0cA{y`J}vj6gE;{^?0V`2C~&tVifpSN7ic3zOIl`Ta=mPb~8{ zn#RAk#r{rPxc~ob@@)X{&xaIAPh?eBw(RQlImy#h&Y0N<3BEtBVMz2+F--^x&&P)p z(LLEkwL047@|4KRT1wK#S74oa7swNW(8Prs0(#EHo}QjL|4b#?9U{J@Y>F_u8g{=# z2mz%dQ5&v!?zOV8D-Xg?Nwt;9#wv5H<-4XPg&K(qCo&2P zR&S~p1^%A!juvP9B?+~M#+nIg+ZlVIkyqvi`(21v_!d2s9vTCm~-WO0od@3!X z#|i7=f)j%njj+D)Q^cHcUvKK{C^^ABUd}>Fr09H1h#^BMCV>s>`*hwoc#nKZ= zwMviT%+5C7FFT^9sm`95tm&y^?fTH)iO*D}57$PAiL1<4mcDTW8Pkb8B^sE+afI4% z4|_w`E;G6zg9Y__OvvOM=eX4>=}nZUO^ZM5{+v|wVa#-)KgB3YA4m2rE+e%_ZVB(% z(J>HKFt7?y;5=AyP~8$MK>n#S?(~?d(7Yg(h|-j1p@B~1jEY{+VYo|Rmu$MNcZ+>M z#F$Sy5?cz4+{T65NmcoVi?s-7^88DfXlv(PO(&_8 z<~_k7X%vy+gkm~!QI#d(e%<7C){Bz+uk1A+3@}!h{>m06K)+wCXL5SWSF>C@>#w;I>cM^hOV~pc_piV!3U;p0LG{Mh0MmfEZDwG&^hC2Q3u7@}aV)#+1PiZ1whxj4&S{*x1k+ z8H-Fjo#&VM`Mp0BL|}~fwcp~JP>_G};PPNvdQX_v+ABlO;t_9ix!a$jgQ%Qs^F_*Z zy=Jh>n6K+Pd2}IRAr*_Y8SF1=aAg~hH1?#{+kbv~aMR0Ik}Ji{B*u&g8A(}=-~1WG zMNFo{T)cZkNw+sxx5GR+`KK6wBFjLejOUfOH7L0FM41{AuzRv7@4oFZJd##6^z3!2 z%dDwJOHGvz2T@yu{O_-i##Rr<$OwjG=RieDRPrc&7m9!t4vF(IX#D!#ofWnCn)R&v zJzKw4Gy%xGNRuAw8X6DROQ5S|9)G|LS@=kN7%k7}>*K02r}O2}B72F57N-yUN<&oH z?rW5A;K|-_YCK{y6g**?({ilrsUX2G_g$$->Nrls;XZM&;Z{lw*W!;B7kdlyYE7%O zi|C4h>IgjV9Vd%NaJ}|^5Fo&BV*~K+iTZ7VBNlVUv;P`BnAi@M;?I z*XihK40sGVIrB7YhD;g*(ga$Hh6eT&j5bVEx)yE%8k*9@u$@$1dz>TZ6SL_8+}A@S zgub)QL2_d5Slj)lp%|w6z!gp{HtZhSp!^}MfI|?3u zx)i3_fzkZD$Ar`Mw`46ild(pPFH!GZ!_8aSqj4LgCpYpex#T<|cAz-{$ znWRiGUxs}4SM&Fhr3vR|YooF|+N&f#KE(Vvc^~0e;GTy%94N3?z21^a^ z$muXhlqJ9IaibFFl=kff8-?G|qmAd}kp~{D)8Dl@-Qfhr%vv~mFj=VLPjue;SCdf) zcTCtlhttWxCFXCELh8vHFlqW2&l>UeWn~p1(ltbXBW0`us)U(!JlEnGxXzmWc#ZsvqW1FbA3*&y&Vl)J|| zS(nn!l?{7;xT4eejff63QI{RI7o6)O{Ax|uNW(9QoTr?{QbEnZ9`yT-s&f?#%a#2mUl0AR9hdVkd5{O!P+Je|cg&k^)JZ`d8|7(26MTOn6Z%#NJw%40{n#UK)uK%Y6l*fYGq!>0cZ^jA zv}kprUS6>imaBfrNp~__%(c&2e?(jI zbvSL@NsOC$dF{14gX4QB)3X!Ng;lzwR?6P(GALe-4Cq%%$`iG5J4SL!O2}1rfj*Hl z8$xKbwsam-TYHu^Jh6Pii|#3*-0@a2eyRFPi~3>=WZle&LB% zIix3j2>q;uXa5s?oQyvd4B9ZjoX&(kMWBR85)(XwHNF~Etv03-kCUgheof4XG{v|U zHsLO(&>Os;-oj9pvps!epK3O$cHiLK3@sMgo=PY*aGx5k{-7M_DQ|FFVQoY|Bc0JS zhL1A#(6scgkg>{*NSMpGX)oO2cLS(^_P3 zAGKkG7q9z+yJ{}dx$ZLT23PvTPYJK{fo&r#Hmvr72clsOLcvN;72;!d|D;Vt< zbI%^S18od66fsX8)xTWMasyXdBGzOKHD{8o<_21p>wihT)hA}u{j%HEBp9`(MBkhw zXJF6=6L9`$R|pYnAXB{BTEW#^+FO-Iv8AA6@cEX;ePW2?XYe%w_e}#L6gr);$mNWK zb8i(R4085-lNnRy)7Cg-xSr#bqBEXEu{vS#)ic9IYI$?%f57a6M~ASc+o+2{b`^xz zb06xJFZ?kEGNjzg;bBN3Vr`zPJTKlebB&-x=VO#-g)tUF#=7Fmuk*uAo11}R2SegI z_Rz9|p_+f|f~JHsKH>wpj5wi^Q*UF(jtk5E-3j=H#ezF&+H-;_PJ1 ze*>I-!=^a44pd}B*{qlso`RZsiOm zIaVY42X_YZz}S&JbFmhfnBYhWg8Yia&S7?E++dNtDU7+r!={M`gFy}*6%BP0O-tB* zQMxAnAj{ADXx|5b@RkvyIe)$Z6jIpiWTF3fcvw^i?e(_l)L$*Xi#O$bb$enTs_R!U z;1x>|V&fD7{nV90sNh>mZ4nbY{65Si%Y|!lTR~0FyDHfG^>?9_=Ynu&Yh&elXo?0T zCMH;9Ln9ghN%`gM?7zdm*~BGjPKJqvYlQts6-Dv^64sjIX{_cPa^xaX;^E^bc*7I5 zAv&OftLLbuyn(dsrYJEI)Mh^g8{279A|vk&OJJP%Xq8C@lY$5L_vZ6loMN|`IX4t` z+i(2d+Vf^giWVZ|VtKQ>*1OMz-lKCf@$y@5wf22e3M4nOgK=xH0+fXZlp`xzKLr)C znl=Ofqs#7V^sgcm?GHCs_pTz!X+{(1@~+iy`)vPP;FyjX5r_0L#3tBsi!;`;9H$S5 znvb`&Wb;F;Sb4AnxE9R&Gi`0upj-jv`FRP6eI3)-X|+8+tW&gj&Wk25T*fP6!zj1g z<}os2L|bojTidgNJbbu_cVWtDat)*KQ?=;?BQh+Us&mq4kbk+t3_gdCq?ts9m@$yX zx{QCtYAg$uL$3$Nm)XO1Wc7JXQQP%+tstbjaLhWDNg z-}4-w_thGOj8NK5LA#Z=xc?v)T~7r_>!~T~E26l-|hm&<3s; zV{#s72*Cg^!r)Ya7_Ve=zrJVElhn#3M%^%@)5err>WY9rkS$bS#;#SL?l?Ia?&|8Q zo%BbZ=iHWtjD%#XN#up0e(T@5L+wWSuc7U^vf$x*uz@rJ2N*n#*>8Z;-oYyq*If%h)f;n}6Q)llM&6TFEomCEt)vMHA(`3EDYV0Pv?R z5*AFAXyJ5jhm0|JG>G%7!!5;U5Zz>bASWTBg%0D-cJppvQZ{lkB+W1ydh_0}wHqlo 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%0Dmj8Dx^}--UzMB2 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 literal 0 HcmV?d00001 diff --git a/src/test/java/BlockChainTest.java b/src/test/java/BlockchainTest.java similarity index 80% rename from src/test/java/BlockChainTest.java rename to src/test/java/BlockchainTest.java index 6d84f1a..8240106 100644 --- a/src/test/java/BlockChainTest.java +++ b/src/test/java/BlockchainTest.java @@ -13,24 +13,24 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.IntStream; -import model.BlockChain; +import model.Blockchain; import model.Miner; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -class BlockChainTest { +class BlockchainTest { private final int nThreads = Runtime.getRuntime().availableProcessors(); private List miners; - private BlockChain blockChain; + private Blockchain blockchain; @BeforeEach public void setUp() { - blockChain = new BlockChain(); - blockChain.acceptUser("tester1", 100); - blockChain.acceptUser("tester2", 100); + blockchain = new Blockchain(); + blockchain.acceptUser("tester1", 100); + blockchain.acceptUser("tester2", 100); miners = IntStream.range(0, 5) - .mapToObj(minerId -> new Miner(minerId, blockChain)) + .mapToObj(minerId -> new Miner(minerId, blockchain)) .collect(Collectors.toList()); } @@ -41,8 +41,8 @@ class BlockChainTest { final var minerExecutor = Executors.newFixedThreadPool(nThreads); for (final Miner miner: miners){ - blockChain.acceptTransaction(blockChain.getNextTransactionId(), "tester1", 10, "tester2"); - blockChain.acceptTransaction(blockChain.getNextTransactionId(), "tester2", 10, "tester1"); + blockchain.acceptTransaction(blockchain.getNextTransactionId(), "tester1", 10, "tester2"); + blockchain.acceptTransaction(blockchain.getNextTransactionId(), "tester2", 10, "tester1"); minerExecutor.execute(miner); } @@ -52,14 +52,14 @@ class BlockChainTest { minerExecutor.shutdownNow(); } - assertTrue(blockChain.validateBlockchain()); + assertTrue(blockchain.validateBlockchain()); } @Test void block_chain_not_enough_coins_test() { final NotEnoughCoinsException thrown = assertThrows( NotEnoughCoinsException.class, - () -> blockChain.acceptTransaction( + () -> blockchain.acceptTransaction( 1, "tester1", 110, @@ -72,7 +72,7 @@ class BlockChainTest { void block_chain_not_self_transaction_test() { final NoSelfTransactionException thrown = assertThrows( NoSelfTransactionException.class, - () -> blockChain.acceptTransaction( + () -> blockchain.acceptTransaction( 1, "tester1", 10,