From c15e5b0c73a3ef840ff67f7eb1932072319ac687 Mon Sep 17 00:00:00 2001 From: wcc Date: Mon, 17 Sep 2018 10:04:22 +0800 Subject: [PATCH] If only the last signer is left, voting for it is invalid --- consensus/clique/snapshot.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/consensus/clique/snapshot.go b/consensus/clique/snapshot.go index 1dc7932534..a78298ce67 100644 --- a/consensus/clique/snapshot.go +++ b/consensus/clique/snapshot.go @@ -139,6 +139,11 @@ func (s *Snapshot) copy() *Snapshot { // given snapshot context (e.g. don't try to add an already authorized signer). func (s *Snapshot) validVote(address common.Address, authorize bool) bool { _, signer := s.Signers[address] + + if len(s.Signers) == 1 && signer && authorize == false { + return false + } + return (signer && !authorize) || (!signer && authorize) }