Some confusions about LibraBFT v2.0

I have some questions about LibraBFT v2.0, I am not sure if I understand correctly?

In the safety module, it says “a block becomes committed when it becomes the head of a contiguous 3-chain (three descendants with contiguous rounds)” How to understand “the head of a contiguous 3-chain”? If there is a chain like,B1 <- QC1 <- B2 <-QC2 <-B3 <- TC <- B4 <-QC4 <-B5 <-QC5 <-B6 <- QC6
1⃣️ Can B1 be committed? If can, it is committed with the form of QC6 ?
2⃣️ Should B4 contains QC2?
3⃣️Why LibraBFT v2.0 abandoned the VRF in leader selection?
4⃣️About the forking described in the paper, why a leader can propose a block on the basis of the previous two-block, but not limited to the latest block (with QC)? The paper says forking has no impact on safety. But will forking comprise the liveness?

Thanks for your attention!

2 Likes

Thanks for your thoughtful questions!

First, a couple of high-level notes:

  • The example chain you give should include a QC for B3 (the TC is to allow skipping the leader round of B4, but a QC is still required).
  • Also, please note that in several places in the whitepaper we explain that the last block in a 3-chain must itself be certified in order for the head of the chain to become committed.

To your concrete questions:

  1. based on the comment above, yes, B1 can become committed
  2. No, B4 must contain a QC for B3. If it contains a QC for B2, then it should be chained to B2, not to B3
  3. There is no technical reason, it would be possible to randomize the leader rotation in LibraBFT 2.0. We omitted it from the description for simplicity: we are in a permissioned setting, where validators are known and trusted entities who are contractually obligated to adhere to the rules of the Libra Payment Netowork.
  4. We cannot prevent a bad leader from proposing based on a 2-chain, because validators are only locked on 2-chains. This could slow down, not compromise progress, but so does a bad leader doing nothing. Liveness is guaranteed when a succession of 3 consecutive leader propose blocks one after another and all validators enter their views in time.