add support for coin open-deposit and coin purse refunds to auditor logic

This commit is contained in:
Christian Grothoff 2022-10-16 16:38:21 +02:00
parent 745981c680
commit 35e505f6bf
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 55 additions and 3 deletions

View File

@ -593,7 +593,45 @@ check_transaction_history_for_deposit (
amount_with_fee); amount_with_fee);
break; break;
} }
}
case TALER_EXCHANGEDB_TT_PURSE_REFUND:
{
const struct TALER_Amount *amount_with_fee;
amount_with_fee = &tl->details.purse_refund->refund_amount;
fee_claimed = &tl->details.purse_refund->refund_fee;
TALER_ARL_amount_add (&refunds,
&refunds,
amount_with_fee);
TALER_ARL_amount_add (&expenditures,
&expenditures,
fee_claimed);
/* Check that the fees given in the transaction list and in dki match */
if (0 !=
TALER_amount_cmp (&issue->fees.refund,
fee_claimed))
{
/* Disagreement in fee structure between exchange and auditor! */
report_amount_arithmetic_inconsistency ("refund fee",
0,
fee_claimed,
&issue->fees.refund,
1);
}
break;
}
case TALER_EXCHANGEDB_TT_RESERVE_OPEN:
{
const struct TALER_Amount *amount_with_fee;
amount_with_fee = &tl->details.reserve_open->coin_contribution;
TALER_ARL_amount_add (&expenditures,
&expenditures,
amount_with_fee);
break;
}
} /* switch (tl->type) */
} /* for 'tl' */ } /* for 'tl' */
GNUNET_log (GNUNET_ERROR_TYPE_INFO, GNUNET_log (GNUNET_ERROR_TYPE_INFO,

View File

@ -539,8 +539,22 @@ check_coin_history (const struct TALER_CoinSpendPublicKeyP *coin_pub,
&spent, &spent,
&pos->details.purse_deposit->amount); &pos->details.purse_deposit->amount);
break; break;
} case TALER_EXCHANGEDB_TT_PURSE_REFUND:
} TALER_ARL_amount_add (&refunded,
&refunded,
&tl->details.purse_refund->refund_amount);
TALER_ARL_amount_add (&spent,
&spent,
&pos->details.purse_refund->refund_fee);
have_refund = true;
break;
case TALER_EXCHANGEDB_TT_RESERVE_OPEN:
TALER_ARL_amount_add (&spent,
&spent,
&tl->details.reserve_open->coin_contribution);
break;
} /* switch (pos->type) */
} /* for (...) */
if (have_refund) if (have_refund)
{ {