-more DB prep work towards reserve auditing with p2p payments
This commit is contained in:
parent
83be3173d4
commit
eccf37e450
@ -1308,6 +1308,111 @@ verify_reserve_balance (void *cls,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function called with details about purse deposits that have been made, with
|
||||
* the goal of auditing the deposit's execution.
|
||||
*
|
||||
* @param cls closure
|
||||
* @param rowid unique serial ID for the deposit in our DB
|
||||
* @param deposit deposit details
|
||||
* @param denom_pub denomination public key of @a coin_pub
|
||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||
*/
|
||||
static enum GNUNET_GenericReturnValue
|
||||
handle_purse_deposits (
|
||||
void *cls,
|
||||
uint64_t rowid,
|
||||
const struct TALER_EXCHANGEDB_PurseDeposit *deposit,
|
||||
const struct TALER_DenominationPublicKey *denom_pub)
|
||||
{
|
||||
GNUNET_break (0); // FIXME
|
||||
/* Credit purse value (if last op)! */
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function called with details about purse
|
||||
* merges that have been made, with
|
||||
* the goal of auditing the purse merge execution.
|
||||
*
|
||||
* @param cls closure
|
||||
* @param rowid unique serial ID for the deposit in our DB
|
||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||
*/
|
||||
static enum GNUNET_GenericReturnValue
|
||||
handle_purse_merged (
|
||||
void *cls,
|
||||
uint64_t rowid,
|
||||
const char *partner_base_url,
|
||||
const struct TALER_Amount *amount,
|
||||
enum TALER_WalletAccountMergeFlags flags,
|
||||
const struct TALER_PurseMergePublicKeyP *merge_pub,
|
||||
const struct TALER_ReservePublicKeyP *reserve_pub,
|
||||
const struct TALER_PurseMergeSignatureP *merge_sig,
|
||||
const struct TALER_PurseContractPublicKeyP *purse_pub,
|
||||
struct GNUNET_TIME_Timestamp merge_timestamp)
|
||||
{
|
||||
GNUNET_break (0); // FIXME
|
||||
/* Credit purse value (if last op)! */
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function called with details about
|
||||
* account merge requests that have been made, with
|
||||
* the goal of auditing the account merge execution.
|
||||
*
|
||||
* @param cls closure
|
||||
* @param rowid unique serial ID for the deposit in our DB
|
||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||
*/
|
||||
static enum GNUNET_GenericReturnValue
|
||||
handle_account_merged (
|
||||
void *cls,
|
||||
uint64_t rowid,
|
||||
const struct TALER_ReservePublicKeyP *reserve_pub,
|
||||
const struct TALER_PurseContractPublicKeyP *purse_pub,
|
||||
const struct TALER_PrivateContractHashP *h_contract_terms,
|
||||
struct GNUNET_TIME_Timestamp purse_expiration,
|
||||
const struct TALER_Amount *amount,
|
||||
uint32_t min_age,
|
||||
enum TALER_WalletAccountMergeFlags flags,
|
||||
const struct TALER_Amount *purse_fee,
|
||||
struct GNUNET_TIME_Timestamp merge_timestamp,
|
||||
struct TALER_ReserveSignatureP *reserve_sig)
|
||||
{
|
||||
GNUNET_break (0); // FIXME
|
||||
/* Debit purse fee */
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function called with details about
|
||||
* history requests that have been made, with
|
||||
* the goal of auditing the history request execution.
|
||||
*
|
||||
* @param cls closure
|
||||
* @param rowid unique serial ID for the deposit in our DB
|
||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||
*/
|
||||
static enum GNUNET_GenericReturnValue
|
||||
handle_history_request (
|
||||
void *cls,
|
||||
uint64_t rowid,
|
||||
const struct TALER_Amount *history_fee,
|
||||
const struct GNUNET_TIME_Timestamp ts,
|
||||
const struct TALER_ReservePublicKeyP *reserve_pub,
|
||||
const struct TALER_ReserveSignatureP *reserve_sig)
|
||||
{
|
||||
GNUNET_break (0); // FIXME
|
||||
/* Debit purse fee */
|
||||
return GNUNET_SYSERR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Analyze reserves for being well-formed.
|
||||
*
|
||||
@ -1410,10 +1515,10 @@ analyze_reserves (void *cls)
|
||||
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
||||
return qs;
|
||||
}
|
||||
#if FIXME
|
||||
/* Credit purse value (if last op)! */
|
||||
qs = TALER_ARL_edb->select_purse_merges_above_serial_id (
|
||||
TALER_ARL_edb->cls,
|
||||
ppr.last_purse_merge_serial_id,
|
||||
ppr.last_purse_merges_serial_id,
|
||||
&handle_purse_merged,
|
||||
&rc);
|
||||
if (qs < 0)
|
||||
@ -1421,7 +1526,6 @@ analyze_reserves (void *cls)
|
||||
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
||||
return qs;
|
||||
}
|
||||
|
||||
qs = TALER_ARL_edb->select_purse_deposits_above_serial_id (
|
||||
TALER_ARL_edb->cls,
|
||||
ppr.last_purse_deposits_serial_id,
|
||||
@ -1432,9 +1536,10 @@ analyze_reserves (void *cls)
|
||||
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
||||
return qs;
|
||||
}
|
||||
/* Charge purse fee! */
|
||||
qs = TALER_ARL_edb->select_account_merges_above_serial_id (
|
||||
TALER_ARL_edb->cls,
|
||||
ppr.last_account_merge_serial_id,
|
||||
ppr.last_account_merges_serial_id,
|
||||
&handle_account_merged,
|
||||
&rc);
|
||||
if (qs < 0)
|
||||
@ -1442,6 +1547,7 @@ analyze_reserves (void *cls)
|
||||
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
||||
return qs;
|
||||
}
|
||||
/* Charge history fee! */
|
||||
qs = TALER_ARL_edb->select_history_requests_above_serial_id (
|
||||
TALER_ARL_edb->cls,
|
||||
ppr.last_history_requests_serial_id,
|
||||
@ -1452,6 +1558,8 @@ analyze_reserves (void *cls)
|
||||
GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
|
||||
return qs;
|
||||
}
|
||||
#if FIXME
|
||||
/* TODO: do we even care about these? */
|
||||
qs = TALER_ARL_edb->select_close_requests_above_serial_id (
|
||||
TALER_ARL_edb->cls,
|
||||
ppr.last_close_requests_serial_id,
|
||||
|
@ -1521,6 +1521,71 @@ prepare_statements (struct PostgresClosure *pg)
|
||||
" )"
|
||||
" ORDER BY purse_deposit_serial_id ASC;",
|
||||
1),
|
||||
|
||||
GNUNET_PQ_make_prepare (
|
||||
"audit_get_account_merges_incr",
|
||||
"SELECT"
|
||||
" am.account_merge_request_serial_id"
|
||||
",am.reserve_pub"
|
||||
",am.purse_pub"
|
||||
",pr.h_contract_terms"
|
||||
",pr.purse_expiration"
|
||||
",pr.amount_with_fee_val"
|
||||
",pr.amount_with_fee_frac"
|
||||
",pr.age_limit"
|
||||
",pr.flags"
|
||||
",pr.purse_fee_val"
|
||||
",pr.purse_fee_frac"
|
||||
",pm.merge_timestamp"
|
||||
",am.reserve_sig"
|
||||
" FROM account_merges am"
|
||||
" JOIN purse_requests pr USING (purse_pub)"
|
||||
" JOIN purse_merges pm USING (purse_pub)"
|
||||
" WHERE ("
|
||||
" (account_merge_request_serial_id>=$1)"
|
||||
" )"
|
||||
" ORDER BY account_merge_request_serial_id ASC;",
|
||||
1),
|
||||
|
||||
GNUNET_PQ_make_prepare (
|
||||
"audit_get_purse_merges_incr",
|
||||
"SELECT"
|
||||
" pm.purse_merge_request_serial_id"
|
||||
",partner_base_url"
|
||||
",pr.amount_with_fee_val"
|
||||
",pr.amount_with_fee_frac"
|
||||
",pr.flags"
|
||||
",pr.merge_pub"
|
||||
",pm.reserve_pub"
|
||||
",pm.merge_sig"
|
||||
",pm.purse_pub"
|
||||
",pm.merge_timestamp"
|
||||
" FROM purse_merges pm"
|
||||
" JOIN purse_requests pr USING (purse_pub)"
|
||||
" LEFT JOIN partners USING (partner_serial_id)"
|
||||
" WHERE ("
|
||||
" (purse_merge_request_serial_id>=$1)"
|
||||
" )"
|
||||
" ORDER BY purse_merge_request_serial_id ASC;",
|
||||
1),
|
||||
|
||||
GNUNET_PQ_make_prepare (
|
||||
"audit_get_history_requests_incr",
|
||||
"SELECT"
|
||||
" history_request_serial_id"
|
||||
",history_fee_val"
|
||||
",history_fee_frac"
|
||||
",request_timestamp"
|
||||
",reserve_pub"
|
||||
",reserve_sig"
|
||||
" FROM history_requests"
|
||||
" WHERE ("
|
||||
" (history_request_serial_id>=$1)"
|
||||
" )"
|
||||
" ORDER BY history_request_serial_id ASC;",
|
||||
1),
|
||||
|
||||
|
||||
GNUNET_PQ_make_prepare (
|
||||
"audit_get_purse_deposits_by_purse",
|
||||
"SELECT"
|
||||
@ -10558,6 +10623,72 @@ postgres_select_purse_deposits_above_serial_id (
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Select account merges 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
|
||||
*/
|
||||
static enum GNUNET_DB_QueryStatus
|
||||
postgres_select_account_merges_above_serial_id (
|
||||
void *cls,
|
||||
uint64_t serial_id,
|
||||
TALER_EXCHANGEDB_AccountMergeCallback cb,
|
||||
void *cb_cls)
|
||||
{
|
||||
GNUNET_break (0); // FIXME: not implemented
|
||||
return GNUNET_DB_STATUS_HARD_ERROR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Select purse merges deposits 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
|
||||
*/
|
||||
static enum GNUNET_DB_QueryStatus
|
||||
postgres_select_purse_merges_above_serial_id (
|
||||
void *cls,
|
||||
uint64_t serial_id,
|
||||
TALER_EXCHANGEDB_PurseMergeCallback cb,
|
||||
void *cb_cls)
|
||||
{
|
||||
GNUNET_break (0); // FIXME: not implemented
|
||||
return GNUNET_DB_STATUS_HARD_ERROR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Select history requests 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
|
||||
*/
|
||||
static enum GNUNET_DB_QueryStatus
|
||||
postgres_select_history_requests_above_serial_id (
|
||||
void *cls,
|
||||
uint64_t serial_id,
|
||||
TALER_EXCHANGEDB_HistoryRequestCallback cb,
|
||||
void *cb_cls)
|
||||
{
|
||||
GNUNET_break (0); // FIXME: not implemented
|
||||
return GNUNET_DB_STATUS_HARD_ERROR;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Closure for #purse_refund_serial_helper_cb().
|
||||
*/
|
||||
@ -15553,6 +15684,12 @@ libtaler_plugin_exchangedb_postgres_init (void *cls)
|
||||
= &postgres_select_deposits_above_serial_id;
|
||||
plugin->select_purse_deposits_above_serial_id
|
||||
= &postgres_select_purse_deposits_above_serial_id;
|
||||
plugin->select_account_merges_above_serial_id
|
||||
= &postgres_select_account_merges_above_serial_id;
|
||||
plugin->select_purse_merges_above_serial_id
|
||||
= &postgres_select_purse_merges_above_serial_id;
|
||||
plugin->select_history_requests_above_serial_id
|
||||
= &postgres_select_history_requests_above_serial_id;
|
||||
plugin->select_purse_refunds_above_serial_id
|
||||
= &postgres_select_purse_refunds_above_serial_id;
|
||||
plugin->select_purse_deposits_by_purse
|
||||
|
@ -2001,6 +2001,73 @@ typedef enum GNUNET_GenericReturnValue
|
||||
const struct TALER_DenominationPublicKey *denom_pub);
|
||||
|
||||
|
||||
/**
|
||||
* Function called with details about
|
||||
* account merge requests that have been made, with
|
||||
* the goal of auditing the account merge execution.
|
||||
*
|
||||
* @param cls closure
|
||||
* @param rowid unique serial ID for the deposit in our DB
|
||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||
*/
|
||||
typedef enum GNUNET_GenericReturnValue
|
||||
(*TALER_EXCHANGEDB_AccountMergeCallback)(
|
||||
void *cls,
|
||||
uint64_t rowid,
|
||||
const struct TALER_ReservePublicKeyP *reserve_pub,
|
||||
const struct TALER_PurseContractPublicKeyP *purse_pub,
|
||||
const struct TALER_PrivateContractHashP *h_contract_terms,
|
||||
struct GNUNET_TIME_Timestamp purse_expiration,
|
||||
const struct TALER_Amount *amount,
|
||||
uint32_t min_age,
|
||||
enum TALER_WalletAccountMergeFlags flags,
|
||||
const struct TALER_Amount *purse_fee,
|
||||
struct GNUNET_TIME_Timestamp merge_timestamp,
|
||||
struct TALER_ReserveSignatureP *reserve_sig);
|
||||
|
||||
|
||||
/**
|
||||
* Function called with details about purse
|
||||
* merges that have been made, with
|
||||
* the goal of auditing the purse merge execution.
|
||||
*
|
||||
* @param cls closure
|
||||
* @param rowid unique serial ID for the deposit in our DB
|
||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||
*/
|
||||
typedef enum GNUNET_GenericReturnValue
|
||||
(*TALER_EXCHANGEDB_PurseMergeCallback)(
|
||||
void *cls,
|
||||
uint64_t rowid,
|
||||
const char *partner_base_url,
|
||||
const struct TALER_Amount *amount,
|
||||
enum TALER_WalletAccountMergeFlags flags,
|
||||
const struct TALER_PurseMergePublicKeyP *merge_pub,
|
||||
const struct TALER_ReservePublicKeyP *reserve_pub,
|
||||
const struct TALER_PurseMergeSignatureP *merge_sig,
|
||||
const struct TALER_PurseContractPublicKeyP *purse_pub,
|
||||
struct GNUNET_TIME_Timestamp merge_timestamp);
|
||||
|
||||
|
||||
/**
|
||||
* Function called with details about
|
||||
* history requests that have been made, with
|
||||
* the goal of auditing the history request execution.
|
||||
*
|
||||
* @param cls closure
|
||||
* @param rowid unique serial ID for the deposit in our DB
|
||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||
*/
|
||||
typedef enum GNUNET_GenericReturnValue
|
||||
(*TALER_EXCHANGEDB_HistoryRequestCallback)(
|
||||
void *cls,
|
||||
uint64_t rowid,
|
||||
const struct TALER_Amount *history_fee,
|
||||
const struct GNUNET_TIME_Timestamp ts,
|
||||
const struct TALER_ReservePublicKeyP *reserve_pub,
|
||||
const struct TALER_ReserveSignatureP *reserve_sig);
|
||||
|
||||
|
||||
/**
|
||||
* Function called with details about purse refunds that have been made, with
|
||||
* the goal of auditing the purse refund's execution.
|
||||
@ -4101,6 +4168,60 @@ struct TALER_EXCHANGEDB_Plugin
|
||||
void *cb_cls);
|
||||
|
||||
|
||||
/**
|
||||
* Select account merges 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_account_merges_above_serial_id)(
|
||||
void *cls,
|
||||
uint64_t serial_id,
|
||||
TALER_EXCHANGEDB_AccountMergeCallback cb,
|
||||
void *cb_cls);
|
||||
|
||||
|
||||
/**
|
||||
* Select purse merges deposits 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_merges_above_serial_id)(
|
||||
void *cls,
|
||||
uint64_t serial_id,
|
||||
TALER_EXCHANGEDB_PurseMergeCallback cb,
|
||||
void *cb_cls);
|
||||
|
||||
|
||||
/**
|
||||
* Select history requests 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_history_requests_above_serial_id)(
|
||||
void *cls,
|
||||
uint64_t serial_id,
|
||||
TALER_EXCHANGEDB_HistoryRequestCallback cb,
|
||||
void *cb_cls);
|
||||
|
||||
|
||||
/**
|
||||
* Select purse refunds above @a serial_id in monotonically increasing
|
||||
* order.
|
||||
|
Loading…
Reference in New Issue
Block a user