consensus/ethash: less lookups of block data
This commit is contained in:
parent
b68929caee
commit
493100ba4d
@ -204,15 +204,23 @@ func (ethash *Ethash) VerifyUncles(chain consensus.ChainReader, block *types.Blo
|
|||||||
|
|
||||||
number, parent := block.NumberU64()-1, block.ParentHash()
|
number, parent := block.NumberU64()-1, block.ParentHash()
|
||||||
for i := 0; i < 7; i++ {
|
for i := 0; i < 7; i++ {
|
||||||
|
ancestorHeader := chain.GetHeader(parent, number)
|
||||||
|
if ancestorHeader == nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
ancestors[parent] = ancestorHeader
|
||||||
|
// If the ancestor doesn't have any uncles, we don't have to iterate them
|
||||||
|
if ancestorHeader.UncleHash != types.EmptyUncleHash {
|
||||||
|
// Need to add those uncles to the blacklist too
|
||||||
ancestor := chain.GetBlock(parent, number)
|
ancestor := chain.GetBlock(parent, number)
|
||||||
if ancestor == nil {
|
if ancestor == nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
ancestors[ancestor.Hash()] = ancestor.Header()
|
|
||||||
for _, uncle := range ancestor.Uncles() {
|
for _, uncle := range ancestor.Uncles() {
|
||||||
uncles.Add(uncle.Hash())
|
uncles.Add(uncle.Hash())
|
||||||
}
|
}
|
||||||
parent, number = ancestor.ParentHash(), number-1
|
}
|
||||||
|
parent, number = ancestorHeader.ParentHash, number-1
|
||||||
}
|
}
|
||||||
ancestors[block.Hash()] = block.Header()
|
ancestors[block.Hash()] = block.Header()
|
||||||
uncles.Add(block.Hash())
|
uncles.Add(block.Hash())
|
||||||
|
Loading…
Reference in New Issue
Block a user