database schema change for #6175

This commit is contained in:
Christian Grothoff 2020-11-24 13:36:17 +01:00
parent b9b38cdc47
commit ddcf679493
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 88 additions and 1 deletions

View File

@ -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 about.';
CREATE INDEX IF NOT EXISTS denominations_expire_legal_index
ON denominations

View File

@ -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.';
CREATE TABLE IF NOT EXISTS auditors
(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
);
COMMENT ON TABLE auditors
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 messages.';
CREATE TABLE IF NOT EXISTS auditor_denom_sigs
(auditor_pub BYTEA NOT NULL REFERENCES auditors (auditor_pub) ON DELETE CASCADE
,denom_pub_hash BYTEA NOT NULL REFERENCES denominations (denom_pub_hash) ON DELETE CASCADE
,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 TALER_SIGNATURE_AUDITOR_EXCHANGE_KEYS.';
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 keys.';
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 TALER_SIGNATURE_MASTER_SIGNING_KEY_VALIDITY.';
COMMENT ON COLUMN exchange_sign_keys.legal_end
IS 'Time when this online signing key legally expires.';
-- Complete transaction
COMMIT;