Project Link: https://github.com/rustielin/Consensus-Simulation
Flask, Javascript, Socketio
Here, we see 2 nodes with equal "hashpower," with network events (block proposals) with packaged transactions on the left.
This example as four browser tabs open, each with different unique IDs as well as an uneven split in hashpower. The node on the bottom-right has 51% voting power, which allows it to perform a 51% attack. The network is dominated by that node!
This was an internal project I worked on in my second semester at Blockchain at Berkeley.
Consensus mechanisms are at the core of many distributed systems. Consensus can be approximated (as with standard internet architecture), or can be explicitly defined and executed in conjunction with Sybil control systems, as with many of the blockchain systems we study within Blockchain at Berkeley. It is often difficult to compare consensus mechanisms. Efforts have been made to compare them in academic manner via papers, blogs, etc., but nothing truly accessible in terms of educational and pedagogical standpoint.
The vision is to create a consensus mechanism simulation that can model network behavior given initial parameters such as network topology, block size, choice of algorithm, etc. One clarification is that the simulation is less of a real scientific simulation requiring HPC, but rather a clean way for users to interact and play with consensus mechanisms – a visual and primarily educational tool rather than a number-crunching scientific simulation.