GithubHelp home page GithubHelp logo

harmonica-project / blade Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 1.0 3.4 MB

BLADE project - BLockchain Automated DEcision process

License: GNU General Public License v3.0

Python 31.95% CSS 3.06% HTML 2.51% Dockerfile 0.50% Makefile 0.59% Shell 0.51% JavaScript 60.88%
decision-process blockchain mongodb knowledge frontend requirements-engineering react

blade's Introduction

BLADE project - BLockchain Automated DEcision process

The BLADE project aims to help companies choose between available blockchains.
From a set of requirements, this automated process will compute the most desirable blockchain alternative for your project.


Disclaimer: This project is currently on its premises, as only a few alternatives and attributes are available.

Welcome to the BLADE project! Carried by a team of researchers at the CRI (Centre de Recherche en Informatique) of Université Paris 1 Panthéon-Sorbonne, this tool aims to help making decisions regarding which blockchain to use, based on requirements.

Direct access

If you want to try the BLADE project online, a live demo is available on this website (current version: 1.2.0)!

Quick start

The Makefile at the root of this project automatically deploy two containers: one for the API, and one for the frontend. To deploy, make sure you have Docker installed on your machine, then type:

make build && make run

You can also stop and delete Docker images of the containers, by typing this command:

make stop

Manual installation

If you prefer, you can start the two services without using Docker, manually. Follow the next two tutorials to do so.

Start the API

  1. Go into the blade/api folder.
  2. Make sure that Python3 is installed, as well as pip.
sudo apt-get install python3.6

sudo apt-get install python3-pip
  1. We recommand you to create a virtual environment for your project. To do that, proceed as follows:
sudo apt-get install python3-venv

python3 -m venv .venv

source .venv/bin/activate
  1. Then, install all required pip packages:
pip install -r requirements.txt
  1. This project needs MongoDB to work. MongoDB is a NoSQL cross-platform document-oriented database program, working using JSON files as documents. PyMongo is already installed thanks to the previous command, but we need to set up the database. Proceed as follows:
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

echo  "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

sudo apt-get update

sudo apt-get install -y mongodb-org

sudo systemctl start mongod

More documentation is available on MongoDB website if needed: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/.

  1. Finally, we have to import the knowledge base from the knowledge-base directory available in this directory:
mongorestore -d knowledge-base knowledge-base

If this is not working, use a MongoDB editor such as Robo3T or Studio3T, or the MongoDB CLI to create knowledge-base database.

Start the frontend

Make sure you have Node.js version 10 or + installed on your computer, then go into the blade/front directory and type:

npm install
npm start

If your Python API is running, you should be able to use the tool in your browser, at this address: localhost:3000.

Manual decision process execution using manual_solver.py

This tool allows you to make decisions without using the frontend at all if wanted, you can just feed it with a yaml file.

This file contains all the requirements to work. Fortunately, we created one called supplychain.yaml as an example. You can edit the file to set your own requirements or create yours, following this syntax:

# This attribute does not have any requirements, just set the weight between 0 and 1, that represents the importance of the criteria in the decision (if it helps you, in our research paper, we use a Likert scale to define the values!)

cryptocurrency:
  weight: 0
  requirements: []

# This attribute does have a requirement. Mandatory indicates that this attribute is required in the decision process and any alternative that does not match with that will be automatically rejected. The value field is the value required.

storageElt:
  weight: 0
  requirements:
    key: mandatory
    value: 0.8

To run the script from that, simply type:

python3 manual_solver.py supplychain.yaml

Associated publications

Six, Nicolas. "Decision Process for Blockchain Architectures based on Requirements." CAiSE (Doctoral Consortium). 2020. (BLADE version tag: 1.2.0)

Six, Nicolas, Nicolas Herbaut, and Camille Salinesi. "Quelle Blockchain choisir? Un outil d'aide à la décision pour guider le choix de technologie Blockchain." (2020). (BLADE version tag: 1.0.0)

Contact

If you have any questions, feel free to reach us at this address: [email protected]!

blade's People

Contributors

dependabot[bot] avatar nherbaut avatar nicosix avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

nherbaut

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.