From bcfb7f58b93e6fb5f3da0000672adee80fd6a485 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A9ter=20Szil=C3=A1gyi?= <peterke@gmail.com>
Date: Mon, 10 Sep 2018 15:00:54 +0300
Subject: [PATCH] consensus/clique: only trust snapshot for genesis or les
 checkpoint

---
 consensus/clique/clique.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/consensus/clique/clique.go b/consensus/clique/clique.go
index 547290984..0ff72e55c 100644
--- a/consensus/clique/clique.go
+++ b/consensus/clique/clique.go
@@ -388,7 +388,7 @@ func (c *Clique) snapshot(chain consensus.ChainReader, number uint64, hash commo
 			}
 		}
 		// If we're at an checkpoint block, make a snapshot if it's known
-		if number%c.config.Epoch == 0 {
+		if number == 0 || (number%c.config.Epoch == 0 && chain.GetHeaderByNumber(number-1) == nil) {
 			checkpoint := chain.GetHeaderByNumber(number)
 			if checkpoint != nil {
 				hash := checkpoint.Hash()
-- 
GitLab