mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 02:42:27 +00:00
HookPenalty goes the new way
This commit is contained in:
parent
9d118a4620
commit
9e6bc884da
1 changed files with 7 additions and 6 deletions
|
|
@ -244,9 +244,9 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
|
||||||
|
|
||||||
// Hook scans for bad masternodes and decide to penalty them
|
// Hook scans for bad masternodes and decide to penalty them
|
||||||
c.HookPenalty = func(chain consensus.ChainReader, blockNumberEpoc uint64) ([]common.Address, error) {
|
c.HookPenalty = func(chain consensus.ChainReader, blockNumberEpoc uint64) ([]common.Address, error) {
|
||||||
client, err := eth.blockchain.GetClient()
|
canonicalState, err := eth.blockchain.State()
|
||||||
if err != nil {
|
if canonicalState == nil || err != nil {
|
||||||
return nil, err
|
log.Crit("Can't get state at head of canonical chain", "head number", eth.blockchain.CurrentHeader().Number.Uint64(), "err", err)
|
||||||
}
|
}
|
||||||
prevEpoc := blockNumberEpoc - chain.Config().Posv.Epoch
|
prevEpoc := blockNumberEpoc - chain.Config().Posv.Epoch
|
||||||
if prevEpoc >= 0 {
|
if prevEpoc >= 0 {
|
||||||
|
|
@ -254,12 +254,13 @@ func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) {
|
||||||
prevHeader := chain.GetHeaderByNumber(prevEpoc)
|
prevHeader := chain.GetHeaderByNumber(prevEpoc)
|
||||||
penSigners := c.GetMasternodes(chain, prevHeader)
|
penSigners := c.GetMasternodes(chain, prevHeader)
|
||||||
if len(penSigners) > 0 {
|
if len(penSigners) > 0 {
|
||||||
blockSignerAddr := common.HexToAddress(common.BlockSigners)
|
|
||||||
// Loop for each block to check missing sign.
|
// Loop for each block to check missing sign.
|
||||||
for i := prevEpoc; i < blockNumberEpoc; i++ {
|
for i := prevEpoc; i < blockNumberEpoc; i++ {
|
||||||
blockHeader := chain.GetHeaderByNumber(i)
|
bheader := chain.GetHeaderByNumber(i)
|
||||||
|
bhash := bheader.Hash()
|
||||||
|
block := chain.GetBlock(bhash, i)
|
||||||
if len(penSigners) > 0 {
|
if len(penSigners) > 0 {
|
||||||
signedMasternodes, err := contracts.GetSignersFromContract1(blockSignerAddr, client, blockHeader.Hash())
|
signedMasternodes, err := contracts.GetSignersFromContract(canonicalState, block)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue