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
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'],
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'],
)