Fix a bug during initial blockchain check
An invalid block in the locally stored blockchain caused the node to crash.
This commit is contained in:
@@ -186,7 +186,7 @@ class Blockchain:
|
|||||||
self.__lock = Lock()
|
self.__lock = Lock()
|
||||||
self.__load_blocks_from_disk()
|
self.__load_blocks_from_disk()
|
||||||
def __load_blocks_from_disk(self):
|
def __load_blocks_from_disk(self):
|
||||||
block_obj = None
|
last_valid = None
|
||||||
try:
|
try:
|
||||||
with open("blockchain", "rb") as f:
|
with open("blockchain", "rb") as f:
|
||||||
while True:
|
while True:
|
||||||
@@ -196,10 +196,11 @@ class Blockchain:
|
|||||||
block_obj = self.add_block(block)
|
block_obj = self.add_block(block)
|
||||||
if not block_obj.validate(self):
|
if not block_obj.validate(self):
|
||||||
break
|
break
|
||||||
|
last_valid = block_obj
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
if block_obj is not None:
|
if last_valid is not None:
|
||||||
self.set_latest_block(block_obj.own_hash)
|
self.set_latest_block(last_valid.own_hash)
|
||||||
def set_latest_block(self, block_hash):
|
def set_latest_block(self, block_hash):
|
||||||
new_block = self.get_block(block_hash)
|
new_block = self.get_block(block_hash)
|
||||||
assert new_block is not None
|
assert new_block is not None
|
||||||
|
|||||||
Reference in New Issue
Block a user