gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-exchange] branch master updated: track number of coi


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] branch master updated: track number of coins issued per denomination in auditor (not yet used)
Date: Sun, 28 Oct 2018 11:30:06 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new bd40aad7 track number of coins issued per denomination in auditor (not 
yet used)
bd40aad7 is described below

commit bd40aad7dc22c9f5d723f82384c5d57204205b7a
Author: Christian Grothoff <address@hidden>
AuthorDate: Sun Oct 28 11:30:02 2018 +0100

    track number of coins issued per denomination in auditor (not yet used)
---
 src/auditor/taler-auditor.c               | 23 +++++++++++-----
 src/auditordb/plugin_auditordb_postgres.c | 44 ++++++++++++++++++++-----------
 src/auditordb/test_auditordb.c            | 39 +++++++++++++++------------
 src/include/taler_auditordb_plugin.h      | 13 ++++++---
 4 files changed, 76 insertions(+), 43 deletions(-)

diff --git a/src/auditor/taler-auditor.c b/src/auditor/taler-auditor.c
index 12ababc5..8c13e45d 100644
--- a/src/auditor/taler-auditor.c
+++ b/src/auditor/taler-auditor.c
@@ -2754,6 +2754,12 @@ struct DenominationSummary
   struct TALER_Amount denom_risk;
 
   /**
+   * How many coins (not their amount!) of this denomination
+   * did the exchange issue overall?
+   */
+  uint64_t num_issued;
+
+  /**
    * Denomination key information for this denomination.
    */
   const struct TALER_EXCHANGEDB_DenominationKeyInformationP *dki;
@@ -2805,10 +2811,11 @@ init_denomination (const struct GNUNET_HashCode 
*denom_hash,
   enum GNUNET_DB_QueryStatus qs;
 
   qs = adb->get_denomination_balance (adb->cls,
-                                       asession,
-                                       denom_hash,
-                                       &ds->denom_balance,
-                                       &ds->denom_risk);
+                                      asession,
+                                      denom_hash,
+                                      &ds->denom_balance,
+                                      &ds->denom_risk,
+                                      &ds->num_issued);
   if (0 > qs)
   {
     GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
@@ -2964,13 +2971,15 @@ sync_denomination (void *cls,
                                             asession,
                                             denom_hash,
                                             &ds->denom_balance,
-                                            &ds->denom_risk);
+                                            &ds->denom_risk,
+                                             ds->num_issued);
     else
       qs = adb->insert_denomination_balance (adb->cls,
                                             asession,
                                             denom_hash,
                                             &ds->denom_balance,
-                                            &ds->denom_risk);
+                                            &ds->denom_risk,
+                                             ds->num_issued);
   }
   if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs)
   {
@@ -3051,6 +3060,7 @@ withdraw_cb (void *cls,
               "Issued coin in denomination `%s' of total value %s\n",
               GNUNET_h2s (&dh),
               TALER_amount2s (&value));
+  ds->num_issued++;
   if (GNUNET_OK !=
       TALER_amount_add (&ds->denom_balance,
                         &ds->denom_balance,
@@ -3367,6 +3377,7 @@ refresh_session_cb (void *cls,
                     "Created fresh coin in denomination `%s' of value %s\n",
                     GNUNET_h2s (&new_dkis[i]->properties.denom_hash),
                     TALER_amount2s (&value));
+        dsi->num_issued++;
         if (GNUNET_OK !=
             TALER_amount_add (&dsi->denom_balance,
                               &dsi->denom_balance,
diff --git a/src/auditordb/plugin_auditordb_postgres.c 
b/src/auditordb/plugin_auditordb_postgres.c
index 159e4503..2f426b99 100644
--- a/src/auditordb/plugin_auditordb_postgres.c
+++ b/src/auditordb/plugin_auditordb_postgres.c
@@ -308,18 +308,18 @@ postgres_create_tables (void *cls)
                            ",wire_fee_balance_curr 
VARCHAR("TALER_CURRENCY_LEN_STR") NOT NULL"
                            ")"),
     /* Table with all of the outstanding denomination coins that the
-       exchange is aware of.  "last_deposit_serial_id" marks the
-       deposit_serial_id from "deposits" about this denomination key
-       that the auditor is aware of; "last_melt_serial_id" marks the
-       last melt from "refresh_sessions" that the auditor is aware
-       of; "refund_serial_id" tells us the last entry in "refunds"
-       for this denom_pub that the auditor is aware of. */
+       exchange is aware of and what the respective balances are
+       (outstanding as well as issued overall which implies the
+       maximum value at risk).  We also count the number of coins
+       issued (withdraw, refresh-reveal) and the number of coins seen
+       at the exchange (refresh-commit, deposit), not just the amounts. */
     GNUNET_PQ_make_execute ("CREATE TABLE IF NOT EXISTS 
auditor_denomination_pending"
                            "(denom_pub_hash BYTEA PRIMARY KEY"
                            " REFERENCES auditor_denominations (denom_pub_hash) 
ON DELETE CASCADE"
                            ",denom_balance_val INT8 NOT NULL"
                            ",denom_balance_frac INT4 NOT NULL"
                            ",denom_balance_curr 
VARCHAR("TALER_CURRENCY_LEN_STR") NOT NULL"
+                            ",num_issued INT8 NOT NULL"
                            ",denom_risk_val INT8 NOT NULL"
                            ",denom_risk_frac INT4 NOT NULL"
                            ",denom_risk_curr VARCHAR("TALER_CURRENCY_LEN_STR") 
NOT NULL"
@@ -818,28 +818,31 @@ postgres_prepare (PGconn *db_conn)
                            ",denom_balance_val"
                            ",denom_balance_frac"
                            ",denom_balance_curr"
+                            ",num_issued"
                            ",denom_risk_val"
                            ",denom_risk_frac"
                            ",denom_risk_curr"
-                           ") VALUES ($1,$2,$3,$4,$5,$6,$7);",
-                           7),
+                           ") VALUES ($1,$2,$3,$4,$5,$6,$7,$8);",
+                           8),
     /* Used in #postgres_update_denomination_balance() */
     GNUNET_PQ_make_prepare ("auditor_denomination_pending_update",
                            "UPDATE auditor_denomination_pending SET"
                            " denom_balance_val=$1"
                            ",denom_balance_frac=$2"
                            ",denom_balance_curr=$3"
-                           ",denom_risk_val=$4"
-                           ",denom_risk_frac=$5"
-                           ",denom_risk_curr=$6"
-                           " WHERE denom_pub_hash=$7",
-                           7),
+                            ",num_issued=$4"
+                           ",denom_risk_val=$5"
+                           ",denom_risk_frac=$6"
+                           ",denom_risk_curr=$7"
+                           " WHERE denom_pub_hash=$8",
+                           8),
     /* Used in #postgres_get_denomination_balance() */
     GNUNET_PQ_make_prepare ("auditor_denomination_pending_select",
                            "SELECT"
                            " denom_balance_val"
                            ",denom_balance_frac"
                            ",denom_balance_curr"
+                            ",num_issued"
                            ",denom_risk_val"
                            ",denom_risk_frac"
                            ",denom_risk_curr"
@@ -2458,6 +2461,7 @@ postgres_get_wire_fee_summary (void *cls,
  * @param denom_pub_hash hash of the denomination public key
  * @param denom_balance value of coins outstanding with this denomination key
  * @param denom_risk value of coins issued with this denomination key
+ * @param num_issued how many coins of this denomination did the exchange 
blind-sign
  * @return transaction status code
  */
 static enum GNUNET_DB_QueryStatus
@@ -2465,11 +2469,13 @@ postgres_insert_denomination_balance (void *cls,
                                       struct TALER_AUDITORDB_Session *session,
                                       const struct GNUNET_HashCode 
*denom_pub_hash,
                                       const struct TALER_Amount *denom_balance,
-                                      const struct TALER_Amount *denom_risk)
+                                      const struct TALER_Amount *denom_risk,
+                                      uint64_t num_issued)
 {
   struct GNUNET_PQ_QueryParam params[] = {
     GNUNET_PQ_query_param_auto_from_type (denom_pub_hash),
     TALER_PQ_query_param_amount (denom_balance),
+    GNUNET_PQ_query_param_uint64 (&num_issued),
     TALER_PQ_query_param_amount (denom_risk),
     GNUNET_PQ_query_param_end
   };
@@ -2489,6 +2495,7 @@ postgres_insert_denomination_balance (void *cls,
  * @param denom_pub_hash hash of the denomination public key
  * @param denom_balance value of coins outstanding with this denomination key
  * @param denom_risk value of coins issued with this denomination key
+ * @param num_issued how many coins of this denomination did the exchange 
blind-sign
  * @return transaction status code
  */
 static enum GNUNET_DB_QueryStatus
@@ -2496,10 +2503,12 @@ postgres_update_denomination_balance (void *cls,
                                       struct TALER_AUDITORDB_Session *session,
                                       const struct GNUNET_HashCode 
*denom_pub_hash,
                                       const struct TALER_Amount *denom_balance,
-                                      const struct TALER_Amount *denom_risk)
+                                      const struct TALER_Amount *denom_risk,
+                                      uint64_t num_issued)
 {
   struct GNUNET_PQ_QueryParam params[] = {
     TALER_PQ_query_param_amount (denom_balance),
+    GNUNET_PQ_query_param_uint64 (&num_issued),
     TALER_PQ_query_param_amount (denom_risk),
     GNUNET_PQ_query_param_auto_from_type (denom_pub_hash),
     GNUNET_PQ_query_param_end
@@ -2519,6 +2528,7 @@ postgres_update_denomination_balance (void *cls,
  * @param denom_pub_hash hash of the denomination public key
  * @param[out] denom_balance value of coins outstanding with this denomination 
key
  * @param[out] denom_risk value of coins issued with this denomination key
+ * @param[out] num_issued how many coins of this denomination did the exchange 
blind-sign
  * @return transaction status code
  */
 static enum GNUNET_DB_QueryStatus
@@ -2526,7 +2536,8 @@ postgres_get_denomination_balance (void *cls,
                                    struct TALER_AUDITORDB_Session *session,
                                    const struct GNUNET_HashCode 
*denom_pub_hash,
                                    struct TALER_Amount *denom_balance,
-                                   struct TALER_Amount *denom_risk)
+                                   struct TALER_Amount *denom_risk,
+                                   uint64_t *num_issued)
 {
   struct GNUNET_PQ_QueryParam params[] = {
     GNUNET_PQ_query_param_auto_from_type (denom_pub_hash),
@@ -2535,6 +2546,7 @@ postgres_get_denomination_balance (void *cls,
   struct GNUNET_PQ_ResultSpec rs[] = {
     TALER_PQ_result_spec_amount ("denom_balance", denom_balance),
     TALER_PQ_result_spec_amount ("denom_risk", denom_risk),
+    GNUNET_PQ_result_spec_uint64 ("num_issued", num_issued),
     GNUNET_PQ_result_spec_end
   };
 
diff --git a/src/auditordb/test_auditordb.c b/src/auditordb/test_auditordb.c
index 1b8a4223..65ea38e7 100644
--- a/src/auditordb/test_auditordb.c
+++ b/src/auditordb/test_auditordb.c
@@ -364,6 +364,7 @@ run (void *cls)
   struct TALER_Amount refund_fee_balance2;
   struct TALER_Amount rbalance;
   struct TALER_Amount rbalance2;
+  uint64_t nissued;
 
   GNUNET_assert (GNUNET_OK ==
                  TALER_string_to_amount (CURRENCY ":12.345678",
@@ -386,7 +387,8 @@ run (void *cls)
                                                session,
                                                &denom_pub_hash,
                                                &denom_balance,
-                                               &rbalance));
+                                               &rbalance,
+                                               42));
 
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Test: update_denomination_balance\n");
@@ -401,7 +403,8 @@ run (void *cls)
                                                session,
                                                &denom_pub_hash,
                                                &denom_balance,
-                                               &rbalance));
+                                               &rbalance,
+                                               62));
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Test: get_denomination_balance\n");
 
@@ -410,10 +413,12 @@ run (void *cls)
                                             session,
                                             &denom_pub_hash,
                                             &denom_balance2,
-                                            &rbalance2));
+                                            &rbalance2,
+                                            &nissued));
 
   FAILIF (0 != memcmp (&denom_balance2, &denom_balance, sizeof 
(denom_balance)));
   FAILIF (0 != memcmp (&rbalance2, &rbalance, sizeof (rbalance)));
+  FAILIF (62 != nissued);
 
 
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
@@ -421,26 +426,26 @@ run (void *cls)
 
   FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
           plugin->insert_balance_summary (plugin->cls,
-                                               session,
-                                               &master_pub,
-                                               &refund_fee_balance,
-                                               &melt_fee_balance,
-                                               &deposit_fee_balance,
-                                               &denom_balance,
-                                               &rbalance));
+                                          session,
+                                          &master_pub,
+                                          &refund_fee_balance,
+                                          &melt_fee_balance,
+                                          &deposit_fee_balance,
+                                          &denom_balance,
+                                          &rbalance));
 
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Test: update_balance_summary\n");
 
   FAILIF (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT !=
           plugin->update_balance_summary (plugin->cls,
-                                               session,
-                                               &master_pub,
-                                               &denom_balance,
-                                               &deposit_fee_balance,
-                                               &melt_fee_balance,
-                                               &refund_fee_balance,
-                                               &rbalance));
+                                          session,
+                                          &master_pub,
+                                          &denom_balance,
+                                          &deposit_fee_balance,
+                                          &melt_fee_balance,
+                                          &refund_fee_balance,
+                                          &rbalance));
 
   GNUNET_log (GNUNET_ERROR_TYPE_INFO,
               "Test: get_balance_summary\n");
diff --git a/src/include/taler_auditordb_plugin.h 
b/src/include/taler_auditordb_plugin.h
index 65db12b7..76dcc350 100644
--- a/src/include/taler_auditordb_plugin.h
+++ b/src/include/taler_auditordb_plugin.h
@@ -509,7 +509,6 @@ struct TALER_AUDITORDB_Plugin
   (*insert_exchange_signkey) (void *cls,
                               struct TALER_AUDITORDB_Session *session,
                               const struct TALER_AUDITORDB_ExchangeSigningKey 
*sk);
-  // FIXME: above function is not yet implemented!, check for _XX for prepared 
statement!
 
 
   /**
@@ -1040,6 +1039,7 @@ struct TALER_AUDITORDB_Plugin
    * @param denom_pub_hash hash of the denomination public key
    * @param denom_balance value of coins outstanding with this denomination key
    * @param denom_risk value of coins issued with this denomination key
+   * @param num_issued how many coins of this denomination did the exchange 
blind-sign
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
@@ -1047,7 +1047,8 @@ struct TALER_AUDITORDB_Plugin
                                  struct TALER_AUDITORDB_Session *session,
                                  const struct GNUNET_HashCode *denom_pub_hash,
                                  const struct TALER_Amount *denom_balance,
-                                 const struct TALER_Amount *denom_risk);
+                                 const struct TALER_Amount *denom_risk,
+                                 uint64_t num_issued);
 
 
   /**
@@ -1059,6 +1060,7 @@ struct TALER_AUDITORDB_Plugin
    * @param denom_pub_hash hash of the denomination public key
    * @param denom_balance value of coins outstanding with this denomination key
    * @param denom_risk value of coins issued with this denomination key
+   * @param num_issued how many coins of this denomination did the exchange 
blind-sign
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
@@ -1066,7 +1068,8 @@ struct TALER_AUDITORDB_Plugin
                                  struct TALER_AUDITORDB_Session *session,
                                  const struct GNUNET_HashCode *denom_pub_hash,
                                  const struct TALER_Amount *denom_balance,
-                                 const struct TALER_Amount *denom_risk);
+                                 const struct TALER_Amount *denom_risk,
+                                 uint64_t num_issued);
 
 
   /**
@@ -1077,6 +1080,7 @@ struct TALER_AUDITORDB_Plugin
    * @param denom_pub_hash hash of the denomination public key
    * @param[out] denom_balance value of coins outstanding with this 
denomination key
    * @param[out] denom_risk value of coins issued with this denomination key
+   * @param[out] num_issued how many coins of this denomination did the 
exchange blind-sign
    * @return transaction status code
    */
   enum GNUNET_DB_QueryStatus
@@ -1084,7 +1088,8 @@ struct TALER_AUDITORDB_Plugin
                               struct TALER_AUDITORDB_Session *session,
                               const struct GNUNET_HashCode *denom_pub_hash,
                               struct TALER_Amount *denom_balance,
-                              struct TALER_Amount *denom_risk);
+                              struct TALER_Amount *denom_risk,
+                              uint64_t *num_issued);
 
 
   /**

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]