connector

This commit is contained in:
4tochka 2019-05-10 18:05:07 +04:00
parent 59a01e1132
commit 673688a291
3 changed files with 17 additions and 7 deletions

View File

@ -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

View File

@ -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):

View File

@ -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('<H', script[s + 1: s + 3])[0]
append(script[s + 1:s + 1 + ld].hex())
append("OP_PUSHDATA2[%s]" % ld)
append(script[s + 3:s + 3 + ld].hex())
else:
ld = unpack('<H', script[s + 1: s + 3])[0]
append(RAW_OPCODE[script[s]])
@ -204,7 +208,8 @@ def decode_script(script, asm=False):
elif script[s] == OPCODE["OP_PUSHDATA4"]:
if asm:
ld = unpack('<L', script[s + 1: s + 5])[0]
append(script[s + 1:s + 1 + ld].hex())
append("OP_PUSHDATA4[%s]" % ld)
append(script[s + 5:s + 5 + ld].hex())
else:
ld = unpack('<L', script[s + 1: s + 5])[0]
append(RAW_OPCODE[script[s]])