ChainVote

Project for Distributed Systems Course

ISI @ UniBo

Authors: Luca Tassinari, Giovanni Antonioni, Luca Rubboli

Outline

  1. Project’s Goals
  2. Use cases
  3. Non-functional properties
  4. Technologies
  5. System Architecture
  6. Blockchain Architecture
  7. Video Demo

Project’s Goals

  • Small-scale distributed electronic voting system
  • Blockchain technology
  • Uniform API to interact with the system by means of a web application

Use cases

Non-functional properties (I)

Thanks to blockchain technology we achieve:

  • Operational integrity of the system:
    • Correctness of the operations performed by the system
  • Accountability:
    • Node Peers logs the actions performed
  • Confidentiality:
    • We used a permissioned blockchain that restrict access to data;
  • Verifiability
    • Blockchain keep tracks of all the transactions executed to obtain final results;
  • Availability
    • System will continue to serve requests even if some peers are down;

Non-functional properties (II)

We also designed the system to achieve:

  • Non-coercibility:
    • Voters are not identifiable during the voting process $\Rightarrow$ one time codes
  • Voter Authentication:
    • Voters authentication provided by the API layer

Technologies

  • Hyperledger Fabric as the blockchain infrastructure technology
    • modular and highly-configurable
      • Java as a language for smart contracts
    • offers mechanisms raising the bar of confidentiality and higher fine-grained control over ledger access (e.g. channels and private data)
  • Docker for deployment
  • ReSTful API
    • Nodejs + Express for the API layer

System Architecture

Blockchain network

network architecture

Demo

That’s all, thank you for your attention!

😊