EPFL DEDIS Lab: Semester Project 2019 Student: Sabrina Kall Supervisors: Cristina Basescu, Kelong Cong
Description: Implementation of a short-term transaction mechanism based on proof-of-location for intermediary speed-up step during blockchain transactions.
- knowthyneighbor: implementation
- blscosiprotocol: code for bls collective signature
- latencyprotocol: code for building and testing latency chains
- service: service for running proof-of-location
- udp: bottom-layer messaging infrastructure
- presentation: slides presenting the project
- python_graphs: python jupyter notebooks for graphs
- var_clusters
- var_clusters_multiliar
- var_liars
- var_lies
- var_nb_liars
- report: report and LaTeX source files for report
- schemas: dot files for graphs
- Go [used for implementation: version 1.2]
Individual tests can be run from the terminal within the path containing the test's file with the command
go test -run NameOfTest
If a test requires a more complex command, this will be indicated at the top of the test file
- python [used for implementation: version 3.7.3 ]
- Jupyter Notebook
Each folder contained in the python_graphs directory matches a go test file in the knowthyneighbor/latencyprotocol directory, starting with the name graph_. When you wish to create a new graph with specific parameters, first run the corresponding test to create the data. It will be written to the python_graphs directory in the matching folder.
To create a graph from this data, do the following steps.
Type into the terminal from the path to python_graphs the following command:
jupyter notebook
This should open a browser with the file system. Navigate to the folder matching your test and open the notebook a file ending in ".ipynb". Make sure the parameters at the top of the notebook match the parameters of the data you created.
Then you can click on the "double arrow" at the top of the notebook to run the code and generate the graph. It will appear both in the notebook, and will be saved in the graphs folder with the same path as the notebook.