gnunet-svn
[Top][All Lists]
Advanced

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

[taler-docs] 02/02: more info


From: gnunet
Subject: [taler-docs] 02/02: more info
Date: Tue, 13 Jun 2023 18:24:33 +0200

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

sebasjm pushed a commit to branch master
in repository docs.

commit 0ea38708ceb2e257cdcd6d0e07dedc4e4c8b0ab7
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Tue Jun 13 13:24:25 2023 -0300

    more info
---
 .../041-wallet-balance-amount-definitions.rst      | 64 ++++++++--------------
 1 file changed, 24 insertions(+), 40 deletions(-)

diff --git a/design-documents/041-wallet-balance-amount-definitions.rst 
b/design-documents/041-wallet-balance-amount-definitions.rst
index e2da9865..eb6c3d90 100644
--- a/design-documents/041-wallet-balance-amount-definitions.rst
+++ b/design-documents/041-wallet-balance-amount-definitions.rst
@@ -49,7 +49,7 @@ MANUAL_WITHDRAW
   this is not the same as the amount leaving the user account since their own
   account may charge some fee that can be taken into account
 
-  ``coins`` = select-coin(withdraw, mode, instructed_amount)
+  ``coins`` = select-coin-for-operation(credit, mode, instructed_amount)
   
   if instructed_amount mode = raw
     ``raw_amount`` = instructed_amount
@@ -66,7 +66,7 @@ DEPOSIT
   this should be what the user see as an increase in the user bank account 
unless
   there are some extra fee not seen from the exchange
 
-  ``coins`` = select-coin(deposit, mode, instructed_amount)
+  ``coins`` = select-coin-for-operation(debit, mode, instructed_amount)
 
   if instructed_amount mode = raw
     ``raw_amount`` = instructed_amount
@@ -84,7 +84,7 @@ PULL CREDIT (creating an invoice)
   counter-party amount is an aprox amount of the other wallet assuming the 
same coin selection
   algorithm
 
-  ``coins`` = select-coin(pull, mode, instructed_amount)
+  ``coins`` = select-coin-for-operation(credit, mode, instructed_amount)
 
   if instructed_amount mode = raw
     ``raw_amount`` = instructed_amount
@@ -123,7 +123,7 @@ PUSH DEBIT (creating a transfer)
   counter-party amount is an aprox amount of the other wallet assuming the 
same coin selection
   algorithm
 
-  ``coins`` = select-coin(push, mode, instructed_amount)
+  ``coins`` = select-coin-for-operation(debit, mode, instructed_amount)
 
   if instructed_amount mode = raw
     ``raw_amount`` = instructed_amount
@@ -163,7 +163,7 @@ BANK_WITHDRAW
   this is not the same as the amount leaving the user account since their own
   account may charge some fee that can be taken into account
 
-  ``coins`` = select-coin(withdraw, mode, instructed_amount)
+  ``coins`` = select-coin-for-operation(credit, mode, instructed_amount)
   
   if instructed_amount mode = raw
     ``raw_amount`` = instructed_amount
@@ -190,7 +190,7 @@ PAYMENT
 
   ``instructed_amount`` = contractTerms.amount
 
-  ``coins`` = select-coin(deposit, mode, raw_amount)
+  ``coins`` = select-coin-for-operation(debit, mode, raw_amount)
 
   ``raw_amount`` = instructed_amount - merchant_deposit_fee
 
@@ -207,7 +207,7 @@ PUSH CREDIT (getting the transfer)
 
   ``instructed_amount`` = p2pContract.amount
 
-  ``coins`` = select-coin(withdraw, mode, raw_amount)
+  ``coins`` = select-coin-for-operation(credit, mode, raw_amount)
 
   ``raw_amount`` = instructed_amount
 
@@ -223,7 +223,7 @@ PULL DEBIT (paying an invoice)
 
   ``instructed_amount`` = p2pContract.amount
 
-  ``coins`` = select-coin(deposit, mode, raw_amount)
+  ``coins`` = select-coin-for-operation(debit, mode, raw_amount)
 
   ``raw_amount`` = instructed_amount
 
@@ -262,45 +262,28 @@ TIP
 Coin selection algorithm
 ------------------------
 
-Is an optimization algorithm that will choose coins given a denomination list 
until amount is reached
-and the coins selected minimize the fee spent.
+Is an internal optimization algorithm that will choose coins given a 
denomination list or current coin list
+until amount is reached. The coins selected to minimize the fee spent.
 
-``select-coin`` will receive 3 parameters:
-  * fee set: tell for which fee is doing the optimization (can be withdraw, 
deposit, push, pull)
+``select-coin-for-operation`` will receive 3 parameters:
+  * operation: define if the coins are selected from wallet database or from 
denomination list. Possible values are:
+   - credit: reduce withdrawal fee, use exchange denomination list
+   - debit: reduce deposit fee, use database denomination and current coin 
count
   * amount: how much value the coins need to sum up
-  * mode: the interpretation of the amount parameter and affect the denom 
selection
+  * mode: the interpretation of the amount parameter
+    - net: the amount does not include the operation fee
+    - gross: the amount include the operation fee
 
-    - effective: the amount is the expected balance change
-    - raw: the amount include fee of the operation paid by this wallet
-    - counter-party: only valid for push and pull, the amount include fee of 
the operation and fee of the counter-party operation
-
-Given the operation type, the fees taking into account when doing the 
calculation
-
-  withdraw: 
-    - withdrawal_fee of denominations until amount
-
-  deposit: 
-    - deposit_fee for every coin until total
-    - refresh_fee of (total-amount)
-    - wire_transfer for every exchange
-
-  pull:
-    - withdraw_fee of the amount
-    - purse_fee of the exchange
-    - if the mode is counter-party it should also take into account the 
deposit_fee of selected exchange 
-
-  push:
-    - deposit_fee for every coin until total
-    - refresh_fee of (total - amount)
-    - purse_fee of the exchange
-    - if the mode is counter-party it should also take into account the 
withdrawal_fee of selected exchange 
+If the operation is debit and with the current coins there is no way to reach 
the amount then
+ 1. an optimized withdrawal operation can be suggested (list of denominations)
+ 2. an optimized refresh operation can be suggested (amount gap, coin to be 
refreshed and list of denominations to withdraw)
 
 .. note::
 
-  select-coin must be predictable (select the same coins for the same 
parameters) and if
+  ``select-coin-for-operation`` must be predictable (select the same coins for 
the same parameters) and if
   the difference between two amounts are the fee for a given operation:
 
-    operation: withdrawal
+    operation: credit
 
     withdrawal_fee = amount1 - amount2
 
@@ -320,7 +303,8 @@ For withdrawal:
 * ``raw-mode`` (default): instructed amount is what is subtracted from the 
reserve balance (i.e. it's the raw amount)
 * ``effective-mode``: instructed amount is what the user wants to have as 
material balance in the wallet
 
-FIXME(dold): However, that does not really cover the user case where the 
merchant charges fees and the user has to pay for that. So in theory we could 
have a mode that withdraws enough to pay for some particular claimed order, but 
IMHO that's overkill.
+FIXME(dold): However, that does not really cover the user case where the 
merchant charges fees and the user has to pay for that.
+So in theory we could have a mode that withdraws enough to pay for some 
particular claimed order, but IMHO that's overkill.
 
 For deposits (where there is no contract that already specifies an amount):
 

-- 
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]