From 673688a291e94beb29d733a107b476cc5519f401 Mon Sep 17 00:00:00 2001 From: 4tochka Date: Fri, 10 May 2019 18:05:07 +0400 Subject: [PATCH] connector --- build/lib.macosx-10.9-x86_64-3.7/pybtc/connector.py | 3 ++- pybtc/connector/block_loader.py | 10 +++++++--- pybtc/functions/script.py | 11 ++++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/build/lib.macosx-10.9-x86_64-3.7/pybtc/connector.py b/build/lib.macosx-10.9-x86_64-3.7/pybtc/connector.py index 94277cf..0468f00 100644 --- a/build/lib.macosx-10.9-x86_64-3.7/pybtc/connector.py +++ b/build/lib.macosx-10.9-x86_64-3.7/pybtc/connector.py @@ -14,7 +14,7 @@ import zmq.asyncio import asyncio import time import io -from collections import OrderedDict +from collections import OrderedDict, deque from lru import LRU class Connector: @@ -61,6 +61,7 @@ class Connector: self.app_block_height_on_start = int(last_block_height) if int(last_block_height) else 0 self.last_block_height = 0 self.last_block_utxo_cached_height = 0 + self.checkpoints = deque() self.deep_synchronization = False self.block_dependency_tx = 0 # counter of tx that have dependencies in block diff --git a/pybtc/connector/block_loader.py b/pybtc/connector/block_loader.py index b767b13..2b13593 100644 --- a/pybtc/connector/block_loader.py +++ b/pybtc/connector/block_loader.py @@ -167,6 +167,8 @@ class BlockLoader: for i in blocks: self.parent.block_preload.set(i, blocks[i]) + if blocks: + self.parent.checkpoints.append(i) # def disconnect(self,ip): @@ -197,8 +199,8 @@ class Worker: self.loop.set_default_executor(ThreadPoolExecutor(20)) self.out_writer = out_writer self.in_reader = in_reader - self.coins = LRU(rpc_batch_limit * 10000) - self.destroyed_coins = LRU(rpc_batch_limit * 10000) + self.coins = LRU(1000000) + self.destroyed_coins = LRU(1000000) signal.signal(signal.SIGTERM, self.terminate) self.loop.create_task(self.message_loop()) self.loop.run_forever() @@ -208,10 +210,11 @@ class Worker: t = 0 batch = list() h_list = list() + rpc_batch_limit = 50 while True: batch.append(["getblockhash", height]) h_list.append(height) - if len(batch) >= self.rpc_batch_limit: + if len(batch) >= rpc_batch_limit: height += 1 break height += 1 @@ -261,6 +264,7 @@ class Worker: self.pipe_sent_msg(b'result', pickle.dumps(blocks)) except: + self.pipe_sent_msg(b'result', pickle.dumps([])) self.log.critical(str(traceback.format_exc())) async def message_loop(self): diff --git a/pybtc/functions/script.py b/pybtc/functions/script.py index 3bff0d0..c34005f 100644 --- a/pybtc/functions/script.py +++ b/pybtc/functions/script.py @@ -177,6 +177,7 @@ def decode_script(script, asm=False): while l - s > 0: if script[s] < 0x4c and script[s]: if asm: + append("OP_PUSHBYTES[%s]" % script[s] ) append(script[s + 1:s + 1 + script[s]].hex()) else: append('[%s]' % script[s]) @@ -186,7 +187,8 @@ def decode_script(script, asm=False): if script[s] == OPCODE["OP_PUSHDATA1"]: if asm: ld = script[s + 1] - append(script[s + 1:s + 1 + ld].hex()) + append("OP_PUSHDATA1[%s]" % ld) + append(script[s + 2:s + 2 + ld].hex()) else: append(RAW_OPCODE[script[s]]) ld = script[s + 1] @@ -194,8 +196,10 @@ def decode_script(script, asm=False): s += 1 + script[s + 1] + 1 elif script[s] == OPCODE["OP_PUSHDATA2"]: if asm: + ld = unpack('