Example #1
0
 def __init__(self, host):
     """
     Create a new bitcoin server connection.
     """
     self.host = host
     self.proxy = AuthServiceProxy(host, exception_wrapper=wrap_exception)
Example #2
0
 def __init__(self, host):
     """
     Create a new bitcoin server connection.
     """
     self.host = host
     self.proxy = AuthServiceProxy(host, exception_wrapper=wrap_exception)
Example #3
0
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')
Example #4
0
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')