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.