diff options
| author | Christian Grothoff <christian@grothoff.org> | 2022-08-11 23:35:33 +0200 | 
|---|---|---|
| committer | Christian Grothoff <christian@grothoff.org> | 2022-08-11 23:35:33 +0200 | 
| commit | 1009084e94b8e8cf19e3b5568c3cccaba2bd2209 (patch) | |
| tree | a346997dedd05f685ba7addc59e288dfa550ad0e /src/exchangedb/procedures.sql | |
| parent | b061ea85c84facfc78c34edface367c5f040bc9c (diff) | |
major rework of the KYC logic, making it more configurable, not complete, but tests pass again
Diffstat (limited to 'src/exchangedb/procedures.sql')
| -rw-r--r-- | src/exchangedb/procedures.sql | 82 | 
1 files changed, 1 insertions, 81 deletions
diff --git a/src/exchangedb/procedures.sql b/src/exchangedb/procedures.sql index 8366bc81..f05f4d2a 100644 --- a/src/exchangedb/procedures.sql +++ b/src/exchangedb/procedures.sql @@ -37,8 +37,6 @@ CREATE OR REPLACE FUNCTION exchange_do_withdraw(    OUT reserve_found BOOLEAN,    OUT balance_ok BOOLEAN,    OUT nonce_ok BOOLEAN, -  OUT kycok BOOLEAN, -  OUT account_uuid INT8,    OUT ruuid INT8)  LANGUAGE plpgsql  AS $$ @@ -67,8 +65,6 @@ THEN    -- denomination unknown, should be impossible!    reserve_found=FALSE;    balance_ok=FALSE; -  kycok=FALSE; -  account_uuid=0;    ruuid=0;    ASSERT false, 'denomination unknown';    RETURN; @@ -94,8 +90,6 @@ THEN    reserve_found=FALSE;    balance_ok=FALSE;    nonce_ok=TRUE; -  kycok=FALSE; -  account_uuid=0;    ruuid=2;    RETURN;  END IF; @@ -128,8 +122,6 @@ THEN    reserve_found=TRUE;    balance_ok=TRUE;    nonce_ok=TRUE; -  kycok=TRUE; -  account_uuid=0;    RETURN;  END IF; @@ -153,8 +145,6 @@ ELSE      reserve_found=TRUE;      nonce_ok=TRUE; -- we do not really know      balance_ok=FALSE; -    kycok=FALSE; -- we do not really know or care -    account_uuid=0;      RETURN;    END IF;  END IF; @@ -201,8 +191,6 @@ THEN      THEN        reserve_found=FALSE;        balance_ok=FALSE; -      kycok=FALSE; -      account_uuid=0;        nonce_ok=FALSE;        RETURN;      END IF; @@ -211,40 +199,9 @@ ELSE    nonce_ok=TRUE; -- no nonce, hence OK!  END IF; - - --- Obtain KYC status based on the last wire transfer into --- this reserve. FIXME: likely not adequate for reserves that got P2P transfers! --- SELECT ---    kyc_ok ---   ,wire_target_serial_id ---   INTO ---    kycok ---   ,account_uuid ---   FROM exchange.reserves_in ---   JOIN wire_targets ON (wire_source_h_payto = wire_target_h_payto) ---  WHERE reserve_pub=rpub ---  LIMIT 1; -- limit 1 should not be required (without p2p transfers) - -WITH my_reserves_in AS materialized ( -  SELECT wire_source_h_payto -  FROM exchange.reserves_in -  WHERE reserve_pub=rpub -) -SELECT -  kyc_ok -  ,wire_target_serial_id -INTO -  kycok -  ,account_uuid -FROM exchange.wire_targets -  WHERE wire_target_h_payto = ( -    SELECT wire_source_h_payto -      FROM my_reserves_in -  ); -  END $$; +  COMMENT ON FUNCTION exchange_do_withdraw(BYTEA, INT8, INT4, BYTEA, BYTEA, BYTEA, BYTEA, BYTEA, INT8, INT8)    IS 'Checks whether the reserve has sufficient balance for a withdraw operation (or the request is repeated and was previously approved) and if so updates the database with the result'; @@ -259,8 +216,6 @@ CREATE OR REPLACE FUNCTION exchange_do_batch_withdraw(    IN min_reserve_gc INT8,    OUT reserve_found BOOLEAN,    OUT balance_ok BOOLEAN, -  OUT kycok BOOLEAN, -  OUT account_uuid INT8,    OUT ruuid INT8)  LANGUAGE plpgsql  AS $$ @@ -295,8 +250,6 @@ THEN    -- reserve unknown    reserve_found=FALSE;    balance_ok=FALSE; -  kycok=FALSE; -  account_uuid=0;    ruuid=2;    RETURN;  END IF; @@ -320,8 +273,6 @@ ELSE    ELSE      reserve_found=TRUE;      balance_ok=FALSE; -    kycok=FALSE; -- we do not really know or care -    account_uuid=0;      RETURN;    END IF;  END IF; @@ -340,37 +291,6 @@ WHERE  reserve_found=TRUE;  balance_ok=TRUE; - --- Obtain KYC status based on the last wire transfer into --- this reserve. FIXME: likely not adequate for reserves that got P2P transfers! --- SELECT ---    kyc_ok ---   ,wire_target_serial_id ---   INTO ---    kycok ---   ,account_uuid ---   FROM exchange.reserves_in ---   JOIN wire_targets ON (wire_source_h_payto = wire_target_h_payto) ---  WHERE reserve_pub=rpub ---  LIMIT 1; -- limit 1 should not be required (without p2p transfers) - -WITH my_reserves_in AS materialized ( -  SELECT wire_source_h_payto -  FROM exchange.reserves_in -  WHERE reserve_pub=rpub -) -SELECT -  kyc_ok -  ,wire_target_serial_id -INTO -  kycok -  ,account_uuid -FROM exchange.wire_targets -  WHERE wire_target_h_payto = ( -    SELECT wire_source_h_payto -      FROM my_reserves_in -  ); -  END $$;  COMMENT ON FUNCTION exchange_do_batch_withdraw(INT8, INT4, BYTEA, INT8, INT8)  | 
