From f67b8ce6077588ebba8f1ed66a2287225c461b5b Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Mon, 29 Jun 2020 10:21:44 +0300 Subject: [PATCH] consensus: check if payload is present in cache before validation Don't check signature correctness twice. --- pkg/consensus/consensus.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/consensus/consensus.go b/pkg/consensus/consensus.go index 0cff84edc..bb3a61bf9 100644 --- a/pkg/consensus/consensus.go +++ b/pkg/consensus/consensus.go @@ -256,12 +256,12 @@ func (s *service) getKeyPair(pubs []crypto.PublicKey) (int, crypto.PrivateKey, c // OnPayload handles Payload receive. func (s *service) OnPayload(cp *Payload) { log := s.log.With(zap.Stringer("hash", cp.Hash())) - if !s.validatePayload(cp) { - log.Debug("can't validate payload") - return - } else if s.cache.Has(cp.Hash()) { + if s.cache.Has(cp.Hash()) { log.Debug("payload is already in cache") return + } else if !s.validatePayload(cp) { + log.Debug("can't validate payload") + return } s.Config.Broadcast(cp)