gnunet-svn
[Top][All Lists]
Advanced

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

[taler-docs] 01/02: better description of fees


From: gnunet
Subject: [taler-docs] 01/02: better description of fees
Date: Tue, 13 Jun 2023 18:24:32 +0200

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

sebasjm pushed a commit to branch master
in repository docs.

commit d50b749673f5e60e8373f8ee1aae1d086be59817
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Mon Jun 12 22:50:27 2023 -0300

    better description of fees
---
 .../041-wallet-balance-amount-definitions.rst      | 80 ++++++++++++++++------
 1 file changed, 59 insertions(+), 21 deletions(-)

diff --git a/design-documents/041-wallet-balance-amount-definitions.rst 
b/design-documents/041-wallet-balance-amount-definitions.rst
index 56aaf401..e2da9865 100644
--- a/design-documents/041-wallet-balance-amount-definitions.rst
+++ b/design-documents/041-wallet-balance-amount-definitions.rst
@@ -41,11 +41,13 @@ Amounts
   *after* fees.
 
 
-Transaction types
------------------
+Transaction types initialized by the wallet
+-------------------------------------------
 
-WITHDRAW
-  raw amount is the total to be wired in exchange bank account
+MANUAL_WITHDRAW
+  raw amount is the amount that need to be added into the exchange account,
+  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)
   
@@ -60,7 +62,9 @@ WITHDRAW
     ``effective_amount`` = instructed_amount
 
 DEPOSIT
-  raw amount is the total wire transfer in the bank account
+  raw amount is the amount leaving the exchange account without the wire fee,
+  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)
 
@@ -74,8 +78,11 @@ DEPOSIT
 
     ``effective_amount`` = instructed_amount
 
-PULL CREDIT
-  raw amount is the purse_value in the exchange that counter-party need will 
pay
+PULL CREDIT (creating an invoice)
+  raw amount is the amount in the exchange that counter-party need will pay 
(purse_value),
+  this is exactly the same raw amount of the PULL DEBIT operation (paying the 
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)
 
@@ -110,8 +117,11 @@ PULL CREDIT
     selection.
 
 
-PUSH DEBIT
-  raw amount is the purse_value in the exchange to be withdrawn that 
counter-party will withdraw
+PUSH DEBIT (creating a transfer)
+  raw amount is the amount in the exchange that counter-party need be able to 
withdraw (purse_value),
+  this is exactly the same raw amount of the PUSH CREDIT operation (getting 
the 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)
 
@@ -139,32 +149,60 @@ PUSH DEBIT
     given exchange. Counter-party may pay more if it have different 
preferences doing the coin 
     selection.
 
-.. note::
-  Next transaction types are not initiated in the wallet so instructed amount 
is not defined by the wallet user.
 
-  It may be helpful to calculate effective_amount to check if the wallet is 
able to perform the operation 
+Transaction types completed by the wallet
+-------------------------------------------
+
+Next transaction types are not initiated in the wallet so instructed amount is 
not defined by the wallet user.
 
-``contract_wire_fee`` = min(wire.transfer_fee / 
contractTerms.amortization_factor, contractTerms.max_wire_fee)
+We need to calculate effective_amount to check if the wallet is able to 
perform the operation or the user accept 
+the fees.
+
+BANK_WITHDRAW
+  raw amount is that reached the bank account of the exchange,
+  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)
+  
+  if instructed_amount mode = raw
+    ``raw_amount`` = instructed_amount
+    
+    ``effective_amount`` = instructed_amount - coins.withdrawal_fee
+
+  if instructed_amount mode = effective
+    ``raw_amount`` = instructed_amount + coins.withdrawal_fee
+    
+    ``effective_amount`` = instructed_amount
+
+
+.. note ::
+  how much wire_fee the merchant is willing to pay
+
+  ``merchant_wire_fee`` = min(wire.transfer_fee / 
contractTerms.amortization_factor, contractTerms.max_wire_fee)
+  
+  ``merchant_deposit_fee`` = min(contractTerms.max_fee, contract_wire_fee)
 
-``max_merchant_fee`` = min(contractTerms.max_fee, contract_wire_fee)
 
 PAYMENT
-  raw amount is the net value of the order without fees 
+  raw amount is the amount the merchant should get if is not doing aggregated 
transaction.
+
 
   ``instructed_amount`` = contractTerms.amount
 
   ``coins`` = select-coin(deposit, mode, raw_amount)
 
-  ``raw_amount`` = instructed_amount - max_merchant_fee
+  ``raw_amount`` = instructed_amount - merchant_deposit_fee
 
-  ``effective_amount`` = instructed_amount + coins.deposit_fee + 
coins.refresh_fee + wire.transfer_fee - max_merchant_fee
+  ``effective_amount`` = instructed_amount + coins.deposit_fee + 
coins.refresh_fee + (wire.transfer_fee - merchant_wire_fee)
 
   .. note::
     The current coin-selection algorithm the order_price is neither raw_amount 
nor effective_amount.
     We can calculate the raw_amount of the payment as (contractTerms.amount - 
max_merchant_fee) and then this
     operation becomes equivalent than a deposit (in terms of fee calculation).
 
-PUSH CREDIT
+
+PUSH CREDIT (getting the transfer)
   raw amount is the purse_value in the exchange to be withdrawn
 
   ``instructed_amount`` = p2pContract.amount
@@ -180,7 +218,7 @@ PUSH CREDIT
     is higher than the wire_fee of the exchange, can the wallet ask the 
exchange to make
     a wire transfer of the purse instead of proceeding? 
 
-PULL DEBIT
+PULL DEBIT (paying an invoice)
   raw amount is the net value of the invoice without fees 
 
   ``instructed_amount`` = p2pContract.amount
@@ -228,8 +266,8 @@ Is an optimization algorithm that will choose coins given a 
denomination list un
 and the coins selected minimize the fee spent.
 
 ``select-coin`` will receive 3 parameters:
-  * operation type: tell for which fee is doing the optimization (can be 
withdraw, deposit, push, pull)
-  * amount: how much value value the coins need to sum up
+  * fee set: tell for which fee is doing the optimization (can be withdraw, 
deposit, push, pull)
+  * amount: how much value the coins need to sum up
   * mode: the interpretation of the amount parameter and affect the denom 
selection
 
     - effective: the amount is the expected balance change

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