Git Product home page Git Product logo

hds-serenity-ledger's Introduction

Heyo πŸ‘‹

I'm Diogo Melita

πŸ“Œ Lisbon, Portugal

πŸŽ“ Studying Computer Science and Engineering at Instituto Superior TΓ©cnico

πŸ”¨ Languages and Tools:


Python java c cpp Git Terminal Arch Linux VS Code


⚑ GitHub Stats

d-melita

🌴 Recent GitHub Activity

Ashutosh's github activity graph

Links and Contacts:


Website: melita.pt

E-mail: [email protected]


hds-serenity-ledger's People

Contributors

carolcoelho11 avatar d-melita avatar diogoantunes25 avatar

Watchers

 avatar

hds-serenity-ledger's Issues

Add genesis file

A genesis file is required to specify the initial balances in the blockchain (otherwise, not transactions can go through).

  • Define the syntax for the genesis file
  • Add loading of genesis file (mostly likely using moneySpawn method)
  • Basic testing
  • Modify setup file to also generate a file that given k coins to each participant (for example)

Move entire application to new command and state

Update the HDSLedgerService and the NodeService to serve updates to the BankState.

  • Replace String* by Bank* and do proper updates to code
  • Remove Slot from HDSLedgerService to reduce coupling
  • Fix tests
  • e2e balance update
    • Optional slotId in Slot
  • Load genesis file #27
  • Add checkBalance
  • e2e balance check

move to open set of clients

Remove clients from config. Clients should initiate connections and they are identified by their public key in the remaining system.

Change system parameters via env variables

Parameters such as the batch size, batch formation timeout and the starting timeout for QBFT should be settable by environment variables (this might apply to more constants in the system).

Running replica in byzantine mode

  • Add three byzantine handlers
    • If leader, only propose after half the timeout has elapsed
    • If leader, proposed incorrectly signed transaction
    • If leader, only propose after half the timeout has elapsed and proposed incorrectly signed transaction
  • Change NodeService to be able to be instantiaded with one of these byzantine handlers (just add a new constructor that takes some enum that specifies the byzantin hook)
  • Change the main class to read from the terminal which version to instantiate (default is good replica, but one of the other three options can be specified)

Dummy signing utils

Have flag in SigningUtils that allows for dummy cryptography to check impact of signatures in protocol performance

QBFT: don't allow messages with less than quorum of justification when there's a value

The protocol doesn't require that all messages are justified with more than a quorum. The only requirement is that the set of messages, as a set is justified. However, any good node sends a quorum of justifications whenever a value is sent. For this reason, the extra complacency is not required and can thus be factored out for better performance.

Factor state into class

Factor ledger state into a proper class.
This should avoid doing serialization and deserialization of state manually and will prove useful in the second part of the project

tests: remove redundant key generation

Currently, any test that requires any signing/keys needs to generate the keys itself. It would be great to find a design for the testing suite that avoid this redundant and time-consuming operation.

QBFT: Add missing rule

The last rule of the round-change mechanism is missing, which compromises the system's liveness

rename APLink

Currently, APLink is not a perfectly authenticated link, but rather a perfect link only. For this reason a renaming should be done

QBFT: fix highestPrepared and quorum count

Currently, highestPrepared is vulnerable to Byz that send values that are too high (as the messages all go into a single set/bucket)
This needs to be fixed. Might imply changes to other parts of the code as well

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.