summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2023-04-09 18:33:11 +0200
committerChristian Grothoff <christian@grothoff.org>2023-04-09 18:33:11 +0200
commitba420a8d2588e56e61832b11496a8a51f08099a8 (patch)
treec9585c826ca785d58b667891ab28b6996c4a9be6
parent80c8a960dba8d1d28954768031396723ca4d1f04 (diff)
downloaddocs-ba420a8d2588e56e61832b11496a8a51f08099a8.tar.gz
docs-ba420a8d2588e56e61832b11496a8a51f08099a8.tar.bz2
docs-ba420a8d2588e56e61832b11496a8a51f08099a8.zip
work invoicing for DD37
-rw-r--r--Makefile4
-rw-r--r--design-documents/037-wallet-transactions-lifecycle.rst30
-rw-r--r--transaction-common-states.dot10
-rw-r--r--transaction-pull-credit-states.dot65
-rw-r--r--transaction-withdrawal-states.dot4
5 files changed, 100 insertions, 13 deletions
diff --git a/Makefile b/Makefile
index af89ca39..a214435c 100644
--- a/Makefile
+++ b/Makefile
@@ -71,6 +71,8 @@ transaction-push-debit-states.png: transaction-push-debit-states.dot
dot -Tpng transaction-push-debit-states.dot > transaction-push-debit-states.png
transaction-push-credit-states.png: transaction-push-credit-states.dot
dot -Tpng transaction-push-credit-states.dot > transaction-push-credit-states.png
+transaction-pull-credit-states.png: transaction-pull-credit-states.dot
+ dot -Tpng transaction-pull-credit-states.dot > transaction-pull-credit-states.png
coin.png: coin.dot
dot -Tpng coin.dot > coin.png
deposit.png: deposit.dot
@@ -78,7 +80,7 @@ deposit.png: deposit.dot
reserve.png: reserve.dot
dot -Tpng reserve.dot > reserve.png
-diagrams: arch-api.png coin.png deposit.png reserve.png transaction-common-states.png transaction-withdrawal-states.png transaction-payment-states.png transaction-refund-states.png transaction-refresh-states.png transaction-tip-states.png transaction-deposit-states.png transaction-push-debit-states.png transaction-push-credit-states.png
+diagrams: arch-api.png coin.png deposit.png reserve.png transaction-common-states.png transaction-withdrawal-states.png transaction-payment-states.png transaction-refund-states.png transaction-refresh-states.png transaction-tip-states.png transaction-deposit-states.png transaction-push-debit-states.png transaction-push-credit-states.png transaction-pull-credit-states.png
# The html-linked builder does not support caching, so we
diff --git a/design-documents/037-wallet-transactions-lifecycle.rst b/design-documents/037-wallet-transactions-lifecycle.rst
index 58fd2c14..2e4f0858 100644
--- a/design-documents/037-wallet-transactions-lifecycle.rst
+++ b/design-documents/037-wallet-transactions-lifecycle.rst
@@ -109,6 +109,11 @@ actively abort the transaction (e.g. to avoid losing money) and puts it in an
``failed`` state. May result in an ultimate loss of funds (beyond fees) to the
user and thus requires additional consent.
+``[action:cancel]``: Like an ``abort``, except that it results in the deletion
+of the transaction state as there is nothing useful to be kept around. Should
+be used instead of ``delete`` if there was no transaction history state yet
+that could be deleted.
+
``[action:delete]``: Deleting a transaction completely deletes the transaction
from the database. Depending on the type of transaction, some of the other
data *resulting* from the transaction might still survive deletion. For
@@ -121,8 +126,9 @@ state. May result in an ultimate loss of funds (beyond fees) to the user and
thus requires additional consent.
-Whether aborting, deleting or suspending are possible depends on the
-transaction type, and usually only one of the three choices should be offered.
+Whether aborting, cancelling, deleting or suspending are possible depends on
+the transaction type, and usually only one of the four choices should be
+offered.
.. image:: ../transaction-common-states.png
@@ -172,7 +178,7 @@ Transaction Type: Withdrawal
* ``[processed-success] => pending(bank-confirming)``
* ``[processed-error] => deleted``: We show a transient warning.
- * ``[action:abort] => aborting(bank-to-wallet)``
+ * ``[action:cancel] => aborting(bank-to-wallet)``
* ``pending(bank-confirming)``
@@ -190,7 +196,7 @@ Transaction Type: Withdrawal
* ``[bank-poll-success] => pending(exchange-wait-reserve)``
* ``[bank-poll-denied] => deleted``: We show a transient message that the operation was denied in the bank.
* ``[exchange-poll-success] => pending(withdrawing-coins)``
- * ``[action:abort] => aborting(wallet-to-bank)``
+ * ``[action:cancel] => aborting(wallet-to-bank)``
* ``aborting(wallet-to-bank)``
@@ -952,10 +958,8 @@ TODO: Also specify variant where account reserve needs to be created / funded fi
* ``pending(purse-create)``
* ``[process-success] => pending(qr-ready)``: The wallet has created the purse.
- * ``[process-failure] => aborted``: The purse creation failed.
- * ``[action:delete] => deleted``: The user aborted the operation.
- FIXME(CG): May want to go into ``aborting(delete-purse)`` instead to make
- sure the purse is not left behind.
+ * ``[process-failure] => deleted``: The purse creation failed. We only show a transient error.
+ * ``[action:cancel] => deleted``: The user aborted the operation.
* ``pending(qr-ready)``
@@ -998,6 +1002,13 @@ TODO: Also specify variant where account reserve needs to be created / funded fi
* ``[processed-aml] => pending(aml)``
* ``[action:suspend] => suspended(withdraw)``
+* ``suspended(withdraw)``
+
+ The user suspended a withdraw operation.
+
+ * ``[action:resume] => pending(withdraw)``
+ * ``[action:force-delete] => deleted``
+
* ``pending(kyc)``
The user must supply KYC information before withdrawing can continue.
@@ -1041,6 +1052,9 @@ TODO: Also specify variant where account reserve needs to be created / funded fi
* ``deleted``
+.. image:: ../transaction-pull-credit-states.png
+ :width: 800
+
Transaction Type: Peer Pull Debit
---------------------------------
diff --git a/transaction-common-states.dot b/transaction-common-states.dot
index 3cbee213..170ace7a 100644
--- a/transaction-common-states.dot
+++ b/transaction-common-states.dot
@@ -7,6 +7,7 @@ digraph G {
aborting[label="aborting"];
failed[label="failed", shape="box"];
suspended[label="suspended", shape="box"];
+ deleted[label="deleted", shape="box"];
subgraph {
rank = same; pending;suspended;
@@ -19,10 +20,15 @@ digraph G {
initial->pending;
pending->suspended [color="blue",label="suspend"];
suspended->pending [color="blue",label="resume"];
+ suspended->deleted [color="blue",label="force-delete"];
pending->done [color="green",label="success"];
- pending->failed [color="red",label="error"];
+ pending->failed [color="red",label="failure"];
pending->aborting [color="blue",label="abort"];
pending->aborted [color="blue",label="abort"];
+ pending->deleted [color="blue",label="cancel"];
aborting->aborted [color="green",label="success"];
- aborting->failed [color="red",label="error"];
+ aborting->failed [color="red",label="failure"];
+ failed->deleted [color="blue",label="delete"];
+ aborted->deleted [color="blue",label="delete"];
+ done->deleted [color="blue",label="delete"];
}
diff --git a/transaction-pull-credit-states.dot b/transaction-pull-credit-states.dot
new file mode 100644
index 00000000..82d02abd
--- /dev/null
+++ b/transaction-pull-credit-states.dot
@@ -0,0 +1,65 @@
+digraph G {
+
+ initial[label="", shape="circle"];
+ pending_create[label="pending(purse-create)"];
+ pending_qr[label="pending(qr-ready)", shape="box"];
+ aborting_delete[label="aborting(delete-purse)"];
+ pending_withdraw[label="pending(withdraw)"];
+ suspended_withdraw[label="suspended(withdraw)", shape="box"];
+ pending_kyc[label="pending(kyc)"];
+ suspended_kyc[label="suspended(kyc)", shape="box"];
+ pending_aml[label="pending(aml)"];
+ suspended_aml[label="suspended(aml)", shape="box"];
+
+ aborted[label="aborted", shape="box"];
+ failed[label="failed", shape="box"];
+ done[label="done", shape="box"];
+ deleted[label="deleted", shape="box"];
+
+// subgraph {
+// rank = same; pending_withdraw; failed;
+// }
+
+ initial->pending_create [color="blue", label="form data"];
+
+ pending_create->pending_qr;
+ pending_create->deleted [color="red", label="failure"];
+ pending_create->deleted [color="blue", label="cancel"];
+
+ pending_qr->aborted [label="timeout"];
+ pending_qr->aborting_delete [color="blue", label="abort"];
+ pending_qr->pending_withdraw;
+ pending_qr->aborting_delete [color="red", label="poll-failure"];
+
+ aborting_delete->pending_withdraw [color="red", label="failure:already-merged"];
+ aborting_delete->aborted;
+ aborting_delete->aborted [color="red", label="failure:other"];
+ aborting_delete->aborted [color="blue", label="force-abort"];
+
+ aborted->deleted [color="blue", label="delete"];
+
+ pending_withdraw->done;
+ pending_withdraw->failed [color="red", label="failure"];
+ pending_withdraw->pending_kyc [label="kyc-required"];
+ pending_withdraw->pending_aml [label="aml-required"];
+ pending_withdraw->suspended_withdraw [color="blue", label="suspend"];
+
+ suspended_withdraw->pending_withdraw [color="blue", label="resume"];
+ suspended_withdraw->deleted [color="blue", label="force-delete"];
+
+ pending_kyc->suspended_kyc [color="blue", label="suspend"];
+ pending_kyc->pending_withdraw [color="purple", label="poll-success"];
+
+ suspended_kyc->pending_kyc [color="blue", label="resume"];
+ suspended_kyc->deleted [color="blue", label="force-delete"];
+
+ pending_aml->suspended_aml [color="blue", label="suspend"];
+ pending_aml->pending_withdraw [color="purple", label="poll-success"];
+
+ suspended_aml->pending_aml [color="blue", label="resume"];
+ suspended_aml->deleted [color="blue", label="force-delete"];
+
+ failed->deleted [color="blue", label="delete"];
+ done->deleted [color="blue", label="delete"];
+
+}
diff --git a/transaction-withdrawal-states.dot b/transaction-withdrawal-states.dot
index 95c8fda8..7b59be71 100644
--- a/transaction-withdrawal-states.dot
+++ b/transaction-withdrawal-states.dot
@@ -30,12 +30,12 @@ digraph G {
initial->pending_brr [color="blue", label="bank integrated withdraw"];
initial->pending_ewr [color="blue", xlabel="manual withdraw"];
pending_brr->pending_bc;
- pending_brr->aborting_w2b [color="blue", label="abort"];
+ pending_brr->aborting_w2b [color="blue", label="cancel"];
pending_brr->deleted [color="red", label="error"];
pending_bc->pending_ewr [label="bank-poll:\napproved"];
pending_bc->pending_wc [xlabel="exchange-poll:\nreserve ready",style="dotted"];
- pending_bc->aborting_w2b [color="blue", label="abort"];
+ pending_bc->aborting_w2b [color="blue", label="cancel"];
pending_bc->deleted [label="bank-poll:\ndenied"];
pending_ewr->pending_wc [label="exchange-poll:\nreserve ready"];