Skip to content

Implement VRF+BFT Consensus Algorithm #5

@tnasu

Description

@tnasu

Description

Replaces the Tendermint BFT with the VRF BFT algorithm. Tendermint's implementation of PoS only uses Proposer and Validators as election probabilities.

Stories

The details of each item should be written in their respective story or task tickets. This ticket is just a summary and its pointer. Please add stories and tasks as needed.

Design Policy

The proposals outlined below are specific to LINK Network v2 and ultimately any differences from the original Tendermint should be compiled into a public Wiki page.

Implementation

The VRF election may be divided into the following several points.

Build CI environments

Test

  • Functional test
    • n-th Proposer does select the expected (n+1)-th Proposer and Validators.
    • the selected Proposer and Validators do play their respective role.
    • block generation does continue without a stall.
  • Crash fault and recovery test
    • the system does recover normally in case the selected Proposer doesn't respond.
    • the system does work normally in case the number of selected non-failure Validators equals the quorum.
    • block generation for the round fails and the system does recover normally in case the number of selected non-failure Validators less than the quorum.
  • Byzantine fault and recovery test
    • the Validators or P2P network do detect and recover correctly in case an unexpected Proposer worked.
    • the P2P network does detect and recover correctly in case an unexpected Validator worked.
  • Performance test (practical evaluation)
    • compare with Tendermint's PoS and VRF consensus (it probably be slow due to increased computational complexity).
    • measure the performance against the number of Candidates (Nodes) and Validators.

Public Document

  • New block format
  • Concrete sequence chart or flow chart
  • Fault recovery procedures

Metadata

Metadata

Assignees

No one assigned

    Labels

    G: epicGranularity: Epic issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions