diff --git a/ethstats/ethstats.go b/ethstats/ethstats.go index 84a672280620..e059844a17e6 100644 --- a/ethstats/ethstats.go +++ b/ethstats/ethstats.go @@ -76,18 +76,12 @@ type backend interface { // reporting to ethstats type fullNodeBackend interface { backend + Miner() *miner.Miner BlockByNumber(ctx context.Context, number rpc.BlockNumber) (*types.Block, error) - CurrentBlock() *types.Header + CurrentBlock() *types.Block SuggestGasTipCap(ctx context.Context) (*big.Int, error) } -// miningNodeBackend encompasses the functionality necessary for a mining node -// reporting to ethstats -type miningNodeBackend interface { - fullNodeBackend - Miner() *miner.Miner -} - // Service implements an Ethereum netstats reporting daemon that pushes local // chain statistics up to a monitoring server. type Service struct { @@ -640,8 +634,7 @@ func (s *Service) assembleBlockStats(block *types.Block) *blockStats { fullBackend, ok := s.backend.(fullNodeBackend) if ok { if block == nil { - head := fullBackend.CurrentBlock() - block, _ = fullBackend.BlockByNumber(context.Background(), rpc.BlockNumber(head.Number.Uint64())) + block = fullBackend.CurrentBlock() } header = block.Header() td = fullBackend.GetTd(context.Background(), header.Hash()) @@ -786,11 +779,10 @@ func (s *Service) reportStats(conn *connWrapper) error { gasprice int ) // check if backend is a full node - if fullBackend, ok := s.backend.(fullNodeBackend); ok { - if miningBackend, ok := s.backend.(miningNodeBackend); ok { - mining = miningBackend.Miner().Mining() - hashrate = int(miningBackend.Miner().Hashrate()) - } + fullBackend, ok := s.backend.(fullNodeBackend) + if ok { + mining = fullBackend.Miner().Mining() + hashrate = int(fullBackend.Miner().Hashrate()) sync := fullBackend.SyncProgress() syncing = fullBackend.CurrentHeader().Number.Uint64() >= sync.HighestBlock