erigon-pulse/eth/ethutils/utils.go.go
2021-03-23 16:00:07 +07:00

34 lines
1014 B
Go

package ethutils
import (
"github.com/ledgerwatch/turbo-geth/common"
"github.com/ledgerwatch/turbo-geth/consensus"
"github.com/ledgerwatch/turbo-geth/core/types"
"github.com/ledgerwatch/turbo-geth/log"
)
// IsLocalBlock checks whether the specified block is mined
// by local miner accounts.
//
// We regard two types of accounts as local miner account: etherbase
// and accounts specified via `txpool.locals` flag.
func IsLocalBlock(engine consensus.Engine, etherbase common.Address, txPoolLocals []common.Address, header *types.Header) bool {
author, err := engine.Author(header)
if err != nil {
log.Warn("Failed to retrieve block author", "number", header.Number, "header_hash", header.Hash(), "err", err)
return false
}
// Check whether the given address is etherbase.
if author == etherbase {
return true
}
// Check whether the given address is specified by `txpool.local`
// CLI flag.
for _, account := range txPoolLocals {
if account == author {
return true
}
}
return false
}