Coder Social home page Coder Social logo

mikalv / dynamic-weighted-byzantine-agreement Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bethrichardson/dynamic-weighted-byzantine-agreement

0.0 3.0 0.0 79 KB

Provides an implementation for the weighted byzantine agreement algorithm with scaling weights and providing a fall back from Queen algorithm to King algorithm in the case that consensus cannot be reached with Queen.

Java 100.00%

dynamic-weighted-byzantine-agreement's Introduction

Stories in Ready

Dynamic Weighted Byzantine Agreement

Implements a new model for the Weighted Byzantine Agreement Problem, which allows for the concept of an “inconsistently faulty” node. Nodes operating under load and affected by application defects can produce accurate and inaccurate responses under different conditions. By conclusively updating the weight of a faulty node to 0, previous algorithms could effectively nullify a node that could eventually stabilize back to correct responses. Our model allows for the weights of nodes to be updated back to previous levels based on good behavior. In this way, nodes that are currently behaving badly because of load or an undiagnosed defect can be weighted to 0, to simplify consensus agreements, but can then be brought back up to a previous valid weight if they again begin to produce valid responses.

Additionally, we provide further dynamic updates to the WBA solution by providing the ability for the pool of nodes to switch from using the simplified Queen Algorithm, which tolerates ρ < ¼ to the more robust King Algorithm, which tolerates ρ < ⅓. Because our system affords a set of inconsistently faulty nodes, the total weight of those that are failing fluctuates. For this reason, we provide the ability to fallback to the King Algorithm when consensus cannot be reached because of a larger pool of faulty nodes. We also provide for the ability to switch back to the Queen Algorithm if the pool of faulty nodes appears to be lower.

dynamic-weighted-byzantine-agreement's People

Contributors

bethrichardson avatar recreationalcode avatar lifanzhang avatar waffle-iron avatar

Watchers

Mikal avatar idk 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.