summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-05-16 15:24:54 +0200
committerChristian Grothoff <christian@grothoff.org>2021-05-16 15:24:54 +0200
commita9e4a611c51d5a34c8c363a8abf52276edbcc127 (patch)
treed039112cf3c1f7f7df4a4d1043d5162457de2476
parent145788c384c7417815fd632a5aaac973c67d3136 (diff)
downloaddocs-a9e4a611c51d5a34c8c363a8abf52276edbcc127.tar.gz
docs-a9e4a611c51d5a34c8c363a8abf52276edbcc127.tar.bz2
docs-a9e4a611c51d5a34c8c363a8abf52276edbcc127.zip
add tables for configuration related to p2p payments
-rw-r--r--design-documents/013-peer-to-peer-payments.rst53
1 files 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;