[Top][All Lists]

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

[taler-exchange] branch master updated: database schema change for #6175

From: gnunet
Subject: [taler-exchange] branch master updated: database schema change for #6175
Date: Tue, 24 Nov 2020 13:36:19 +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 ddcf6794 database schema change for #6175
ddcf6794 is described below

commit ddcf679493a0a49cf4e8be94d29cd3216b7880ea
Author: Christian Grothoff <>
AuthorDate: Tue Nov 24 13:36:17 2020 +0100

    database schema change for #6175
 src/exchangedb/exchange-0001.sql |  2 +-
 src/exchangedb/exchange-0002.sql | 87 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 88 insertions(+), 1 deletion(-)

diff --git a/src/exchangedb/exchange-0001.sql b/src/exchangedb/exchange-0001.sql
index 25b77823..8428a94b 100644
--- a/src/exchangedb/exchange-0001.sql
+++ b/src/exchangedb/exchange-0001.sql
@@ -42,7 +42,7 @@ CREATE TABLE IF NOT EXISTS denominations
   ,fee_refund_frac INT4 NOT NULL
 COMMENT ON TABLE denominations
-  IS 'Main denominations table. All the coins the exchange knows about.';
+  IS 'Main denominations table. All the valid denominations the exchange knows 
 CREATE INDEX IF NOT EXISTS denominations_expire_legal_index
   ON denominations
diff --git a/src/exchangedb/exchange-0002.sql b/src/exchangedb/exchange-0002.sql
index 9a2793f1..a670876a 100644
--- a/src/exchangedb/exchange-0002.sql
+++ b/src/exchangedb/exchange-0002.sql
@@ -43,6 +43,93 @@ COMMENT ON INDEX prepare_get_index
+CREATE TABLE IF NOT EXISTS future_denominations
+  (denom_pub_hash BYTEA PRIMARY KEY CHECK (LENGTH(denom_pub_hash)=64)
+  ,denom_pub BYTEA NOT NULL
+  ,valid_from INT8 NOT NULL
+  ,expire_withdraw INT8 NOT NULL
+  ,expire_deposit INT8 NOT NULL
+  ,expire_legal INT8 NOT NULL
+  ,coin_val INT8 NOT NULL
+  ,coin_frac INT4 NOT NULL
+  ,fee_withdraw_val INT8 NOT NULL
+  ,fee_withdraw_frac INT4 NOT NULL
+  ,fee_deposit_val INT8 NOT NULL
+  ,fee_deposit_frac INT4 NOT NULL
+  ,fee_refresh_val INT8 NOT NULL
+  ,fee_refresh_frac INT4 NOT NULL
+  ,fee_refund_val INT8 NOT NULL
+  ,fee_refund_frac INT4 NOT NULL
+  );
+COMMENT ON TABLE future_denominations
+  IS 'Future denominations. Moved to denomiations once the master signature is 
provided. Kept separate (instead of using NULL-able master_sig column) to 
ensure denomination keys without master signature cannot satisfy foreign key 
constraints of other tables.';
+COMMENT ON COLUMN future_denominations.valid_from
+  IS 'Earliest time when the private key can be used to withdraw.';
+COMMENT ON COLUMN future_denominations.expire_withdraw
+  IS 'Latest time when the private key can be used to withdraw.';
+CREATE INDEX IF NOT EXISTS future_denominations_expire_withdraw_index
+  ON future_denominations
+  (expire_withdraw);
+COMMENT ON INDEX future_denominations_expire_withdraw_index
+  IS 'Future denominations that cannot be withdrawn anymore can be deleted.';
+  (auditor_pub BYTEA PRIMARY KEY CHECK (LENGTH(auditor_pub)=32)
+  ,auditor_name VARCHAR NOT NULL
+  ,auditor_url VARCHAR NOT NULL
+  ,is_active BOOLEAN NOT NULL
+  ,last_change INT8 NOT NULL
+  );
+  IS 'Table with auditors the exchange uses or has used in the past. Entries 
never expire as we need to remember the last_change column indefinitely.';
+COMMENT ON COLUMN auditors.auditor_pub
+  IS 'Public key of the auditor.';
+COMMENT ON COLUMN auditors.auditor_url
+  IS 'The base URL of the auditor.';
+COMMENT ON COLUMN auditors.is_active
+  IS 'true if we are currently supporting the use of this auditor.';
+COMMENT ON COLUMN auditors.last_change
+  IS 'Latest time when active status changed. Used to detect replays of old 
+CREATE TABLE IF NOT EXISTS auditor_denom_sigs
+  (auditor_pub BYTEA NOT NULL REFERENCES auditors (auditor_pub) ON DELETE 
+  ,denom_pub_hash BYTEA NOT NULL REFERENCES denominations (denom_pub_hash) ON 
+  ,auditor_sig BYTEA PRIMARY KEY CHECK (LENGTH(auditor_sig)=64)
+  );
+COMMENT ON TABLE auditor_denom_sigs
+  IS 'Table with auditor signatures on exchange denomination keys.';
+COMMENT ON COLUMN auditor_denom_sigs.auditor_pub
+  IS 'Public key of the auditor.';
+COMMENT ON COLUMN auditor_denom_sigs.denom_pub_hash
+  IS 'Denomination the signature is for.';
+COMMENT ON COLUMN auditor_denom_sigs.auditor_sig
+  IS 'Signature of the auditor, of purpose 
+CREATE INDEX IF NOT EXISTS auditor_denom_sigs_denom_hash_index
+  ON auditor_denom_sigs
+  (denom_pub_hash);
+CREATE TABLE IF NOT EXISTS exchange_sign_keys
+  (exchange_pub BYTEA PRIMARY KEY
+  ,master_pub BYTEA NOT NULL CHECK (LENGTH(master_pub)=32)
+  ,master_sig BYTEA NOT NULL CHECK (LENGTH(master_sig)=64)
+  ,legal_end INT8 NOT NULL
+  );
+COMMENT ON TABLE exchange_sign_keys
+  IS 'Table with master public key signatures on exchange online signing 
+COMMENT ON COLUMN exchange_sign_keys.exchange_pub
+  IS 'Public online signing key of the exchange.';
+COMMENT ON COLUMN exchange_sign_keys.master_pub
+  IS 'Master public key of the exchange that was used for master_sig.';
+COMMENT ON COLUMN exchange_sign_keys.master_sig
+  IS 'Signature affirming the validity of the signing key of purpose 
+COMMENT ON COLUMN exchange_sign_keys.legal_end
+  IS 'Time when this online signing key legally expires.';
 -- Complete transaction

To stop receiving notification emails like this one, please contact

reply via email to

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