コード例 #1
0
    def _validate_fees_can_pay(self, request, inputs, outputs, required_fees):
        """
        Calculate and verify that inputs and outputs for fees can both be paid and change is properly specified

        This function ASSUMES that validation of the fees for the request has already been done.

        :param request:
        :param required_fees:
        :return:
        """

        try:
            sum_inputs = self.utxo_cache.sum_inputs(inputs, is_committed=False)
        except UTXOError as ex:
            raise InvalidFundsError(request.identifier, request.reqId,
                                    "{}".format(ex))
        except Exception as ex:
            error = 'Exception {} while processing inputs/outputs'.format(ex)
            raise UnauthorizedClientRequest(request.identifier, request.reqId,
                                            error)
        else:
            change_amount = sum([a[AMOUNT] for a in outputs])
            expected_amount = change_amount + required_fees
            TokenStaticHelper.validate_given_inputs_outputs(
                sum_inputs, change_amount, expected_amount, request,
                'fees: {}'.format(required_fees))
コード例 #2
0
 def sum_inputs(utxo_cache: UTXOCache,
                request: Request,
                is_committed=False) -> int:
     try:
         inputs = request.operation[INPUTS]
         return utxo_cache.sum_inputs(inputs, is_committed=is_committed)
     except UTXOError as ex:
         raise InvalidFundsError(request.identifier, request.reqId,
                                 '{}'.format(ex))
コード例 #3
0
 def _get_deducted_fees_non_xfer(self, request, required_fees):
     if not self.has_fees(request):
         error = 'fees not present or improperly formed'
         raise UnauthorizedClientRequest(request.identifier, request.reqId, error)
     else:
         try:
             sum_inputs = self.utxo_cache.sum_inputs(request.fees[0], is_committed=False)
         except UTXOError as ex:
             raise InvalidFundsError(request.identifier, request.reqId, "{}".format(ex))
         else:
             change_amount = sum([a[AMOUNT] for a in self.get_change_for_fees(request)])
             expected_amount = change_amount + required_fees
             TokenReqHandler.validate_given_inputs_outputs(sum_inputs, change_amount,
                                                           expected_amount, request,
                                                           'fees: {}'.format(required_fees))
コード例 #4
0
    def _validate_fees_can_pay(self, request, required_fees):
        """
        Calculate and verify that inputs and outputs for fees can both be paid and change is properly specified

        This function ASSUMES that validation of the fees for the request has already been done.

        :param request:
        :param required_fees:
        :return:
        """

        try:
            sum_inputs = self.utxo_cache.sum_inputs(request.fees[0],
                                                    is_committed=False)
        except UTXOError as ex:
            raise InvalidFundsError(request.identifier, request.reqId,
                                    "{}".format(ex))
        else:
            change_amount = sum(
                [a[AMOUNT] for a in self.get_change_for_fees(request)])
            expected_amount = change_amount + required_fees
            TokenReqHandler.validate_given_inputs_outputs(
                sum_inputs, change_amount, expected_amount, request,
                'fees: {}'.format(required_fees))