Skip to content

VikentiosVitalis/distributed_systems

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 

Repository files navigation

DS's Custom Image

Description:

Blockchain is the technology used by most cryptocurrencies and in reality it's a distributed database which enables its users to make transactions with security, without the need of a central authority (i.e. Bank).

Task of this a project is to create the "Noobcash", a simple blockchain system in which transactions between users are registered and consensus (agreement on any subject by a group of participants) is certified with Proof-of-Work (a decentralized consensus mechanism that requires network members to expend effort in solving an encrypted hexadecimal number).

Deliverables:

  • Backend that implements the functionality of Noobcash and it is placed in the 'src' directory.

  • CLI client placed in the 'cli.py' file.

  • Web page placed in the 'templates' directory.

Built with:

The REST API is written in Python 3.8 using the following libraries:

The webapp is developed using Django 4.1.7 and:

Usage:

Inside the folder 'noobcash' install the necessary requirements:

pip install -r requirements.txt

npm install

Execution:

Bootstrap node:

python3.8 distributed_systems-main/noobcash/app.py <PORT> <IP> <Number of Children in the System> true

Simple node:

python3.8 distributed_systems-main/noobcash/app.py <PORT> <IP> <Number of Children in the System> no

Example:

python3.8 distributed_systems-main/noobcash/app.py 5000 83.212.81.180 4 true

Web Interface:

http://<IP>:<PORT>/

Run CLI:

cli.py <PORT> <IP>

If you want to run the tests inside the folders 5nodes and 10nodes the last input of every node add 5 or 10 accordingly.

Evaluation of the system:

We evaluate the performance and the scalability of Noobcash by running the system in Okeanos and perform from each node 100 transcations to the system. The transactions are placed in /test/transactions path and the script for the evaluation is named 'createPlots.py'.

Contributors: