GithubHelp home page GithubHelp logo

fmpisantos / csdg6 Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 59.46 MB

Java 1.10% HTML 3.33% CSS 0.03% JavaScript 0.13% Makefile 2.01% CMake 0.04% C 77.62% C++ 1.53% Shell 0.86% Perl 3.14% M4 1.01% XSLT 0.01% Python 0.10% Roff 0.08% Batchfile 0.01% Lua 0.14% Objective-C 0.55% Ruby 0.23% Tcl 8.05% Smarty 0.01%

csdg6's Introduction

NOVA Crypto Banking Service

A Banking Service with Cryptocurrencies for New University of Lisbon

https://raw.githubusercontent.com/fmpisantos/CSDG6/master/imgs/banner/JPGs/banner-1.jpg?token=AIXAYR3EBPLQT452CHOL2YC6WGPBY

NOVA Crypto Banking Service A Banking Service with Cryptocurrencies for New University of Lisbon) - Banner #1

Description

  • The NOVA Crypto Banking Service it’s a Banking Service with Cryptocurrencies for New University of Lisbon.
  • It’s a Byzantine Fault-Tolerant platform, using distributed Consensus Proofs Agreements on all the operations/transactions of the system.

Introduction


Composition/Services of the System


Instructions

  1. Cloning the project:

    • Clone the project, doing the following command in a Terminal/Prompt (e.g., Git Bash):
      • git clone https://github.com/fmpisantos/CSDG6.git
        
    • You should see the following output:

      Instructions - Cloning the Project #1   Instructions - Cloning the Project #2
    • This will create a Project's Structure with 3 (three) main components, similar to the following:
      CSDG6
      ├── clientw1
      ├── csd
      ├── CSDBftServer
    • The previously mentioned 3 (three) main components of the Project's Structure, are the following:
      • Byzantine Fault-Tolerant Server (State Machine Replica);
      • Server's (Proxy's) REST API;
      • Client's/User's React.js/Node.js Web App;
  2. Starting the Byzantine Fault-Tolerant Server (State Machine Replica):

    • Open the CSDBftServer, in the Project's Structure's folder, as a Project, in your IDE (e.g., JetBrains' IntelliJ IDEA), as demonstrated following:

      Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #1

    • Open the BankService Java class, as demonstrated following:

      Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #2

    • Create a Main configuration to the BankService Java class, as demonstrated following:

      Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #3
      Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #4
      Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #5

    • Configure a custom Main Configuration, giving as Program argument, one of the Replica's ID defined in the Hosts' Configuration (Hosts.config file), click Apply and then, OK, as demonstrated next:

      Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #6    Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #7    Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #8    Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #9

    • Run the Main Configuration for the BankService Java class, created previously;

    • The output should look something similar to the following:

      -- Using view stored on disk
      -- Using view stored on disk
      -- ID = 0
      -- N = 4
      -- F = 1
      -- Port = 11000
      -- requestTimeout = 2000
      -- maxBatch = 400
      -- Using MACs
      -- In current view: ID:0; F:1; Processes:0(/127.0.0.1:11000),1(/127.0.0.1:11010),2(/127.0.0.1:11020),3(/127.0.0.1:11030),
      Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #10
  • Repeat the process for the number of Replicas of the System, which you want to create, as long as they are defined in the Hosts' Configuration (Hosts.config file), always providing the Replica's ID, as a Program Argument to the Main Configuration of the BankService Java class;

  • As you can see, the Key Exchange/Agreement for the Consensus Proofs Agreements between the active Replicas, are made, using the Diffie-Hellman Key Exchange/Agreement:

    -- Using view stored on disk
    -- Using view stored on disk
    -- Diffie-Hellman complete with 0
    -- ID = 1
    -- N = 4
    -- F = 1
    -- Port = 11010
    -- requestTimeout = 2000
    -- maxBatch = 400
    -- Using MACs
    -- In current view: ID:0; F:1; Processes:0(/127.0.0.1:11000),1(/127.0.0.1:11010),2(/127.0.0.1:11020),3(/127.0.0.1:11030),
    Instructions - Starting the Byzantine Fault-Tolerant Server (State Machine Replica) #11
  1. Starting the Server's (Proxy's) REST API:
  • Open the csd, in the Project's Structure's folder, as a Project, in your IDE (e.g., JetBrains' IntelliJ IDEA), as demonstrated following:

    Instructions - Starting the Server's (Proxy's) REST API #1

  • Open the CsdApplication Java class, as demonstrated following:

    Instructions - Starting the Server's (Proxy's) REST API #2

  • Run the Main configuration to the CsdApplication Java class, as demonstrated following:

    Instructions - Starting the Server's (Proxy's) REST API #3
    Instructions - Starting the Server's (Proxy's) REST API #4
    Instructions - Starting the Server's (Proxy's) REST API #5

  • During the resulting output, you should be able to see the Server's (Proxy's) REST API connecting to the Byzantine Fault-Tolerant Replicas previously created:

    (...)
    Connecting to replica 0 at /127.0.0.1:11000
    Channel active
    Connecting to replica 1 at /127.0.0.1:11010
    Channel active
    Connecting to replica 2 at /127.0.0.1:11020
    Channel active
    Connecting to replica 3 at /127.0.0.1:11030
    Channel active
    (...)
    Instructions - Starting the Server's (Proxy's) REST API #6
  1. Starting the Client/User Web App:
    • Open the clientw1, in the Project's Structure's folder;

      Instructions - Starting the Client/User Web App #1

    • Run the 2 (two) following commands in a Terminal/Prompt (e.g., Git Bash):

      • npm install
        
      • npm start
        
    • You should see an output similar to the following:

      Instructions - Starting the Client/User Web App #2    Instructions - Starting the Client/User Web App #3

    • Then, you will probably be redirected to Web Page similar to the presented following:

      Instructions - Starting the Client/User Web App #4

    • Now, you can register yourself in the NOVA Crypto Banking Service system, interacting with the Web App, previously created, as shown next:

      Instructions - Starting the Client/User Web App #5

      Instructions - Starting the Client/User Web App #6

      Instructions - Starting the Client/User Web App #7

      Instructions - Starting the Client/User Web App #8

    • Then, you will be redirected to the Login Page, where you can login to the system, as demonstrated next:

      Instructions - Starting the Client/User Web App #9

      Instructions - Starting the Client/User Web App #10

    • After that, you can create/deposit NOVA Coins on your personal account, as demonstrated next:

      Instructions - Starting the Client/User Web App #11

      Instructions - Starting the Client/User Web App #12

      Instructions - Starting the Client/User Web App #13

    • You can see all the other users are registered in the NOVA Banking Service system, doing the following operation:

      Instructions - Starting the Client/User Web App #14

      Instructions - Starting the Client/User Web App #15

    • You can also transfer NOVA Coins to the other Clients/Users, as illustrated next:

      Instructions - Starting the Client/User Web App #16

      Instructions - Starting the Client/User Web App #17


      Instructions - Starting the Client/User Web App #18


      Instructions - Starting the Client/User Web App #19


      Instructions - Starting the Client/User Web App #20


      Instructions - Starting the Client/User Web App #21


Our Currency - The NOVA Coin

  • Our system uses a cryptocurrency, called NOVA Coin, represented as following:

NOVA Coin    NOVA Coin

And now, my friends, let's start to make money transactions with our NOVA Coin!!!

Good business for all!!!


Authors


Supervisor

csdg6's People

Contributors

rubenandrebarreiro avatar bvsantos avatar

Watchers

 avatar  avatar

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.