summaryrefslogtreecommitdiff
path: root/design-documents
diff options
context:
space:
mode:
authorChristian Grothoff <grothoff@gnunet.org>2023-10-12 09:46:13 +0200
committerChristian Grothoff <grothoff@gnunet.org>2023-10-12 09:46:13 +0200
commit27450d99d9db6a3e5a126accd4330d1b56d90ee3 (patch)
tree2c1d239f5dfcbbf0fcb767511821383fae0e26eb /design-documents
parent7847dceba0525a56ad477d9d8107ffd6f5050b1d (diff)
downloaddocs-27450d99d9db6a3e5a126accd4330d1b56d90ee3.tar.gz
docs-27450d99d9db6a3e5a126accd4330d1b56d90ee3.tar.bz2
docs-27450d99d9db6a3e5a126accd4330d1b56d90ee3.zip
simplify DD46 to make it more implementable
Diffstat (limited to 'design-documents')
-rw-r--r--design-documents/046-mumimo-contracts.rst37
1 files changed, 18 insertions, 19 deletions
diff --git a/design-documents/046-mumimo-contracts.rst b/design-documents/046-mumimo-contracts.rst
index 043485fe..5bc3d25a 100644
--- a/design-documents/046-mumimo-contracts.rst
+++ b/design-documents/046-mumimo-contracts.rst
@@ -111,6 +111,13 @@ The contract terms v1 will have the following structure:
// encoded in it (such as a short product identifier and timestamp).
order_id: string;
+ // Price to be paid for the transaction. Could be 0.
+ // The price is in addition to other instruments,
+ // such as rations and tokens.
+ // The exchange will subtract deposit fees from that amount
+ // before transferring it to the merchant.
+ price: Amount;
+
// URL where the same contract could be ordered again (if
// available). Returned also at the public order endpoint
// for people other than the actual buyer (hence public,
@@ -271,27 +278,9 @@ The contract terms v1 will have the following structure:
.. ts:def:: ContractInput
type ContractInput =
- | ContractInputCurrency
| ContractInputRation
| ContractInputToken;
-.. ts:def:: ContractInputCurrency
-
- interface ContractInputCurrency {
-
- type: "coin";
-
- // Price to be paid for the transaction.
- // The exchange will subtract deposit fees from that amount
- // before transferring it to the merchant.
- price: Amount;
-
- // FIXME-DOLD: do we want to move this into a 'details'
- // sub-structure as done with tokens below?
- class: "currency";
-
- };
-
.. ts:def:: ContractInputRation
interface ContractInputRation {
@@ -702,11 +691,21 @@ Definition of Done
- Integration tests exist in wallet-core
- Deliverables accepted by EC
+While rationing is part of the design, we expect the actual implementation to
+be done much later and thus should not consider it part of the "DONE" part.
+Rationing is complex, especially as a refunded contract should probably also
+refund the ration.
+
Alternatives
============
-None.
+The first draft of this DD included the capability of paying with multiple
+currencies for the same contract (for example, USD:1 and EUR:5) plus tokens
+and rations. However, this is very complex, both for wallets (how to display),
+for other merchant APIs (does the refund API have to become multi-currency as
+well?) and there does not seem to be a good business case for it. So for now,
+the price is always only in one currency.
Drawbacks