Skip to content
A file verification system which checks a file's integrity and ownership using Blockchain and OpenPGP
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
prototypes v0.9 Apr 27, 2018
src Merge branch 'comments' after documenting blockchain Apr 23, 2019
.gitignore CLIENT: db gitignore Mar 19, 2018 Update Jun 22, 2018



This project uses Blockchain and OpenPGP to create a decentralised registry of file verification data. The registry contains the hash of the file, a signature confirming the ownership and the public key of the owner or author of the file. The signature is generated using OpenPGP, and the network is assumed to be a decentralised blockchain, making the data on the network immutable.

Run the application

There are two separate applications that need to be started for the whole system to work:

  • API (Blockchain): src/api
  • Client: src/client

Setup venv with python3

Navigate to the folders above in separate terminal windows. It is required to create a virtual environment for python before running the applications (for both directories):

$ python3 -m venv .venv

Activate the virtual environment:

$ source .venv/bin/activate

NOTE: Before processding make sure that the terminal prompt looks like this: (.venv) $

Both the API and the Client come with three bash scripts:

  • installs the required python dependencies, configures flask and create database.
  • starts the application.
  • deletes the database.

NOTE: the API application needs to be running for the Client to work as expected.

Start the applications

For a fresh setup run the ./ script followed by ./ and the terminal output should look like this:


(.venv) $ ./
 * Serving Flask app "blockAPI"
 * Running on (Press CTRL+C to quit)


(.venv) $ ./
 * Serving Flask app "blockclient"
 * Running on (Press CTRL+C to quit)

Clean up

Once you are done close the application with Ctrl + C and run the ./ script and finally, to exit the virtual environment:

(.venv) $ deactivate
You can’t perform that action at this time.