Skip to content

[Hackathon] PBFT coordination: BFT consensus, view-change, adversaria…#45

Open
lily1c wants to merge 2 commits into
projnanda:mainfrom
lily1c:hackathon-pbft-bft-coordination
Open

[Hackathon] PBFT coordination: BFT consensus, view-change, adversaria…#45
lily1c wants to merge 2 commits into
projnanda:mainfrom
lily1c:hackathon-pbft-bft-coordination

Conversation

@lily1c

@lily1c lily1c commented Jun 30, 2026

Copy link
Copy Markdown

Problem 10 — Partition-tolerant BFT coordination (PBFT)
Implements Castro-Liskov PBFT as a coordination plugin (pbft), alongside contract_net.
What's included

Three-phase signed consensus (pre-prepare / prepare / commit) with 2f+1 quorum certificates. Votes are signed via did_key; forged votes are rejected at resolve and commit.
Safe view-change: on leader failure, replicas issue signed view-change messages carrying prepared-proofs, and the new leader is bound to re-propose any prepared value — so no committed value can be dropped across a view change.
Four adversarial validators, each tested in both directions (catches the attack, passes honest traces): conflicting-commits, forged-quorum, equivocation, stuck-view.
Two scenarios: bft_partition (7 replicas, 4/3 split — minority below quorum commits nothing) and bft_byzantine (7 replicas, f=2 equivocating).

Safety argument: any two 2f+1 quorums out of 3f+1 overlap in an honest replica, which signs only one value per slot — so conflicting commits are impossible, and the view-change binding preserves this across leader changes.
Tests: 37 passing (test_pbft.py, test_coordination_validators.py, test_bft_scenarios.py), ruff-clean

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant