|
@ -113,7 +113,7 @@ class Blockchain(threading.Thread): |
|
|
height = header.get('block_height') |
|
|
height = header.get('block_height') |
|
|
|
|
|
|
|
|
prev_hash = self.hash_header(prev_header) |
|
|
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) |
|
|
_hash = self.hash_header(header) |
|
|
try: |
|
|
try: |
|
|
assert prev_hash == header.get('prev_block_hash') |
|
|
assert prev_hash == header.get('prev_block_hash') |
|
@ -271,13 +271,17 @@ class Blockchain(threading.Thread): |
|
|
return h |
|
|
return h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_target(self, index): |
|
|
def get_target(self, index, chain=[]): |
|
|
|
|
|
|
|
|
max_target = 0x00000000FFFF0000000000000000000000000000000000000000000000000000 |
|
|
max_target = 0x00000000FFFF0000000000000000000000000000000000000000000000000000 |
|
|
if index == 0: return 0x1d00ffff, max_target |
|
|
if index == 0: return 0x1d00ffff, max_target |
|
|
|
|
|
|
|
|
first = self.read_header((index-1)*2016) |
|
|
first = self.read_header((index-1)*2016) |
|
|
last = self.read_header(index*2016-1) |
|
|
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') |
|
|
nActualTimespan = last.get('timestamp') - first.get('timestamp') |
|
|
nTargetTimespan = 14*24*60*60 |
|
|
nTargetTimespan = 14*24*60*60 |
|
|