commit 219c2a363ae59c33489e3e641653be5fdad02f15
parent 3031f594cb05b538e218dab3edf9e17bce599dd7
Author: SomberNight <somber.night@protonmail.com>
Date: Sun, 3 Jun 2018 17:17:56 +0200
fix #4401
Diffstat:
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/lib/blockchain.py b/lib/blockchain.py
@@ -30,6 +30,11 @@ from .bitcoin import *
MAX_TARGET = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
+
+class MissingHeader(Exception):
+ pass
+
+
def serialize_header(res):
s = int_to_hex(res.get('version'), 4) \
+ rev_hex(res.get('prev_block_hash')) \
@@ -300,6 +305,8 @@ class Blockchain(util.PrintError):
# new target
first = self.read_header(index * 2016)
last = self.read_header(index * 2016 + 2015)
+ if not first or not last:
+ raise MissingHeader()
bits = last.get('bits')
target = self.bits_to_target(bits)
nActualTimespan = last.get('timestamp') - first.get('timestamp')
@@ -343,7 +350,10 @@ class Blockchain(util.PrintError):
return False
if prev_hash != header.get('prev_block_hash'):
return False
- target = self.get_target(height // 2016 - 1)
+ try:
+ target = self.get_target(height // 2016 - 1)
+ except MissingHeader:
+ return False
try:
self.verify_header(header, prev_hash, target)
except BaseException as e: