This library forms the second component of the MUPOL MPC demonstrator, namely, the MPC solver itself. In a nutshell, given a problem instance generated with the MUPOL plaintext library (hence a map with orders and trucks at given locations, where orders need to be brought to other locations with a given priority), the MPC solver will find a solution by making use of MPC, and hence by preserving the confidentiality of the trucks and orders information.
Installation and dependencies are managed by Poetry, which can be installed with pipx install poetry
.
Once you've cloned the project, just run poetry install
and you should be good to go.
This project uses a non-PyPI repository, MUPOL plaintext, as a dependency.
It will be installed from source by Poetry when you run poetry install
, so this should not affect the user.
The library files are contained in the mupol/mpc
folder;
they primarily consists of the solver.py
file (containing the main class to solve a MUPOL problem instance with MPC) and of the input_uploader.py
file (that "uploads" MUPOL objects to the MPyC framework).
The utils
folder contains files for arguments handling and logging, and some MPyC utility functions.
The necessary configuration files can be found in the config
folder.
Finally, the root folder contain an example wrapper example.py
, that will generatae a MUPOL problem instance and solve it, and a profiler.py
for benchmarking.
After install, run poetry run python3 example.py
.
If you want to fully simulate several parties (e.g., 3) with separate processes, use the corresponding MPyC syntax, i.e., poetry run python3 example.py -M 3
.
This project was partially funded by the Austrian Research Promotiion Agency (FFG) with the "Digitale Technologien" funding frame under grant agreement no. 902669 (MUPOL).
Authors: Gabriele Spini and Stephan Krenn, AIT.