From 63b869dba24b48e75c0415a51f2ee679e101aaea Mon Sep 17 00:00:00 2001 From: Nguyen Ba Tam Date: Wed, 10 Oct 2018 11:53:44 +0700 Subject: [PATCH] update log & check case a master node in,out continuity --- consensus/posv/posv.go | 8 +++----- eth/backend.go | 15 ++++----------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/consensus/posv/posv.go b/consensus/posv/posv.go index fa26bdf4c6..f87fd536cd 100644 --- a/consensus/posv/posv.go +++ b/consensus/posv/posv.go @@ -212,8 +212,8 @@ type Posv struct { lock sync.RWMutex // Protects the signer fields HookReward func(chain consensus.ChainReader, state *state.StateDB, header *types.Header) error + HookPenalty func(chain consensus.ChainReader, blockNumberEpoc uint64) ([]common.Address, error) HookPrepare func(header *types.Header, signers []common.Address) error - HookPenalty func(chain consensus.ChainReader, signers []common.Address, blockNumberEpoc uint64) ([]common.Address, error) } // New creates a Posv proof-of-stake-voting consensus engine with the initial @@ -641,7 +641,7 @@ func (c *Posv) Prepare(chain consensus.ChainReader, header *types.Header) error signers := snap.signers() if c.HookPenalty != nil { - penSigners, _ := c.HookPenalty(chain, signers, number) + penSigners, _ := c.HookPenalty(chain, number) if len(penSigners) > 0 { // Keep remove penalty signer out of signer list. @@ -654,8 +654,8 @@ func (c *Posv) Prepare(chain consensus.ChainReader, header *types.Header) error } var penBytes []byte + log.Debug("Penalty Info", "signers", penSigners, "number", number) for _, penSigner := range penSigners { - log.Error("penSigner", "penSigner", penSigner.String()) // Convert number to byte. penByte := common.LeftPadBytes([]byte(fmt.Sprintf("%d", penSigner)), common.AddressLength) penBytes = append(penBytes, penByte...) @@ -672,7 +672,6 @@ func (c *Posv) Prepare(chain consensus.ChainReader, header *types.Header) error checkEpoc := uint64(i) * c.config.Epoch if number > checkEpoc { prevEpoc := number - checkEpoc - log.Error("prevEpoc", "prevEpoc", prevEpoc, "checkEpoc", checkEpoc, "number", number) prevHeader := chain.GetHeaderByNumber(prevEpoc) prevEpocBlock := chain.GetBlock(prevHeader.Hash(), prevEpoc) penalties := prevEpocBlock.Penalties() @@ -682,7 +681,6 @@ func (c *Posv) Prepare(chain consensus.ChainReader, header *types.Header) error for _, signer := range prevSigners { for _, prevSigner := range prevSigners { if signer == prevSigner { - log.Error("preventSigner", "preventSigner", signer.String()) preventSigners = append(preventSigners, signer) } } diff --git a/eth/backend.go b/eth/backend.go index ff42d6e658..793e602b4e 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -244,23 +244,15 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { return nil } // Hook penalty. - c.HookPenalty = func(chain consensus.ChainReader, signers []common.Address, blockNumberEpoc uint64) ([]common.Address, error) { + c.HookPenalty = func(chain consensus.ChainReader, blockNumberEpoc uint64) ([]common.Address, error) { client, err := eth.blockchain.GetClient() if err != nil { log.Error("Fail to connect IPC client for blockSigner", "error", err) } prevEpoc := blockNumberEpoc - chain.Config().Posv.Epoch - var penSigners []common.Address if prevEpoc > 0 { prevHeader := chain.GetHeaderByNumber(prevEpoc) - prevSigners := c.GetMasternodes(chain, prevHeader) - for _, signer := range signers { - for _, prevSigner := range prevSigners { - if signer == prevSigner { - penSigners = append(penSigners, signer) - } - } - } + penSigners := c.GetMasternodes(chain, prevHeader) if len(penSigners) > 0 { blockSignerAddr := common.HexToAddress(common.BlockSigners) // Loop for each block to check missing sign. @@ -282,9 +274,10 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) { } } } + return penSigners, nil } - return penSigners, nil + return []common.Address{}, nil } // Hook reward for posv validator.