summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-05-09 14:34:50 +0200
committerChristian Grothoff <christian@grothoff.org>2021-05-09 14:34:50 +0200
commit1cb61c4f8e0a1b02d9689d375c39ab4554880347 (patch)
treea47c50d9f69b4cc132dd09e990135f261703fe4f
parent4e406e059e1fb5f9f91e22e197e9fc9b076dbd9f (diff)
downloaddocs-1cb61c4f8e0a1b02d9689d375c39ab4554880347.tar.gz
docs-1cb61c4f8e0a1b02d9689d375c39ab4554880347.tar.bz2
docs-1cb61c4f8e0a1b02d9689d375c39ab4554880347.zip
add inbound wad tables
-rw-r--r--core/api-exchange.rst5
-rw-r--r--design-documents/013-peer-to-peer-payments.rst185
2 files changed, 178 insertions, 12 deletions
diff --git a/core/api-exchange.rst b/core/api-exchange.rst
index a2e32579..d3000259 100644
--- a/core/api-exchange.rst
+++ b/core/api-exchange.rst
@@ -2432,11 +2432,6 @@ Wallet-to-wallet transfers
TODO for the spec:
- * update DD13 eDB SQL: tables for incoming wads!
- * do we need some special entry in account/reserve
- histories for incoming WAD-transfers vs. other merges,
- or do we re-use the existing 'merge' entry and just
- generate it from the incoming-wad table?
* update wire transfer API to enable WAD IDs (and while we are
at it, should probably also write extended version to allow
_merchants_ to query for their inbound transfers, so spec
diff --git a/design-documents/013-peer-to-peer-payments.rst b/design-documents/013-peer-to-peer-payments.rst
index 5e786203..eda407e6 100644
--- a/design-documents/013-peer-to-peer-payments.rst
+++ b/design-documents/013-peer-to-peer-payments.rst
@@ -631,6 +631,8 @@ also be possible to keep that link only in the external KYC service's
database.)
+TODO/FIXME: update the following SQL: add missing comments!
+
.. sourcecode:: sql
@@ -664,6 +666,8 @@ database.)
,kyc_id TEXT NOT NULL
,PRIMARY KEY (reserve_uuid, kyc_date)
);
+ COMMENT ON TABLE kyc_requests
+ IS '';
COMMENT ON COLUMN kyc_requests.reserve_uuid
IS 'Reserve for which the KYC request was triggered.';
COMMENT ON COLUMN kyc_requests.reserve_sig
@@ -692,6 +696,32 @@ database.)
,purse_frac INT4 NOT NULL
,PRIMARY KEY (purse_pub)
);
+ COMMENT ON TABLE mergers
+ IS '';
+ COMMENT ON COLUMN mergers.reserve_uuid
+ IS '';
+ COMMENT ON COLUMN mergers.purse_url
+ IS '';
+ COMMENT ON COLUMN mergers.purse_pub
+ IS '';
+ COMMENT ON COLUMN mergers.reserve_sig
+ IS '';
+ COMMENT ON COLUMN mergers.purse_sig
+ IS '';
+ COMMENT ON COLUMN mergers.merge_timestamp
+ IS '';
+ COMMENT ON COLUMN mergers.purse_expiration
+ IS '';
+ COMMENT ON COLUMN mergers.h_contract_terms
+ IS '';
+ COMMENT ON COLUMN mergers.h_wire
+ IS '';
+ COMMENT ON COLUMN mergers.purse_val
+ IS '';
+ CREATE INDEX IF NOT EXISTS mergers_reserve_uuid
+ ON mergers (reserve_uuid);
+ COMMENT ON INDEX mergers_reserve_uuid
+ IS '';
--
CREATE TABLE IF NOT EXISTS contracts
(contract_serial_id BIGSERIAL UNIQUE
@@ -700,13 +730,31 @@ database.)
,e_contract BYTEA NOT NULL,
,PRIMARY KEY (purse_pub)
);
+ COMMENT ON TABLE contracts
+ IS '';
+ COMMENT ON COLUMN contracts.purse_pub
+ IS '';
+ COMMENT ON COLUMN contracts.pub_ckey
+ IS '';
+ COMMENT ON COLUMN contracts.e_contract
+ IS '';
--
CREATE TABLE IF NOT EXISTS history_requests
(reserve_uuid INT8 NOT NULL REFERENCES reserves(reserve_uuid) ON DELETE CASCADE,
,request_timestamp INT8 NOT NULL
,reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64))
+ ,history_fee_val INT8 NOT NULL
+ ,history_fee_frac INT4 NOT NULL
,PRIMARY KEY (reserve_uuid,request_timestamp)
);
+ COMMENT ON TABLE history_requests
+ IS '';
+ COMMENT ON COLUMN history_requests.request_timestamp
+ IS '';
+ COMMENT ON COLUMN history_requests.reserve_sig
+ IS '';
+ COMMENT ON COLUMN history_requests.history_fee_val
+ IS '';
--
CREATE TABLE IF NOT EXISTS close_requests
(reserve_uuid INT8 NOT NULL REFERENCES reserves(reserve_uuid) ON DELETE CASCADE,
@@ -716,6 +764,14 @@ database.)
,close_frac INT4 NOT NULL
,PRIMARY KEY (reserve_uuid,close_timestamp)
);
+ COMMENT ON TABLE close_requests
+ IS '';
+ COMMENT ON COLUMN close_requests.close_timestamp
+ IS '';
+ COMMENT ON COLUMN close_requests.reserve_sig
+ IS '';
+ COMMENT ON COLUMN close_requests.close_val
+ IS '';
--
CREATE TABLE IF NOT EXISTS purse_deposits
(purse_deposit_serial_id BIGSERIAL UNIQUE
@@ -727,20 +783,104 @@ database.)
,coin_sig BYTEA NOT NULL CHECK(LENGTH(coin_sig)=64)
,PRIMARY KEY (purse_pub,coin_pub)
);
+ COMMENT ON TABLE purse_deposits
+ IS '';
+ COMMENT ON COLUMN purse_deposits.purse_pub
+ IS '';
+ COMMENT ON COLUMN purse_deposits.purse_expiration
+ IS '';
+ COMMENT ON COLUMN purse_deposits.coin_pub
+ IS '';
+ COMMENT ON COLUMN purse_deposits.amount_with_fee_val
+ IS '';
+ COMMENT ON COLUMN purse_deposits.coin_sig
+ IS '';
--
- CREATE TABLE IF NOT EXISTS wads
- (wad_serial_id BIGSERIAL UNIQUE
+ CREATE TABLE IF NOT EXISTS wads_out
+ (wad_out_serial_id BIGSERIAL UNIQUE
,wad_id BYTEA PRIMARY KEY CHECK (LENGTH(wad_id)=24)
- ,exchange_url TEXT NOT NULL
+ ,target_exchange_url TEXT NOT NULL
,amount_val INT8 NOT NULL
,amount_frac INT4 NOT NULL
,execution_time INT8 NOT NULL
,UNIQUE (exchange_url, execution_time)
);
+ COMMENT ON TABLE wads_out
+ IS '';
+ COMMENT ON COLUMN wads_out.wad_id
+ IS '';
+ COMMENT ON COLUMN wads_out.target_exchange_url
+ IS '';
+ COMMENT ON COLUMN wads_out.amount_val
+ IS '';
+ COMMENT ON COLUMN wads_out.execution_time
+ IS '';
+ --
+ CREATE TABLE IF NOT EXISTS wad_out_entries
+ (wad_out_entry_serial_id BIGSERIAL UNIQUE
+ ,wad_out_serial_id INT8 REFERENCES wads_out (wad_out_serial_id) ON DELETE CASCADE
+ ,reserve_pub BYTEA NOT NULL CHECK(LENGTH(reserve_pub)=32)
+ ,purse_pub BYTEA PRIMARY KEY CHECK(LENGTH(purse_pub)=32)
+ ,h_contract BYTEA NOT NULL CHECK(LENGTH(h_contract)=64)
+ ,purse_expiration INT8 NOT NULL
+ ,merge_timestamp INT8 NOT NULL
+ ,amount_with_fee_val INT8 NOT NULL
+ ,amount_with_fee_frac INT4 NOT NULL
+ ,wad_fee_val INT8 NOT NULL
+ ,wad_fee_frac INT4 NOT NULL
+ ,deposit_fees_val INT8 NOT NULL
+ ,deposit_fees_frac INT4 NOT NULL
+ ,reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64))
+ ,purse_sig BYTEA NOT NULL CHECK (LENGTH(purse_sig)=64))
+ );
+ COMMENT ON TABLE wad_out_entries
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.wad_out_serial_id
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.reserve_pub
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.purse_pub
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.h_contract
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.purse_expiration
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.merge_timestamp
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.amount_with_fee_val
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.wad_fee_val
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.deposit_fees_val
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.reserve_sig
+ IS '';
+ COMMENT ON COLUMN wad_out_entries.purse_sig
+ IS '';
+ --
+ CREATE TABLE IF NOT EXISTS wads_in
+ (wad_in_serial_id BIGSERIAL UNIQUE
+ ,wad_id BYTEA PRIMARY KEY CHECK (LENGTH(wad_id)=24)
+ ,origin_exchange_url TEXT NOT NULL
+ ,amount_val INT8 NOT NULL
+ ,amount_frac INT4 NOT NULL
+ ,arrival_time INT8 NOT NULL
+ ,UNIQUE (wad_id, origin_exchange_url)
+ );
+ COMMENT ON TABLE wads_in_entries
+ IS '';
+ COMMENT ON COLUMN wads_in.wad_id
+ IS '';
+ COMMENT ON COLUMN wads_in.origin_exchange_url
+ IS '';
+ COMMENT ON COLUMN wads_in.amount_val
+ IS '';
+ COMMENT ON COLUMN wads_in.arrival_time
+ IS '';
--
- CREATE TABLE IF NOT EXISTS wad_entries
- (wad_entry_serial_id BIGSERIAL UNIQUE
- ,wad_serial_id INT8 REFERENCES wads (wad_serial_id) ON DELETE CASCADE
+ CREATE TABLE IF NOT EXISTS wad_in_entries
+ (wad_in_entry_serial_id BIGSERIAL UNIQUE
+ ,wad_in_serial_id INT8 REFERENCES wads_in (wad_serial_id) ON DELETE CASCADE
,reserve_pub BYTEA NOT NULL CHECK(LENGTH(reserve_pub)=32)
,purse_pub BYTEA PRIMARY KEY CHECK(LENGTH(purse_pub)=32)
,h_contract BYTEA NOT NULL CHECK(LENGTH(h_contract)=64)
@@ -755,7 +895,38 @@ database.)
,reserve_sig BYTEA NOT NULL CHECK (LENGTH(reserve_sig)=64))
,purse_sig BYTEA NOT NULL CHECK (LENGTH(purse_sig)=64))
);
- -- FIXME: need more tables for exchange RECEIVING a wad!
+ COMMENT ON TABLE wad_in_entries
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.wad_in_serial_id
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.reserve_pub
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.purse_pub
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.h_contract
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.purse_expiration
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.merge_timestamp
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.amount_with_fee_val
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.wad_fee_val
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.deposit_fees_val
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.reserve_sig
+ IS '';
+ COMMENT ON COLUMN wad_in_entries.purse_sig
+ IS '';
+ CREATE INDEX IF NOT EXISTS wad_in_entries_wad_in_serial
+ ON wad_in_entries (wad_in_serial_id);
+ CREATE INDEX IF NOT EXISTS wad_in_entries_reserve_pub
+ ON wad_in_entries (reserve_pub);
+ COMMENT ON INDEX wad_in_entries_wad_in_serial
+ IS '';
+ COMMENT ON INDEX wad_in_entries_reserve_pub
+ IS '';
-- Complete transaction
COMMIT;