def __init__(self, host): """ Create a new bitcoin server connection. """ self.host = host self.proxy = AuthServiceProxy(host, exception_wrapper=wrap_exception)
class BaseRole(object): """ An abstract common interface for both `Alliance` and `Issuer`. """ def __init__(self, host): """ Create a new bitcoin server connection. """ self.host = host self.proxy = AuthServiceProxy(host, exception_wrapper=wrap_exception) def _wait_for_maturity(self, tx_hash, maturity, timeout=300, sleep_interval=1): loop_cnt = (timeout/sleep_interval) + 1 while loop_cnt > 0: try: result = self.getrawtransaction(tx_hash) except InvalidAddressOrKey as e: # Skip No information available about transaction rpc error print cyan(type(e)) time.sleep(1) loop_cnt -= 1 continue if result.has_key('confirmations') and result['confirmations'] > maturity: return tx_hash time.sleep(1) loop_cnt -= 1 def getaddressbalance(self, bitcoinaddress): return self.proxy.getaddressbalance(bitcoinaddress) def getlicenseinfo(self): return self.proxy.getlicenseinfo() def getrawtransaction(self, txid, verbose=True): if verbose: return self.proxy.getrawtransaction(txid, 1) return self.proxy.getrawtransaction(txid, 0) def getblockcount(self): return self.proxy.getblockcount() def send_coins(self, frombitcoinaddress, tobitcoinaddress, amount, color): tx_hash = self.proxy.sendfrom(frombitcoinaddress, tobitcoinaddress, amount, color) return self._wait_for_maturity(tx_hash, 1) def keypoolrefill(self, num): return self.proxy.keypoolrefill(num) @severaltry(time_out=300, sleep_interval=1) def getfixedaddress(self): return self.proxy.getfixedaddress() def listwalletaddress(self, num, refill=True): if refill: self.keypoolrefill(num) return self.proxy.listwalletaddress("-p", num) def start(self): return self.proxy.start() def stop(self): return self.proxy.stop() def reset_and_restart(self): self.proxy.stop(warn_only=True) self.proxy.reset() return self.start() def restart(self): self.proxy.stop(warn_only=True) return self.proxy.start() def addnode(self, host, port): address = host + ":" + str(port) # Skip rpc error: Node already added self.proxy.addnode(address, 'add', warn_only=True) self.proxy.addnode(address, 'onetry')
class BaseRole(object): """ An abstract common interface for both `Alliance` and `Issuer`. """ def __init__(self, host): """ Create a new bitcoin server connection. """ self.host = host self.proxy = AuthServiceProxy(host, exception_wrapper=wrap_exception) def _wait_for_maturity(self, tx_hash, maturity, timeout=300, sleep_interval=1): loop_cnt = (timeout / sleep_interval) + 1 while loop_cnt > 0: try: result = self.getrawtransaction(tx_hash) except InvalidAddressOrKey as e: # Skip No information available about transaction rpc error print cyan(type(e)) time.sleep(1) loop_cnt -= 1 continue if maturity == 0: return tx_hash if result.has_key( 'confirmations') and result['confirmations'] > maturity: return tx_hash time.sleep(1) loop_cnt -= 1 def getaddressbalance(self, bitcoinaddress): return self.proxy.getaddressbalance(bitcoinaddress, 0) def getlicenseinfo(self): return self.proxy.getlicenselist() def getrawtransaction(self, txid, verbose=True): if verbose: return self.proxy.getrawtransaction(txid, 1) return self.proxy.getrawtransaction(txid, 0) def getblockcount(self): return self.proxy.getblockcount() def send_coins(self, frombitcoinaddress, tobitcoinaddress, amount, color, verify=True): tx_hash = self.proxy.sendfrom(frombitcoinaddress, tobitcoinaddress, amount, color) if verify: return self._wait_for_maturity(tx_hash, 1) else: return self._wait_for_maturity(tx_hash, 0) def keypoolrefill(self, num): return self.proxy.keypoolrefill(num) @severaltry(time_out=300, sleep_interval=1) def getfixedaddress(self): return self.proxy.getfixedaddress() def listwalletaddress(self, num, refill=True): if refill: self.keypoolrefill(num) return self.proxy.listwalletaddress("-p", num) def start(self): return self.proxy.start() def stop(self): return self.proxy.stop() def reset_and_restart(self): self.proxy.stop(warn_only=True) self.proxy.reset() return self.start() def restart(self): self.proxy.stop(warn_only=True) return self.proxy.start() def addnode(self, host, port): address = host + ":" + str(port) # Skip rpc error: Node already added self.proxy.addnode(address, 'add', warn_only=True) self.proxy.addnode(address, 'onetry')