summaryrefslogtreecommitdiff
path: root/design-documents
diff options
context:
space:
mode:
authorÖzgür Kesim <oec-taler@kesim.org>2023-10-12 13:22:37 +0200
committerÖzgür Kesim <oec-taler@kesim.org>2023-10-12 13:22:37 +0200
commit8e0f35b2bf697ce9388fd37fe14429bc6c0cc204 (patch)
tree4ddb5ee3225de5bfa0ce6e570643da53efdb6028 /design-documents
parent73c10807b6c64cfc9cefa7d1cd44374e6ee148cc (diff)
downloaddocs-8e0f35b2bf697ce9388fd37fe14429bc6c0cc204.tar.gz
docs-8e0f35b2bf697ce9388fd37fe14429bc6c0cc204.tar.bz2
docs-8e0f35b2bf697ce9388fd37fe14429bc6c0cc204.zip
[DD 037] revert addition of age-withdraw from state-diagram (internal, hidden from UI)
Diffstat (limited to 'design-documents')
-rw-r--r--design-documents/037-wallet-transactions-lifecycle.rst52
1 files changed, 17 insertions, 35 deletions
diff --git a/design-documents/037-wallet-transactions-lifecycle.rst b/design-documents/037-wallet-transactions-lifecycle.rst
index b10d74ab..9d749595 100644
--- a/design-documents/037-wallet-transactions-lifecycle.rst
+++ b/design-documents/037-wallet-transactions-lifecycle.rst
@@ -194,14 +194,12 @@ Transaction Type: Withdrawal
The wallet **may** occasionally (after some initial delay, especially on
failures from the bank-poll to return any result) long-poll for the reserve
status and, if successful, may then directly jump to
- ``pending(withdraw-coins:*)`` if the reserve is filled even if the poll at
- the bank did not return success or failure (there are two variants of
- withdraw, see below).
-
+ ``pending(withdraw-coins)`` if the reserve is filled even if the poll at
+ the bank did not return success or failure.
* ``[bank-poll-success] => pending(exchange-wait-reserve)``
* ``[bank-aborted] => aborted``: Bank denied the operation.
- * ``[exchange-poll-success] => pending(withdraw-coins:*)``: Optional
+ * ``[exchange-poll-success] => pending(withdraw-coins)``: Optional
short-cut transition. Exchange was faster than the bank.
* ``[action:abort] => aborting(bank)``
@@ -214,8 +212,8 @@ Transaction Type: Withdrawal
we get an ``unknown transaction`` failure here. It is also theoretically
possible that the user approved the transaction in the bank while
simultaneously aborting in the wallet. In this case, we transition to
- ``suspended(exchange-wait-reserve)`` (treating the ``abort`` action as a
- ``suspend`` action).
+ ``suspended(exchange-wait-reserve)`` (treating the ``abort`` action as a ``suspend``
+ action).
* ``[processed-success] => aborted``
* ``[processed-error(already-confirmed)] => suspended(exchange-wait-reserve)``: We
@@ -242,40 +240,23 @@ Transaction Type: Withdrawal
exchange for the reserve status, waiting for the wire transfer to arrive
at the exchange.
- * ``[exchange-poll-success] => pending(withdraw-coins:*)``
+ * ``[exchange-poll-success] => pending(withdraw-coins)``
* ``[action:suspend] => suspended(exchange-wait-reserve)``
-
-
-* ``pending(withdraw-coins:{batch|age}-withdraw)``
+* ``pending(withdraw-coins)``
- State where we are finally withdrawing the actual coins. The state is in one
- of two variants: ``:batch-withdraw`` or ``:age-withdraw``. The later is
- required when the reserve has a date of birth (resulting a KYC process) that
- is below the threshold of the largest allowed age and the wallet has to proof
- to the exchange that appropriate age-restrictions have been applied to the
- planchets. Note that ``age-withdraw`` is a protocoll consisting of two
- phases: a commitment and a reveal phase.
-
- From state ``exchange-wait-reserve`` the wallet can transition into either
- withdraw-variant. Depending on the AML and KYC thresholds, we may at any
- time transition into a holding pattern on the AML or KYC checks of the
- exchange. However, transitions from ``withdraw-coins:*`` to ``kyc`` and
- ``aml`` can only return to the previous withdraw-variant.
-
- In the state ``:batch-withdraw``, the withdraw can fail because the reserve
- has a date of birth and therefore the wallet is required to execute the
- ``age-withdraw`` protocol.
+ State where we are finally withdrawing the actual coins. Depending on
+ the AML and KYC thresholds, we may at any time transition into a
+ holding pattern on the AML or KYC checks of the exchange.
It is possible that the selected denominations expired.
In that case, the wallet will re-select denominations.
- * ``[age-withdraw-required] => pending(withdraw-coins:age-withdraw)``
* ``[processed-success] => done``
* ``[processed-kyc-required] => pending(kyc)``
* ``[processed-aml-required] => pending(aml)``
* ``[reserve-expired] => expired(reserve)``
- * ``[action:suspend] => suspended(withdraw-coins:*)``
+ * ``[action:suspend] => suspended(withdraw-coins)``
* ``pending(kyc)``
@@ -284,7 +265,7 @@ Transaction Type: Withdrawal
process and long-polls the exchange in anticipation of the user
completing the KYC requirement.
- * ``[poll-success] => pending(withdraw-coins:*)``
+ * ``[poll-success] => pending(withdraw-coins)``
* ``[action:suspend] => suspended(kyc)``
* ``suspended(kyc)``
@@ -309,7 +290,7 @@ Transaction Type: Withdrawal
In any case, the wallet long-polls for the AML decision to be made or change
(possibly at a lower frequeny in case of a freeze).
- * ``[poll-success] => pending(withdraw-coins:*)``
+ * ``[poll-success] => pending(withdraw-coins)``
* ``[action:suspend] => suspended(aml)``
* ``suspended(aml)``
@@ -329,8 +310,8 @@ Transaction Type: Withdrawal
* ``[action:delete] => deleted``
* ``[action:resume] => pending(exchange-wait-reserve)``
-
-* ``withdraw-done``
+
+* ``done``
The withdrawal operation is complete.
@@ -342,7 +323,8 @@ Transaction Type: Withdrawal
So this mostly removes the entry from the visible transaction history.
Only once all coins were spent, the withdraw is fully removed.
-.. graphviz:: ../images/transaction-withdrawal-states.dot
+
+.. image:: ../images/transaction-withdrawal-states.png
Transaction Type: Payment to Merchant