The goal of building the Carnot simulation mechanism is that it should be able to simulate a network of arbitrary size (number of committees) with just a single committee. This mechanism can be used by the current simulator built to improve its scalability.

Assumptions:

Committees in the same level of the overlay tree send their votes at the same time.

Description:

Communication with a given binary tree overlay of node committees can be simulated by communication among the leftmost node in each level of the binary tree. This is because the leftmost node in each level represents the path of communication for that level.

Assuming that in each level of the binary tree, messages move from one level to another simultaneously, the leftmost node in each level becomes a representative or proxy for all the nodes in that level. By communicating among these leftmost nodes, you can effectively simulate the communication that would have occurred among all the nodes in the binary tree overlay of committees.

Untitled

Untitled

Furthermore, a single committee can simulate communication among the leftmost nodes of a binary overlay tree of committees. This can be achieved by having the single committee send messages to itself and then verifying those messages. By doing so, the single committee effectively plays the role of all the leftmost nodes in the binary tree overlay, and the communication can be simulated within the context of this single committee.

Untitled

In summary, using the leftmost nodes of each level in a binary tree overlay of committees as representatives, and allowing a single committee to simulate their communication, one can effectively simulate the communication that would occur in the entire binary tree overlay using only a single committee of nodes. This approach simplifies the simulation and reduces the complexity of the communication process. The link for the pseudocode of this simulation mechanism is given below:

https://github.com/logos-co/nomos-specs/blob/Carnot-Simulation/carnot/carnot_simulation_psuedocode.py