gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-docs] branch master updated: DD37, first part


From: gnunet
Subject: [taler-docs] branch master updated: DD37, first part
Date: Mon, 13 Feb 2023 19:33:54 +0100

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository docs.

The following commit(s) were added to refs/heads/master by this push:
     new 8788ed0  DD37, first part
8788ed0 is described below

commit 8788ed0dcaa8c3459ba22ff7351254a1c830739e
Author: Florian Dold <florian@dold.me>
AuthorDate: Mon Feb 13 19:32:55 2023 +0100

    DD37, first part
---
 .../037-wallet-transactions-lifecycle.rst          | 146 +++++++++++++++++++++
 design-documents/index.rst                         |   1 +
 2 files changed, 147 insertions(+)

diff --git a/design-documents/037-wallet-transactions-lifecycle.rst 
b/design-documents/037-wallet-transactions-lifecycle.rst
new file mode 100644
index 0000000..f4e19c6
--- /dev/null
+++ b/design-documents/037-wallet-transactions-lifecycle.rst
@@ -0,0 +1,146 @@
+DD 37: Wallet Transaction Lifecycle
+###################################
+
+Summary
+=======
+
+This design doc discusses the lifecycle of transactions in wallet-core.
+
+Motivation
+==========
+
+The transactions in wallet-core all should have an associated state machine.  
All transactions
+should have some common actions that work uniformly across all transactions.
+
+Proposed Solution
+=================
+
+Common States
+-------------
+
+**pending**: A pending transaction waits for some external event/service.
+The transaction stays pending until its change on the wallet's material 
balance is finished.
+If the transaction has affected the wallet's balance but is still waiting for 
some external
+money transfer that the wallet does not directly affect, the state will 
instead be ``monitoring``. 
+
+There are some other distinctions for pending transactions:
+
+* long-polling vs exponential backoff: A pending transaction is either waiting
+  on an external service by making a long-polling request or by repeating 
requests
+  with exponential back-off.
+* ``lastError``: A pending transaction is either clean (i.e. the external 
service successfully
+  communicated that it is not ready yet) or has a ``lastError``, which is a 
``TalerErrorDetails``
+  object with details about what happened during the last attempt to proceed
+  with the transaction.
+
+**done**: A transaction that is done does not require any more processing.  It 
also
+never has a ``lastError`` but is considered successful.
+
+**aborting**: Similar to a pending transaction, but instead of taking active 
steps to
+complete the transaction, the wallet is taking active steps to abort it. The 
``lastError``
+indicates errors the wallet experienced while taking active steps to abort the 
transaction.
+
+.. warning::
+  Consensus required: Should there be an abortReason for aborted transactions?
+
+**aborted**: Similar to a ``done`` transaction, but the transaction was 
successfully aborted
+instead of successfully finished.
+
+**failed**: Similar to ``done``, but the transaction could not even be aborted 
successfully.
+
+**kyc-required**: The transaction can't proceed because the user needs to 
actively
+finish a KYC process.
+
+**monitoring**: A transaction is in principle finished (has affected the 
wallet balance), but still waiting for some external
+event to occur to be fully finished.  For example, the money transfer by the 
exchange to a bank account after a deposit,
+or another wallet claiming a p2p push payment that our wallet initiated.  Some 
transactions (e.g. p2p push payments)
+can still be aborted in the ``monitoring`` state, and as a result the 
transaction is basically reverted.
+
+
+Common Actions
+--------------
+
+**Delete**: Deleting a transaction (also called "forgetting" in the UI)
+completely deletes the transaction in the database.  Depending on the type of
+transaction, some of the other data *resulting* from the transaction might
+still survive deletion. For example, deleting a withdrawal transaction does not
+delete withdrawn coins.
+
+**Retry**: Retrying a transaction *(1.)* stops ongoing longpolling requests for
+the transaction *(2.)* resets the retry timeout *(3.)* re-runs the handler to
+process the transaction.
+
+.. attention::
+
+   Should we show the retry timeout in the UI somewhere?  Should we show it in 
dev mode?
+
+**Abort**: Aborting a transaction either directly stops processing for the 
transaction and puts it in an ``aborted`` state
+or starts the necessary steps to actively abort the transaction (e.g. to avoid 
losing money) and puts it in an ``aborting`` state.
+
+**Resume**: Some aborted transactions may be resumed.  Whether resuming is 
possible depends on the transaction type.
+
+**Give up**: Giving up puts an ``aborting`` transaction into the ``failed`` 
state.
+
+Transaction Type: Withdrawal
+----------------------------
+
+TBD.
+
+Transaction Type: Payment to Merchant
+-------------------------------------
+
+TBD.
+
+Transaction Type: Refund
+------------------------
+
+TBD.
+
+Transaction Type: Refresh
+-------------------------
+
+TBD.
+
+Transaction Type: Tip
+---------------------
+
+TBD.
+
+Transaction Type: Deposit
+-------------------------
+
+TBD.
+
+Transaction Type: Peer Push Debit
+---------------------------------
+
+TBD.
+
+
+Transaction Type: Peer Push Credit
+----------------------------------
+
+TBD.
+
+Transaction Type: Peer Pull Credit
+----------------------------------
+
+TBD.
+
+Transaction Type: Peer Pull Debit
+---------------------------------
+
+TBD.
+
+Alternatives
+============
+
+* each transaction could be treated completely separately
+
+Drawbacks
+=========
+
+Discussion / Q&A
+================
+
+(This should be filled in with results from discussions on mailing lists / 
personal communication.)
diff --git a/design-documents/index.rst b/design-documents/index.rst
index 4d17360..34da2f4 100644
--- a/design-documents/index.rst
+++ b/design-documents/index.rst
@@ -45,4 +45,5 @@ and protocol.
   034-wallet-db-migration
   035-regional-currencies
   036-currency-conversion-service
+  037-wallet-transactions-lifecycle.rst
   999-template

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]