The system employs various properties of a real blockchain system such as Transact, Mine, Gossip, and Recieve. In this system, a new node is added to the whole network after a fixed time (e.g. 6 seconds). The same procedure will also happen for transactions and mine.
To seem more realistic, we defined several parameters to have control over the system performance. For instance, you can set a parameter that specifies how many percentages of the nodes are directly connected.
The educational part is a function that is supposed to be completed by the students in a way when it is called, the overall cost (distance) of the whole network takes a step to be decreased (graph shortest path algorithms)
In this project, we simulated a basic blockchain system for educational purposes.
This blockchain system is available in two programming languages: Java and Python.
The most impressive property of this system (which is available in both languages) is Multithreading. Handling different threads and their critical section was the most challenging and also attractive part of this project.