fabric
fabric copied to clipboard
Orderer v3: BFT: Block Replication for peer and orderer
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
-
[x] #4241
-
[x] #4243
-
[x] #4259
-
[x] #4261
-
[x] #4273
-
[x] #4277
-
[x] #4293
-
[x] #4354
-
[x] #4456
-
[x] #4306
-
[x] #4348
-
[x] #4394
-
[x] #4401
-
[x] #4346
-
[x] #4353
-
[x] #4403
-
[x] #4347
-
[x] #4351
-
[x] #4350
-
[x] #4566
-
[x] #4715
-
[x] #4719
-
[x] #4696
-
[x] #4697
-
[x] #4731
-
[ ] #4446
-
[x] #4732
-
[x] #4847
-
[ ] #4698
-
[ ] #4567
-
[ ] A block withholding detector - frugal
Related Issues
Part of #3771