diff options
-rw-r--r-- | cmd/geth/main.go | 6 | ||||
-rw-r--r-- | eth/bad_block.go | 73 | ||||
-rw-r--r-- | eth/handler.go | 19 |
3 files changed, 2 insertions, 96 deletions
diff --git a/cmd/geth/main.go b/cmd/geth/main.go index e942d53c8..6376b4210 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -165,12 +165,6 @@ func init() { // Start system runtime metrics collection go metrics.CollectProcessMetrics(3 * time.Second) - // This should be the only place where reporting is enabled - // because it is not intended to run while testing. - // In addition to this check, bad block reports are sent only - // for chains with the main network genesis block and network id 1. - eth.EnableBadBlockReporting = true - utils.SetupNetwork(ctx) return nil } diff --git a/eth/bad_block.go b/eth/bad_block.go deleted file mode 100644 index dd1ced804..000000000 --- a/eth/bad_block.go +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of the go-ethereum library. -// -// The go-ethereum library is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// The go-ethereum library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public License -// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. - -package eth - -import ( - "bytes" - "encoding/json" - "fmt" - "net/http" - "time" - - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/rlp" -) - -const ( - // The Ethereum main network genesis block. - defaultGenesisHash = "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3" - badBlocksURL = "https://badblocks.ethdev.com" -) - -var EnableBadBlockReporting = false - -func sendBadBlockReport(block *types.Block, err error) { - if !EnableBadBlockReporting { - return - } - - var ( - blockRLP, _ = rlp.EncodeToBytes(block) - params = map[string]interface{}{ - "block": common.Bytes2Hex(blockRLP), - "blockHash": block.Hash().Hex(), - "errortype": err.Error(), - "client": "go", - } - ) - if !block.ReceivedAt.IsZero() { - params["receivedAt"] = block.ReceivedAt.UTC().String() - } - if p, ok := block.ReceivedFrom.(*peer); ok { - params["receivedFrom"] = map[string]interface{}{ - "enode": fmt.Sprintf("enode://%x@%v", p.ID(), p.RemoteAddr()), - "name": p.Name(), - "protocolVersion": p.version, - } - } - jsonStr, _ := json.Marshal(map[string]interface{}{"method": "eth_badBlock", "id": "1", "jsonrpc": "2.0", "params": []interface{}{params}}) - client := http.Client{Timeout: 8 * time.Second} - resp, err := client.Post(badBlocksURL, "application/json", bytes.NewReader(jsonStr)) - if err != nil { - log.Debug("Failed to report bad block", "err", err) - return - } - log.Debug("Bad block report posted", "status", resp.StatusCode) - resp.Body.Close() -} diff --git a/eth/handler.go b/eth/handler.go index 445272060..ef62a3d65 100644 --- a/eth/handler.go +++ b/eth/handler.go @@ -92,8 +92,6 @@ type ProtocolManager struct { // wait group is used for graceful shutdowns during downloading // and processing wg sync.WaitGroup - - badBlockReportingEnabled bool } // NewProtocolManager returns a new ethereum sub protocol manager. The Ethereum sub protocol manages peers capable @@ -163,7 +161,7 @@ func NewProtocolManager(config *params.ChainConfig, fastSync bool, networkId int // Construct the different synchronisation mechanisms manager.downloader = downloader.New(downloader.FullSync, chaindb, manager.eventMux, blockchain.HasHeader, blockchain.HasBlockAndState, blockchain.GetHeaderByHash, blockchain.GetBlockByHash, blockchain.CurrentHeader, blockchain.CurrentBlock, blockchain.CurrentFastBlock, blockchain.FastSyncCommitHead, - blockchain.GetTdByHash, blockchain.InsertHeaderChain, manager.insertChain, blockchain.InsertReceiptChain, blockchain.Rollback, + blockchain.GetTdByHash, blockchain.InsertHeaderChain, manager.blockchain.InsertChain, blockchain.InsertReceiptChain, blockchain.Rollback, manager.removePeer) validator := func(header *types.Header) error { @@ -174,26 +172,13 @@ func NewProtocolManager(config *params.ChainConfig, fastSync bool, networkId int } inserter := func(blocks types.Blocks) (int, error) { atomic.StoreUint32(&manager.synced, 1) // Mark initial sync done on any fetcher import - return manager.insertChain(blocks) + return manager.blockchain.InsertChain(blocks) } manager.fetcher = fetcher.New(blockchain.GetBlockByHash, validator, manager.BroadcastBlock, heighter, inserter, manager.removePeer) - if blockchain.Genesis().Hash().Hex() == defaultGenesisHash && networkId == 1 { - log.Debug("Bad block reporting is enabled") - manager.badBlockReportingEnabled = true - } - return manager, nil } -func (pm *ProtocolManager) insertChain(blocks types.Blocks) (i int, err error) { - i, err = pm.blockchain.InsertChain(blocks) - if pm.badBlockReportingEnabled && core.IsValidationErr(err) && i < len(blocks) { - go sendBadBlockReport(blocks[i], err) - } - return i, err -} - func (pm *ProtocolManager) removePeer(id string) { // Short circuit if the peer was already removed peer := pm.peers.Peer(id) |