From 26e6e3712f2b58c509b095fd717cacef3bb7fbc9 Mon Sep 17 00:00:00 2001 From: alexhz Date: Wed, 13 Mar 2013 17:37:39 +0000 Subject: [PATCH] add target workaround --- p2pool/node.py | 16 +++++++++++++++- p2pool/work.py | 6 +++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/p2pool/node.py b/p2pool/node.py index 9b21768..85b501b 100644 --- a/p2pool/node.py +++ b/p2pool/node.py @@ -181,17 +181,31 @@ class Node(object): self.bitcoind_work.set((yield helper.getwork(self.bitcoind, self.bitcoind_work.value['use_getblocktemplate']))) except: log.err() - yield defer.DeferredList([flag, deferral.sleep(15)], fireOnOneCallback=True) + yield defer.DeferredList([flag, deferral.sleep(5)], fireOnOneCallback=True) work_poller() # PEER WORK self.best_block_header = variable.Variable(None) + + self.pow_bits = variable.Variable(None) + self.pow_subsidy = 0 + self.last_block_time = 0 + def handle_header(new_header): + self.pow_bits = self.bitcoind_work.value['bits'] + self.pow_subsidy = self.bitcoind_work.value['subsidy'] + self.last_block_time = self.bitcoind_work.value['time'] + # check that header matches current target + # + # TODO: PoS (stake-modifier & modifier-checksum) checkings implementation + # if not (self.net.PARENT.POW_FUNC(bitcoin_data.block_header_type.pack(new_header)) <= self.bitcoind_work.value['bits'].target): return + bitcoind_best_block = self.bitcoind_work.value['previous_block'] + if (self.best_block_header.value is None or ( new_header['previous_block'] == bitcoind_best_block and diff --git a/p2pool/work.py b/p2pool/work.py index 2126839..d61045f 100644 --- a/p2pool/work.py +++ b/p2pool/work.py @@ -86,7 +86,7 @@ class WorkerBridge(worker_interface.WorkerBridge): t = self.node.bitcoind_work.value bb = self.node.best_block_header.value - subsidy = self.node.net.PARENT.SUBSIDY_FUNC(bb['bits'].target) +# subsidy = self.node.net.PARENT.SUBSIDY_FUNC(self.node.pow_bits.target) if bb is not None and bb['previous_block'] == t['previous_block'] and self.node.net.PARENT.POW_FUNC(bitcoin_data.block_header_type.pack(bb)) <= t['bits'].target: print 'Skipping from block %x to block %x!' % (bb['previous_block'], @@ -94,14 +94,14 @@ class WorkerBridge(worker_interface.WorkerBridge): t = dict( version=bb['version'], previous_block=self.node.net.PARENT.BLOCKHASH_FUNC(bitcoin_data.block_header_type.pack(bb)), - bits=bb['bits'], # not always true + bits=self.node.pow_bits, # not always true coinbaseflags='', height=t['height'] + 1, time=bb['timestamp'] + 600, # better way? transactions=[], transaction_fees=[], merkle_link=bitcoin_data.calculate_merkle_link([None], 0), - subsidy=subsidy, + subsidy=self.node.pow_subsidy, last_update=self.node.bitcoind_work.value['last_update'], ) -- 1.7.1