From a9e4a611c51d5a34c8c363a8abf52276edbcc127 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 16 May 2021 15:24:54 +0200 Subject: add tables for configuration related to p2p payments --- design-documents/013-peer-to-peer-payments.rst | 53 ++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/design-documents/013-peer-to-peer-payments.rst b/design-documents/013-peer-to-peer-payments.rst index 7be20217..c0308bcf 100644 --- a/design-documents/013-peer-to-peer-payments.rst +++ b/design-documents/013-peer-to-peer-payments.rst @@ -631,6 +631,34 @@ database.) -- Check patch versioning is in place. SELECT _v.register_patch('exchange-TBD', NULL, NULL); -- + CREATE TABLE IF NOT EXISTS partners + (partner_serial_id BIGSERIAL UNIQUE + ,partner_master_pub BYTEA NOT NULL CHECK(LENGTH(reserve_pub)=32) + ,start_date INT8 NOT NULL + ,end_date INT8 NOT NULL + ,wad_frequency INT8 NOT NULL + ,wad_fee_val INT8 NOT NULL + ,wad_fee_frac INT4 NOT NULL + ,master_sig BYTEA NOT NULL CHECK (LENGTH(master_sig)=64)) + ,partner_base_url TEXT NOT NULL + ); + COMMENT ON TABLE partners + IS 'exchanges we do wad transfers to'; + COMMENT ON COLUMN partners.partner_master_pub + IS 'offline master public key of the partner'; + COMMENT ON COLUMN partners.start_date + IS 'starting date of the partnership'; + COMMENT ON COLUMN partners.end_date + IS 'end date of the partnership'; + COMMENT ON COLUMN partners.wad_frequency + IS 'how often do we promise to do wad transfers'; + COMMENT ON COLUMN partners.wad_fee_val + IS 'how high is the fee for a wallet to be added to a wad to this partner'; + COMMENT ON COLUMN partners.partner_base_url + IS 'base URL of the REST API for this partner'; + COMMENT ON COLUMN partners.master_sig + IS 'signature of our master public key affirming the partnership, of purpose TALER_SIGNATURE_MASTER_PARTNER_DETAILS'; + -- ALTER TABLE reserves ADD COLUMN kyc_needed BOOLEAN NOT NULL DEFAULT (false) ADD COLUMN kyc_passed BOOLEAN NOT NULL DEFAULT (false) @@ -674,7 +702,9 @@ database.) CREATE TABLE IF NOT EXISTS mergers (merge_request_serial_id BIGSERIAL UNIQUE ,reserve_uuid BYTEA NOT NULL REFERENCES reserves (reserve_uuid) ON DELETE CASCADE + ,partner_serial_id INT8 REFERENCES partners(partner_serial_id) ON DELETE CASCADE, ,reserve_url TEXT NOT NULL, + ,reserve_pub BYTEA NOT NULL CHECK (LENGTH(reserve_pub)=32), ,purse_pub BYTEA NOT NULL CHECK (LENGTH(purse_pub)=32), ,reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64)) ,purse_sig BYTEA NOT NULL CHECK (LENGTH(purse_sig)=64)) @@ -689,8 +719,12 @@ database.) IS 'Merge requests where a purse- and account-owner requested merging the purse into the account'; COMMENT ON COLUMN mergers.reserve_uuid IS 'identifies the reserve'; + COMMENT ON COLUMN mergers.partner_serial_id + IS 'identifies the partner exchange, NULL in case the target reserve lives at this exchange'; COMMENT ON COLUMN mergers.reserve_url IS 'payto://-URL of the reserve, identifies the exchange and the reserve'; + COMMENT ON COLUMN mergers.reserve_pub + IS 'public key of the target reserve'; COMMENT ON COLUMN mergers.purse_pub IS 'public key of the purse'; COMMENT ON COLUMN mergers.reserve_sig @@ -810,7 +844,7 @@ database.) CREATE TABLE IF NOT EXISTS wads_out (wad_out_serial_id BIGSERIAL UNIQUE ,wad_id BYTEA PRIMARY KEY CHECK (LENGTH(wad_id)=24) - ,target_exchange_url TEXT NOT NULL + ,partner_serial_id INT8 NOT NULL REFERENCES partners(partner_serial_id) ON DELETE CASCADE, ,amount_val INT8 NOT NULL ,amount_frac INT4 NOT NULL ,execution_time INT8 NOT NULL @@ -820,8 +854,8 @@ database.) IS 'Wire transfers made to another exchange to transfer purse funds'; COMMENT ON COLUMN wads_out.wad_id IS 'Unique identifier of the wad, part of the wire transfer subject'; - COMMENT ON COLUMN wads_out.target_exchange_url - IS 'Base URL of the target exchange'; + COMMENT ON COLUMN wads_out.partner_serial_id + IS 'target exchange of the wad'; COMMENT ON COLUMN wads_out.amount_val IS 'Amount that was wired'; COMMENT ON COLUMN wads_out.execution_time @@ -940,6 +974,19 @@ database.) IS 'needed to lookup all transfers associated with a wad'; COMMENT ON INDEX wad_in_entries_reserve_pub IS 'needed to compute reserve history'; + -- + CREATE TABLE IF NOT EXISTS partners + (partner_serial_id BIGSERIAL UNIQUE + ,wad_in_serial_id INT8 REFERENCES wads_in (wad_serial_id) ON DELETE CASCADE + ,partner_master_pub BYTEA NOT NULL CHECK(LENGTH(reserve_pub)=32) + ,start_date INT8 NOT NULL + ,end_date INT8 NOT NULL + ,wad_frequency INT8 NOT NULL + ,wad_fee_val INT8 NOT NULL + ,wad_fee_frac INT4 NOT NULL + ,master_sig BYTEA NOT NULL CHECK (LENGTH(master_sig)=64)) + ,partner_base_url TEXT NOT NULL + ); -- Complete transaction COMMIT; -- cgit v1.2.3