pass chain to get_target (fixes issue #316)

This commit is contained in:
ThomasV 2013-10-16 14:42:52 +02:00
parent d70087a0f5
commit 7deec48705
1 changed files with 7 additions and 3 deletions

View File

@ -113,7 +113,7 @@ class Blockchain(threading.Thread):
height = header.get('block_height')
prev_hash = self.hash_header(prev_header)
bits, target = self.get_target(height/2016)
bits, target = self.get_target(height/2016, chain)
_hash = self.hash_header(header)
try:
assert prev_hash == header.get('prev_block_hash')
@ -271,14 +271,18 @@ class Blockchain(threading.Thread):
return h
def get_target(self, index):
def get_target(self, index, chain=[]):
max_target = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
if index == 0: return 0x1d00ffff, max_target
first = self.read_header((index-1)*2016)
last = self.read_header(index*2016-1)
if last is None:
for h in chain:
if h.get('block_height') == index*2016-1:
last = h
nActualTimespan = last.get('timestamp') - first.get('timestamp')
nTargetTimespan = 14*24*60*60
nActualTimespan = max(nActualTimespan, nTargetTimespan/4)