From bffa9f914c3892de22521385031eaffa1ed90ce9 Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Tue, 11 Dec 2018 13:54:13 -0700 Subject: [PATCH] Next leader needs to publish empties --- rfcs/0004-leader-rotation.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rfcs/0004-leader-rotation.md b/rfcs/0004-leader-rotation.md index b03a79d524..791d3eb684 100644 --- a/rfcs/0004-leader-rotation.md +++ b/rfcs/0004-leader-rotation.md @@ -43,7 +43,11 @@ A leader transmits entries during its slot. After `T` ticks, all the validators switch to the next scheduled leader. Validators must ignore entries sent outside a leader's assigned slot. -All `T` ticks must be observed from the current leader for that part of PoH to -be accepted by the cluster. If entries are not observed (leader is down) or -entries are invalid (leader is buggy or malicious), a validator should fill the -gap with empty entries and continue with PoH from the next leader. +All `T` ticks must be observed by the next leader for it to build its own +entries on. If entries are not observed (leader is down) or entries are invalid +(leader is buggy or malicious), the next leader must produce empty entries to +fill the previous leader's slot. Note that the next leader should do repair +requests in parallel, and postpone sending empty entries until it is confident +other validators also failed to observe the previous leader's entries. If a +leader incorrectly builds on empty entries, the leader following it must +replace all its entries with empties.