mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-19 02:12:23 +00:00
core: improve getBadBlocks to return full block rlp
This commit is contained in:
parent
400332b99d
commit
caf0e1fc37
1 changed files with 20 additions and 8 deletions
|
|
@ -1389,23 +1389,35 @@ func (bc *BlockChain) update() {
|
||||||
type BadBlockArgs struct {
|
type BadBlockArgs struct {
|
||||||
Hash common.Hash `json:"hash"`
|
Hash common.Hash `json:"hash"`
|
||||||
Header *types.Header `json:"header"`
|
Header *types.Header `json:"header"`
|
||||||
|
BlockRLP string `json:"blockrlp"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// BadBlocks returns a list of the last 'bad blocks' that the client has seen on the network
|
// BadBlocks returns a list of the last 'bad blocks' that the client has seen on the network
|
||||||
func (bc *BlockChain) BadBlocks() ([]BadBlockArgs, error) {
|
func (bc *BlockChain) BadBlocks() ([]BadBlockArgs, error) {
|
||||||
headers := make([]BadBlockArgs, 0, bc.badBlocks.Len())
|
blocks := make([]BadBlockArgs, 0, bc.badBlocks.Len())
|
||||||
|
var (
|
||||||
|
err error
|
||||||
|
rlpData []byte
|
||||||
|
)
|
||||||
for _, hash := range bc.badBlocks.Keys() {
|
for _, hash := range bc.badBlocks.Keys() {
|
||||||
if hdr, exist := bc.badBlocks.Peek(hash); exist {
|
if blk, exist := bc.badBlocks.Peek(hash); exist {
|
||||||
header := hdr.(*types.Header)
|
block := blk.(*types.Block)
|
||||||
headers = append(headers, BadBlockArgs{header.Hash(), header})
|
rlpData, err = rlp.EncodeToBytes(block)
|
||||||
|
if err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
blocks = append(blocks, BadBlockArgs{
|
||||||
|
Hash: block.Hash(),
|
||||||
|
Header: block.Header(),
|
||||||
|
BlockRLP: fmt.Sprintf("%x", rlpData)})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return headers, nil
|
return blocks, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// addBadBlock adds a bad block to the bad-block LRU cache
|
// addBadBlock adds a bad block to the bad-block LRU cache
|
||||||
func (bc *BlockChain) addBadBlock(block *types.Block) {
|
func (bc *BlockChain) addBadBlock(block *types.Block) {
|
||||||
bc.badBlocks.Add(block.Header().Hash(), block.Header())
|
bc.badBlocks.Add(block.Hash(), block)
|
||||||
}
|
}
|
||||||
|
|
||||||
// reportBlock logs a bad block error.
|
// reportBlock logs a bad block error.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue