Skip to content

AlexDC-2003/research_project_noisy_wbc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 

Repository files navigation

Noisy Byzantine Agreement in Quantum Networks

Simulation Framework for a Noisy Weak Broadcast Protocol

This repository contains the code for simulation and analysis on the impact of gate-level depolarizing noise on the Weak Broadcast Protocol (WBC(3,1)), based on the implementation described in the Bachelor thesis "Noisy Byzantine Agreement in Quantum Networks: Impact of Gate Errors on a Weak Broadcast Protocol".

The goal of this code is to evaluate how hardware-level imperfections (specifically two-qubit gate depolarizing noise) affect the failure probability of the protocol under three adversarial models: no faulty, sender (S) faulty, and receiver (R0) faulty.

This thesis and repository are part of Research Project 2025, conducted at the Faculty of Electrical Engineering, Mathematics and Computer Science, Delft University of Technology.


πŸ“¦ Repository Structure

All simulations are organized in the protocol/ directory. Each adversary configuration has its own subfolder containing the full SquidASM simulation stack.

protocol/
β”œβ”€β”€ no_faulty/
β”‚   β”œβ”€β”€ application.py
β”‚   β”œβ”€β”€ config.yaml
β”‚   β”œβ”€β”€ run_simulation.py
β”‚   β”œβ”€β”€ simulation_nofaulty.py
β”‚   └── plot_nofaulty.py
β”œβ”€β”€ s_faulty/
β”‚   β”œβ”€β”€ application.py
β”‚   β”œβ”€β”€ config.yaml
β”‚   β”œβ”€β”€ run_simulation.py
β”‚   β”œβ”€β”€ simulation_sfaulty.py
β”‚   └── plot_sfaulty.py
└── r0_faulty/
    β”œβ”€β”€ application.py
    β”œβ”€β”€ config.yaml
    β”œβ”€β”€ run_simulation.py
    β”œβ”€β”€ simulation_r0faulty.py
    └── plot_r0faulty.py

File Descriptions

  • application.py β€” Implements the WBC(3,1) protocol logic for the three participating nodes.
  • config.yaml β€” Describes the network configuration (node layout, noise settings, number of qubits, etc.).
  • run_simulation.py β€” Entry point for launching the simulation with SquidASM.
  • simulation_.py β€” Manages batch simulations for different depolarizing noise levels using parallelization.
  • plot_.py β€” Generates the final failure probability plots used in the thesis.

πŸš€ Installation

To run the simulations, follow these steps:

1. Install NetSquid

NetSquid is a closed-source simulator that requires registration.

2. Install SquidASM

SquidASM is an open-source Python package that wraps NetSquid to simplify network simulations.

3. Install Python Dependencies

The code was developed in Python, alongside these following packages:

pip install matplotlib numpy pandas pyyaml

πŸ› οΈ Usage

Each strategy can be simulated independently by navigating into its folder and running the simulation_<strategy>.py file. Example:

cd protocol/no_faulty
python simulation_nofaulty.py

This will generate output data and plots showing the failure probability of the protocol at various depolarization levels. Note that the data will need to be manually aggregated and introduced in the plot files.

To generate the corresponding plot separately:

python plot_nofaulty.py

Repeat the same steps for the s_faulty and r0_faulty directories.


πŸ“˜ Documentation and References


🧹 Clean-up Notice

All unused or outdated scripts have been removed. Some debug data has been left to facilitate a better understanding of the protocol's mechanics. Each file in this repository is part of the final simulation and analysis pipeline used to produce the results cited in the accompanying thesis.


About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages