A simple blockchain system in Python, semester project for Distributed Systems course at ECE⚡, NTUA🎓, academic year 2021-2022
This repository contains an implementation of a simple blockchain system with proof of work consensus, named as NoobCash. The project was elaborated for the Distributed Systems course at ECE, NTUA, academic year 2021-2022.
Details:
- We used 5 VMs for our cluster. Each VM had 1 or 2 threads, thus we had 5 or 10 nodes.
- Every node is a miner too.
- Communication is achieved with Flask REST API
- A coordinator node is resposnible for bootstraping the system. After initial communication is established each client functions as an independent node.
- A CLI app provides user functionality, interacting in the background with the server by REST point requests.
Project's assignement and report are written in greek.
Name - GitHub | |
---|---|
Stylianos Kandylakis | |
Kitsos Orfanopoulos | |
Christos Tsoufis |
OS | CPUs | RAM | Disk space |
---|---|---|---|
Ubuntu 16.04 LTS (Xenial) | 2 | 2GB | 30GB |
apt-get install zlib1g-dev
apt-get install build-essential
cd /opt
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
tar -xvf Python-3.6.3.tgz
cd Python-3.6.3
./configure
make
make install
sudo apt install python3.6
sudo apt-get install python3-venv
python3 -m venv env
source env/bin/activate
pip3 install -r requirements.txt
pip3 freeze > requirements.txt # for python3
./noobcash.sh start 5000
./noobcash.sh init 5000 5
<PORT> and <IP> of current VM
./noobcash.sh connect <PORT> <IP>
- How to build a blockchain in Python
- How to install python 3.6 on Ubuntu
- Installing and using pip and virtual environment in Python
Learn more on READMEs: