Liveliness and finalizing a notorized round after broadcasting a nullify #2379
-
|
Hi all, I ran into an issue while testing. A network of 4 validators wasn't able to finalize a round, and hence lost liveliness. It's very possible that this issue is on my end. We just implemented state sync, and maybe something got out of whack. Here is an excerpt from the logs from one of the validators: After looking at the logs, here is my theory for what happened:
Also note that I was bringing in commonware from this commit hash. I can't find anything about this in the papers, so I'm curious if anyone else experienced this, or if I'm missing something here. Thanks! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
|
What you are observing is the correct behavior 👍 Once a validator broadcasts a nullify, it cannot broadcast a finalize. If 2f+1 broadcast nullify (before seeing the notarization before the timeout), that view cannot be directly finalized. A future view, however, may indirectly finalize the view if it builds on the block in the constructed notarization. You should not assume every view will have a direct finalization (not a guarantee of Simplex). |
Beta Was this translation helpful? Give feedback.
What you are observing is the correct behavior 👍
Once a validator broadcasts a nullify, it cannot broadcast a finalize. If 2f+1 broadcast nullify (before seeing the notarization before the timeout), that view cannot be directly finalized. A future view, however, may indirectly finalize the view if it builds on the block in the constructed notarization.
You should not assume every view will have a direct finalization (not a guarantee of Simplex).