This project is an implementation for blockchain concept in Java.
- The blocks are generated by multiple miners concurrently, that keep trying to find valid blocks.
- Blocks should have the hash of the previous block in the chain.
- Block's hash should start with a number of zeros controlled by the blockchain. The blockchain increases or decreases the number of zeroes based on the time needed for the miners to mine a valid block (should not be too easy nor hard for miners to mine blocks)
- Miners finding valid blocks are awarded with an amount of virtual currency
The app is using many Java concepts. Most importantly:
- Multithreading
- Thread Sync
- Executors
- Collections
- Streams
- RegEx
- Records
- Hashing