Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Orderer v3: BFT: Block Replication for peer and orderer #4240

Open
25 of 31 tasks
tock-ibm opened this issue May 29, 2023 · 0 comments
Open
25 of 31 tasks

Orderer v3: BFT: Block Replication for peer and orderer #4240

tock-ibm opened this issue May 29, 2023 · 0 comments
Assignees
Labels

Comments

@tock-ibm
Copy link
Contributor

tock-ibm commented May 29, 2023

Current Status

Currently the peer is using the orderer's delivery service to pull blocks in a way that is resilient to crash failures of the orderer is is pulling from. It is not resistant to some BFT attacks, in particular, the target orderer may deliberately slow down block transmission or withhold blocks (censorship).

The same is true for the orderer "sync" functionality - when an orderer is trying to catch-up with the cluster it may pull blocks from a malicious orderer that will slow it down or withold blocks.

Goal

Implement a BFT block puller that would be used in the peer and in the orderer, as described in this RFC

Solution

As described in this RFC, we will implement a block puller / delivery service client that can detect withholding attacks by inspecting block headers from multiple members in the cluster. When such an attack is detected or suspected, we'll switch the target orderer from which we pull blocks.

  • We will start by implementing a solution to the peer, then
  • Refactor this solution to isolate subcomponents that are reusable at the orderer,
  • Implement a BFT solution to allow the orderers to sync, a solution that will work both for a consenter and a follower.

Tasks

Related Issues

Part of #3771

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant