aboutsummaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-06-13 15:31:52 +0200
committerChristian Grothoff <christian@grothoff.org>2022-06-13 15:31:52 +0200
commit58a0882909f2b1ede572ae575b83c18746f96cff (patch)
tree8d96afaec04abb7fd82d32a7a1b8b4ca1e9dd52d /src/include
parent70a5ceecc1a15d4f811636f5980cedf653988879 (diff)
-towards coin audits with purse deposits
Diffstat (limited to 'src/include')
-rw-r--r--src/include/.gitignore1
-rw-r--r--src/include/taler_auditordb_plugin.h5
-rw-r--r--src/include/taler_exchangedb_plugin.h77
3 files changed, 83 insertions, 0 deletions
diff --git a/src/include/.gitignore b/src/include/.gitignore
new file mode 100644
index 000000000..beba883b6
--- /dev/null
+++ b/src/include/.gitignore
@@ -0,0 +1 @@
+taler_signatures.h
diff --git a/src/include/taler_auditordb_plugin.h b/src/include/taler_auditordb_plugin.h
index 7a801c68e..152530626 100644
--- a/src/include/taler_auditordb_plugin.h
+++ b/src/include/taler_auditordb_plugin.h
@@ -253,6 +253,11 @@ struct TALER_AUDITORDB_ProgressPointCoin
*/
uint64_t last_purse_deposits_serial_id;
+ /**
+ * Serial ID of the last purse_refunds operation the auditor processed.
+ */
+ uint64_t last_purse_refunds_serial_id;
+
};
diff --git a/src/include/taler_exchangedb_plugin.h b/src/include/taler_exchangedb_plugin.h
index e3f27070d..74498f889 100644
--- a/src/include/taler_exchangedb_plugin.h
+++ b/src/include/taler_exchangedb_plugin.h
@@ -218,6 +218,7 @@ enum TALER_EXCHANGEDB_ReplicatedTable
TALER_EXCHANGEDB_RT_EXTENSIONS,
TALER_EXCHANGEDB_RT_EXTENSION_DETAILS,
TALER_EXCHANGEDB_RT_PURSE_REQUESTS,
+ TALER_EXCHANGEDB_RT_PURSE_REFUNDS,
TALER_EXCHANGEDB_RT_PURSE_MERGES,
TALER_EXCHANGEDB_RT_PURSE_DEPOSITS,
TALER_EXCHANGEDB_RT_ACCOUNT_MERGES,
@@ -497,6 +498,11 @@ struct TALER_EXCHANGEDB_TableData
struct
{
+ struct TALER_PurseContractPublicKeyP purse_pub;
+ } purse_refunds;
+
+ struct
+ {
uint64_t partner_serial_id;
struct TALER_ReservePublicKeyP reserve_pub;
struct TALER_PurseContractPublicKeyP purse_pub;
@@ -1996,6 +2002,40 @@ typedef enum GNUNET_GenericReturnValue
/**
+ * Function called with details about purse refunds that have been made, with
+ * the goal of auditing the purse refund's execution.
+ *
+ * @param cls closure
+ * @param rowid unique serial ID for the deposit in our DB
+ * @param purse_pub public key of the refunded purse
+ * @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
+ */
+typedef enum GNUNET_GenericReturnValue
+(*TALER_EXCHANGEDB_PurseRefundCallback)(
+ void *cls,
+ uint64_t rowid,
+ const struct TALER_PurseContractPublicKeyP *purse_pub);
+
+
+/**
+ * Function called with details about purse refunds that have been made, with
+ * the goal of auditing the purse refund's execution.
+ *
+ * @param cls closure
+ * @param amount_with_fee amount of the deposit into the purse
+ * @param coin_pub coin that is to be refunded the @a given amount_with_fee
+ * @param denom_pub denomination of @a coin_pub
+ * @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
+ */
+typedef enum GNUNET_GenericReturnValue
+(*TALER_EXCHANGEDB_PurseRefundCoinCallback)(
+ void *cls,
+ const struct TALER_Amount *amount_with_fee,
+ const struct TALER_CoinSpendPublicKeyP *coin_pub,
+ const struct TALER_DenominationPublicKey *denom_pub);
+
+
+/**
* Function called with details about coins that were melted,
* with the goal of auditing the refresh's execution.
*
@@ -2198,6 +2238,7 @@ typedef void
* @param merchant_sig signature of the merchant
* @param h_contract_terms hash of the proposal data known to merchant and customer
* @param rtransaction_id refund transaction ID chosen by the merchant
+ * @param full_refund true if the refunds total up to the entire value of the deposit
* @param amount_with_fee amount that was deposited including fee
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
*/
@@ -2211,6 +2252,7 @@ typedef enum GNUNET_GenericReturnValue
const struct TALER_MerchantSignatureP *merchant_sig,
const struct TALER_PrivateContractHashP *h_contract_terms,
uint64_t rtransaction_id,
+ bool full_refund,
const struct TALER_Amount *amount_with_fee);
@@ -4059,6 +4101,41 @@ struct TALER_EXCHANGEDB_Plugin
/**
+ * Select purse refunds above @a serial_id in monotonically increasing
+ * order.
+ *
+ * @param cls closure
+ * @param serial_id highest serial ID to exclude (select strictly larger)
+ * @param cb function to call on each result
+ * @param cb_cls closure for @a cb
+ * @return transaction status code
+ */
+ enum GNUNET_DB_QueryStatus
+ (*select_purse_refunds_above_serial_id)(
+ void *cls,
+ uint64_t serial_id,
+ TALER_EXCHANGEDB_PurseRefundCallback cb,
+ void *cb_cls);
+
+
+ /**
+ * Select coins deposited into a purse.
+ *
+ * @param cls closure
+ * @param purse_pub public key of the purse
+ * @param cb function to call on each result
+ * @param cb_cls closure for @a cb
+ * @return transaction status code
+ */
+ enum GNUNET_DB_QueryStatus
+ (*select_purse_deposits_by_purse)(
+ void *cls,
+ const struct TALER_PurseContractPublicKeyP *purse_pub,
+ TALER_EXCHANGEDB_PurseRefundCoinCallback cb,
+ void *cb_cls);
+
+
+ /**
* Select refresh sessions above @a serial_id in monotonically increasing
* order.
*