paritytech / rhododendron

Asynchronously safe BFT consensus, implementation in Rust

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unlocking protocol

rphmeier opened this issue · comments

If a proposer for round r is locked:

  1. it multicasts RequestLockProof(r)
  2. good nodes then broadcast back their lock proof
  3. the proposer waits to receive 2f lock proofs (Locked(r, Proof) or NotLocked messages )
  4. the proposer locks to the highest one Locked(k, X) and then broadcasts it with his proposal. Note that this cannot lead to a safety violation: if something has been accepted, then at least f + 1 good guys are locked to it. If f + 1 good guys are locked to something, nothing other than that thing can be threshold-prepared, and thus nobody honest can lock to anything different in the future.
  5. honest nodes should also ignore lock proofs that don't come from the proposer