Merge pull request #2759 from nspcc-dev/avoid-db-lookup-in-hasblock
core: optimize HasBlock check for recent blocks
This commit is contained in:
commit
a17d9f80a4
1 changed files with 10 additions and 0 deletions
|
@ -1714,6 +1714,16 @@ func (bc *Blockchain) HasTransaction(hash util.Uint256) bool {
|
|||
// HasBlock returns true if the blockchain contains the given
|
||||
// block hash.
|
||||
func (bc *Blockchain) HasBlock(hash util.Uint256) bool {
|
||||
var height = bc.BlockHeight()
|
||||
bc.headerHashesLock.RLock()
|
||||
for i := int(height); i >= int(height)-4 && i >= 0; i-- {
|
||||
if hash.Equals(bc.headerHashes[i]) {
|
||||
bc.headerHashesLock.RUnlock()
|
||||
return true
|
||||
}
|
||||
}
|
||||
bc.headerHashesLock.RUnlock()
|
||||
|
||||
if header, err := bc.GetHeader(hash); err == nil {
|
||||
return header.Index <= bc.BlockHeight()
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue