4 log = stratum.logger.get_logger('coinbaser')
6 # TODO: Add on_* hooks in the app
8 class SimpleCoinbaser(object):
9 '''This very simple coinbaser uses constant bitcoin address
10 for all generated blocks.'''
12 def __init__(self, bitcoin_rpc, address):
13 self.address = address
14 self.is_valid = False # We need to check if pool can use this address
16 self.bitcoin_rpc = bitcoin_rpc
21 d = self.bitcoin_rpc.validateaddress(self.address)
22 d.addCallback(self._address_check)
23 d.addErrback(self._failure)
25 def _address_check(self, result):
26 if result['isvalid'] and result['ismine']:
28 log.info("Coinbase address '%s' is valid" % self.address)
31 log.error("Coinbase address '%s' is NOT valid!" % self.address)
33 def _failure(self, failure):
34 log.error("Cannot validate Bitcoin address '%s'" % self.address)
37 #def on_new_block(self):
40 #def on_new_template(self):
43 def get_script_pubkey(self):
45 # Try again, maybe bitcoind was down?
47 raise Exception("Coinbase address is not validated!")
48 return util.script_to_address(self.address)
50 def get_coinbase_data(self):