示例#1
0
def maintain(polyswarmd_addr, keyfile, password, api_key, testing,
             insecure_transport, allow_key_over_http, denomination, maximum,
             withdraw_target, confirmations, minimum, refill_amount):
    """
    Maintain min/max NCT balance in sidechain
    """
    polyswarmd_addr = utils.finalize_polyswarmd_addr(polyswarmd_addr, api_key,
                                                     allow_key_over_http,
                                                     insecure_transport)

    logger.info(
        'Maintaining the minimum balance by depositing %s %s when it falls below %s %s',
        refill_amount, denomination, minimum, denomination)

    if maximum > 0 > withdraw_target:
        logger.warning('Must set a withdraw target when using a maximum')
        return

    if maximum > 0 and 0 < withdraw_target < minimum:
        logger.warning('Withdraw-target must me more than minimum')
        return

    if 0 < maximum < minimum:
        logger.warning('Maximum must be more than minimum')
        return

    if maximum > 0 and withdraw_target > 0:
        logger.info(
            'Maintaining the minimum balance by withdrawing to %s %s when it exceeds %s %s',
            withdraw_target, denomination, maximum, denomination)

    client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0)
    Maintainer(client, denomination, confirmations, minimum, refill_amount,
               maximum, withdraw_target, testing).run()
示例#2
0
    def connect(cls,
                polyswarmd_addr,
                keyfile,
                password,
                api_key=None,
                testing=0,
                insecure_transport=False,
                scanner=None,
                chains=None,
                artifact_types=None):
        """Connect the Arbiter to a Client.

        Args:
            polyswarmd_addr (str): URL of polyswarmd you are referring to.
            keyfile (str): Keyfile filename.
            password (str): Password associated with Keyfile.
            api_key (str): Your PolySwarm API key.
            testing (int): Number of testing bounties to use.
            insecure_transport (bool): Allow insecure transport such as HTTP?
            scanner (AbstractScanner): Scanner for scanning artifacts
            chains (set(str)):  Set of chains you are acting on.
            artifact_types (list(ArtifactType)): List of artifact types you support

        Returns:
            AbstractArbiter: Arbiter instantiated with a Client.
        """
        client = Client(polyswarmd_addr, keyfile, password, api_key,
                        testing > 0, insecure_transport)
        return cls(client, testing, scanner, chains, artifact_types)
示例#3
0
def view_stake(polyswarmd_addr, keyfile, password, api_key, testing,
               insecure_transport, denomination, chain):
    client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0,
                    insecure_transport)
    balance = ViewStake(client, denomination, chain)
    balance.run_oneshot()
    sys.exit(balance.exit_code)
    def connect(cls,
                polyswarmd_addr,
                keyfile,
                password,
                api_key=None,
                testing=0,
                insecure_transport=False,
                chains=None,
                watchdog=0,
                submission_rate=0):
        """Connect the Ambassador to a Client.

        Args:
            polyswarmd_addr (str): URL of polyswarmd you are referring to.
            keyfile (str): Keyfile filename.
            password (str): Password associated with Keyfile.
            api_key (str): Your PolySwarm API key.
            testing (int): Number of testing bounties to use.
            insecure_transport (bool): Allow insecure transport such as HTTP?
            chains (set(str)):  Set of chains you are acting on.

        Returns:
            AbstractAmbassador: Ambassador instantiated with a Client.
        """
        client = Client(polyswarmd_addr, keyfile, password, api_key,
                        testing > 0, insecure_transport)
        return cls(client, testing, chains, watchdog, submission_rate)
示例#5
0
def withdraw_stake(polyswarmd_addr, keyfile, password, api_key, testing,
                   insecure_transport, denomination, all, chain, amount):
    """
    Entrypoint to withdraw NCT from a sidechain into the homechain

    Args:
        polyswarmd_addr (str): Address for the polyswarmd server
        keyfile (str): Path to the keyfile
        password (str): Password to unlock keyfile
        api_key (str): ApiKey to access polyswarmd
        testing (int): Number of tests to run
        insecure_transport (bool): Flag to allow use of http instead of https
        denomination (str): Choose to interpret amount as nct, nct-gwei, or nct-wei
        all (bool): Choose to withdraw the entire sidechain balance
        amount (float): Amount of Nectar (NCT) to transfer (if not all)
    """
    if amount is None and not all:
        raise click.BadArgumentUsage('Must specify either an amount or --all')
    client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0,
                    insecure_transport)
    w = WithdrawStake(client,
                      denomination,
                      all,
                      amount,
                      testing=testing,
                      chain=chain)
    w.run_oneshot()
    sys.exit(w.exit_code)
示例#6
0
def view_stake(polyswarmd_addr, keyfile, password, api_key, testing,
               insecure_transport, allow_key_over_http, denomination, chain):
    polyswarmd_addr = utils.finalize_polyswarmd_addr(polyswarmd_addr, api_key,
                                                     allow_key_over_http,
                                                     insecure_transport)

    client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0)
    balance = ViewStake(client, denomination, chain)
    balance.run_oneshot()
    if balance.exit_code:
        raise FatalError('Error viewing stake', balance.exit_code)
示例#7
0
def withdraw(polyswarmd_addr, keyfile, password, api_key, testing,
             insecure_transport, denomination, all, amount):
    """
    Withdraw NCT from a sidechain
    """
    if amount is None and not all:
        raise click.BadArgumentUsage('Must specify either an amount or --all')
    client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0,
                    insecure_transport)
    w = Withdraw(client, denomination, all, amount, testing=testing)
    w.run_oneshot()
    sys.exit(w.exit_code)
示例#8
0
def deposit(polyswarmd_addr, keyfile, password, api_key, testing,
            insecure_transport, denomination, all, amount):
    """
    Deposit NCT into a sidechain
    """
    if amount is None and not all:
        raise click.BadArgumentUsage('Must specify either an amount or --all')
    client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0,
                    insecure_transport)
    d = Deposit(client, denomination, all, amount, testing=testing)
    d.run_oneshot()
    sys.exit(d.exit_code)
示例#9
0
def withdraw(polyswarmd_addr, keyfile, password, api_key, testing,
             insecure_transport, allow_key_over_http, denomination, all,
             amount):
    """
    Withdraw NCT from a sidechain
    """
    polyswarmd_addr = utils.finalize_polyswarmd_addr(polyswarmd_addr, api_key,
                                                     allow_key_over_http,
                                                     insecure_transport)

    if amount is None and not all:
        raise click.BadArgumentUsage('Must specify either an amount or --all')
    client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0)
    w = Withdraw(client, denomination, all, amount, testing=testing)
    w.run_oneshot()
    if w.exit_code:
        raise FatalError('Error withdrawing NCT', w.exit_code)
示例#10
0
def maintain(polyswarmd_addr, keyfile, password, api_key, testing,
             insecure_transport, denomination, maximum, withdraw_target,
             confirmations, minimum, refill_amount):
    """
    Entrypoint to withdraw NCT from a sidechain into the homechain

    Args:
        polyswarmd_addr (str): Address for the polyswarmd server
        keyfile (str): Path to the keyfile
        password (str): Password to unlock keyfile
        api_key (str): ApiKey to access polyswarmd
        testing (int): Number of tests to run
        insecure_transport (bool): Flag to allow use of http instead of https
        denomination (str): Choose to interpret amount as nct, nct-gwei, or nct-wei
        maximum (int): Maximum balance to before starting a withdrawal from sidechain
        withdraw_target (int): Target value after performing a withdrawal
        confirmations (int): Number of confirmations to wait to confirm a transfer occurred
        minimum (float): Value of NCT on sidechain where you want to transfer more NCT
        refill_amount (float): Value of NCT to transfer anytime the balance falls below the minimum
    """
    logger.info(
        'Maintaining the minimum balance by depositing %s %s when it falls below %s %s',
        refill_amount, denomination, minimum, denomination)
    if maximum > 0 and withdraw_target < 0:
        logger.warning('Must set a withdraw target when using a maximum')
        return

    if maximum > 0 and 0 < withdraw_target < minimum:
        logger.warning('Withdraw-target must me more than minimum')
        return

    if 0 < maximum < minimum:
        logger.warning('Maximum must be more than minimum')
        return

    if maximum > 0 and withdraw_target > 0:
        logger.info(
            'Maintaining the minimum balance by withdrawing to %s %s when it exceeds %s %s',
            withdraw_target, denomination, maximum, denomination)

    client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0,
                    insecure_transport)
    Maintainer(client, denomination, confirmations, minimum, refill_amount,
               maximum, withdraw_target, testing).run()
    def connect(cls,
                polyswarmd_addr,
                keyfile,
                password,
                api_key=None,
                testing=0,
                insecure_transport=False,
                scanner=None,
                chains=None,
                artifact_types=None,
                bid_strategy=None,
                bounty_filter=BountyFilter(None, None),
                confidence_modifier=ConfidenceModifier(None, None)):
        """Connect the Microengine to a Client.

        Args:
            polyswarmd_addr (str): URL of polyswarmd you are referring to.
            keyfile (str): Keyfile filename.
            password (str): Password associated with Keyfile.
            api_key (str): Your PolySwarm API key.
            testing (int): Number of testing bounties to use.
            insecure_transport (bool): Allow insecure transport such as HTTP?
            scanner (Scanner): `Scanner` instance to use.
            chains (set(str)):  Set of chains you are acting on.
            artifact_types (list(ArtifactType)): List of artifact types you support
            bid_strategy (BidStrategyBase): Bid Strategy for bounties
            bounty_filter (BountyFilter): Filters to accept/reject artifacts
            confidence_modifier (ConfidenceModifier): Filters to adjust confidence based on metadata

        Returns:
            AbstractMicroengine: Microengine instantiated with a Client.
        """
        client = Client(polyswarmd_addr, keyfile, password, api_key,
                        testing > 0, insecure_transport)
        return cls(client,
                   testing,
                   scanner,
                   chains,
                   artifact_types,
                   bid_strategy=bid_strategy,
                   bounty_filter=bounty_filter,
                   confidence_modifier=confidence_modifier)
示例#12
0
def deposit_stake(polyswarmd_addr, keyfile, password, api_key, testing,
                  insecure_transport, allow_key_over_http, denomination, all,
                  chain, amount):
    """
    Deposit NCT into the ArbiterStaking contract
    """
    polyswarmd_addr = utils.finalize_polyswarmd_addr(polyswarmd_addr, api_key,
                                                     allow_key_over_http,
                                                     insecure_transport)

    if amount is None and not all:
        raise click.BadArgumentUsage('Must specify either an amount or --all')
    client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0)
    d = DepositStake(client,
                     denomination,
                     all,
                     amount,
                     testing=testing,
                     chain=chain)
    d.run_oneshot()
    if d.exit_code:
        raise FatalError('Error depositing stake', d.exit_code)
    def connect(cls, polyswarmd_addr, keyfile, password, api_key=None, testing=0, insecure_transport=False,
                scanner=None, chains=None, artifact_types=None, bid_strategy=None, accept=None, exclude=None):
        """Connect the Microengine to a Client.

        Args:
            polyswarmd_addr (str): URL of polyswarmd you are referring to.
            keyfile (str): Keyfile filename.
            password (str): Password associated with Keyfile.
            api_key (str): Your PolySwarm API key.
            testing (int): Number of testing bounties to use.
            insecure_transport (bool): Allow insecure transport such as HTTP?
            scanner (Scanner): `Scanner` instance to use.
            chains (set(str)):  Set of chains you are acting on.
            artifact_types (list(ArtifactType)): List of artifact types you support
            bid_strategy (BidStrategyBase): Bid Strategy for bounties
            accept (list[tuple[str]]): List of accepted mimetypes
            exclude (list[tuple[str]]): List of excluded mimetypes

        Returns:
            AbstractMicroengine: Microengine instantiated with a Client.
        """
        client = Client(polyswarmd_addr, keyfile, password, api_key, testing > 0, insecure_transport)
        return cls(client, testing, scanner, chains, artifact_types, bid_strategy=bid_strategy,
                   accept=accept, exclude=exclude)