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).
-
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.
The REST API is written in Python 3.8 using the following libraries:
The webapp is developed using Django 4.1.7 and:
Inside the folder 'noobcash' install the necessary requirements:
pip install -r requirements.txt
npm install
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.
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'.