fix more typos
This commit is contained in:
parent
9b89387535
commit
2a619eadbe
@ -67,7 +67,7 @@ Now there are some additional complexities related to giving change and not know
|
|||||||
3. Integer linear programming
|
3. Integer linear programming
|
||||||
(It helps with understanding the greedy algorithm too)
|
(It helps with understanding the greedy algorithm too)
|
||||||
|
|
||||||
We almost have an integer linear program because all these functions parameterized by D are simply vectors. We just need to eliminate that annoying max(0, ), which we do by introducing a variable z. I'm going to switch from t[x] to d[x] = t[x] + p[x] and surpress the indexes [x] here since only m, c, and z lack indexes.
|
We almost have an integer linear program because all these functions parameterized by D are simply vectors. We just need to eliminate that annoying max(0, ), which we do by introducing a variable z. I'm going to switch from t[x] to d[x] = t[x] + p[x] and suppress the indexes [x] here since only m, c, and z lack indexes.
|
||||||
|
|
||||||
Select d : D -> Z and p : D -> Z so as to minimize the function
|
Select d : D -> Z and p : D -> Z so as to minimize the function
|
||||||
z + sum_x ( r*p + c*(d+p) )
|
z + sum_x ( r*p + c*(d+p) )
|
||||||
@ -119,11 +119,11 @@ It's maybe now easier to visualize the greedy algorithm working when you think a
|
|||||||
|
|
||||||
4. Smarter Greed
|
4. Smarter Greed
|
||||||
|
|
||||||
If we're only allowed to spend one denomination at some price, then we shown the minium is achieved when that denomination x in D is chosen to minimize
|
If we're only allowed to spend one denomination at some price, then we shown the minimum is achieved when that denomination x in D is chosen to minimize
|
||||||
(f[x]+c)/v[x] + (r[x]+c)/(v[x]*d[x])*p[x]
|
(f[x]+c)/v[x] + (r[x]+c)/(v[x]*d[x])*p[x]
|
||||||
where p[x] = max(1,price mod v[x]). We could approximate this by (f[x]+c)/v[x] under several reasonable hypotheses, not unfortunately r >> f, but price >> v[x] still helps. In any case, there are many situations where minimizing (f[x]+c)/v[x] handles this single denomination spend.
|
where p[x] = max(1,price mod v[x]). We could approximate this by (f[x]+c)/v[x] under several reasonable hypotheses, not unfortunately r >> f, but price >> v[x] still helps. In any case, there are many situations where minimizing (f[x]+c)/v[x] handles this single denomination spend.
|
||||||
|
|
||||||
We know from our optimal substructure property that, for an optimal allocation, there is a denomination x such that zeroing out t[y], p[y], and v'[y] for y not x, and adjusting the price acordingly, gives an optimal allocation. It follows that a greedy algorithm that uses D sorted by increasing (f[x]+c)/v[x] frequently works, although not when mints charge too much for refreshes
|
We know from our optimal substructure property that, for an optimal allocation, there is a denomination x such that zeroing out t[y], p[y], and v'[y] for y not x, and adjusting the price accordingly, gives an optimal allocation. It follows that a greedy algorithm that uses D sorted by increasing (f[x]+c)/v[x] frequently works, although not when mints charge too much for refreshes
|
||||||
|
|
||||||
Roughly this algorithm looks like:
|
Roughly this algorithm looks like:
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ End
|
|||||||
|
|
||||||
MPSP->CPSP: Capture
|
MPSP->CPSP: Capture
|
||||||
|
|
||||||
== Fulfilment ==
|
== Fulfillment ==
|
||||||
|
|
||||||
Payee->Payer: Provide products or services
|
Payee->Payer: Provide products or services
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ Exchange->Payee: Confirm payment
|
|||||||
|
|
||||||
Payee->Payer: Confirm payment
|
Payee->Payer: Confirm payment
|
||||||
|
|
||||||
== Fulfilment ==
|
== Fulfillment ==
|
||||||
|
|
||||||
Payer->Payee: Reload fulfillment URL for delivery
|
Payer->Payee: Reload fulfillment URL for delivery
|
||||||
|
|
||||||
|
@ -964,7 +964,7 @@ it has the following key advantages:
|
|||||||
% // ...
|
% // ...
|
||||||
% let refundPermissions = /* ... */;
|
% let refundPermissions = /* ... */;
|
||||||
% taler.acceptRefunds(refundPermissions, (err) => {
|
% taler.acceptRefunds(refundPermissions, (err) => {
|
||||||
% alert("An error occured while attempting a refund");
|
% alert("An error occurred while attempting a refund");
|
||||||
% });
|
% });
|
||||||
%</script>
|
%</script>
|
||||||
%\end{lstlisting}
|
%\end{lstlisting}
|
||||||
@ -1025,7 +1025,7 @@ anonymous payment system.
|
|||||||
%a refund operation cannot be considered anonymous anymore because a
|
%a refund operation cannot be considered anonymous anymore because a
|
||||||
%merchant, and possibly the exchange, has now seen them and could
|
%merchant, and possibly the exchange, has now seen them and could
|
||||||
%link them that previous transaction. At best, these tainted coins
|
%link them that previous transaction. At best, these tainted coins
|
||||||
%are only pseudononymous, similar to Bitcoin accounts.
|
%are only pseudonymous, similar to Bitcoin accounts.
|
||||||
%
|
%
|
||||||
%To maintain anonymity, a Taler wallet automatically performs a
|
%To maintain anonymity, a Taler wallet automatically performs a
|
||||||
%{\em refresh} operation with the mint API to both replace tainted
|
%{\em refresh} operation with the mint API to both replace tainted
|
||||||
@ -1381,7 +1381,7 @@ situation.
|
|||||||
|
|
||||||
Finally, attempts to address the scalability hudles of Bitcoin using
|
Finally, attempts to address the scalability hudles of Bitcoin using
|
||||||
side-chains or schemes like BOLT introduce semi-centralized
|
side-chains or schemes like BOLT introduce semi-centralized
|
||||||
intermediaries, not wholey unlike Taler's use of exchanges. Compared
|
intermediaries, not wholly unlike Taler's use of exchanges. Compared
|
||||||
to BOLT, we would expect a Taler exchange operating in BTC to offer
|
to BOLT, we would expect a Taler exchange operating in BTC to offer
|
||||||
stronger security to all parties and stronger anonymity to customers,
|
stronger security to all parties and stronger anonymity to customers,
|
||||||
as well as being vastly cheaper to operate.
|
as well as being vastly cheaper to operate.
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
|
|
||||||
theme : Privacy increses usability
|
theme : Privacy increases usability
|
||||||
title?
|
title?
|
||||||
|
|
||||||
outline :
|
outline :
|
||||||
@ -15,7 +15,7 @@ Describe workflow in existing payment systems
|
|||||||
- Cash
|
- Cash
|
||||||
- authentication at ATM
|
- authentication at ATM
|
||||||
- transaction authenticated by the cash
|
- transaction authenticated by the cash
|
||||||
- worries : counterfit bills, wrong currency, etc.
|
- worries : counterfeit bills, wrong currency, etc.
|
||||||
- refunds
|
- refunds
|
||||||
- CC authentication
|
- CC authentication
|
||||||
- online vs offline
|
- online vs offline
|
||||||
@ -50,9 +50,9 @@ Taler payment process from customers prospective
|
|||||||
- ATM
|
- ATM
|
||||||
- merchant
|
- merchant
|
||||||
- contract
|
- contract
|
||||||
- digitally signed is better than paper reciept
|
- digitally signed is better than paper receipt
|
||||||
- failure modes
|
- failure modes
|
||||||
- insufficent funds
|
- insufficient funds
|
||||||
- restoring from backups causes double spending
|
- restoring from backups causes double spending
|
||||||
- mint gives proof
|
- mint gives proof
|
||||||
- restoring from backups can lose coins
|
- restoring from backups can lose coins
|
||||||
@ -75,7 +75,7 @@ Denomination choice
|
|||||||
- Anonymity refresh protocol
|
- Anonymity refresh protocol
|
||||||
- Withdraw automates like ATMs
|
- Withdraw automates like ATMs
|
||||||
|
|
||||||
Broser extension
|
Browser extension
|
||||||
- RESTful vs Bitcoin, OpenCoin, etc.
|
- RESTful vs Bitcoin, OpenCoin, etc.
|
||||||
- Retrying RESTful transactions always works
|
- Retrying RESTful transactions always works
|
||||||
- minimizing dialog
|
- minimizing dialog
|
||||||
|
@ -1016,7 +1016,7 @@ it has the following key advantages:
|
|||||||
// ...
|
// ...
|
||||||
let refundPermissions = /* ... */;
|
let refundPermissions = /* ... */;
|
||||||
taler.acceptRefunds(refundPermissions, (err) => {
|
taler.acceptRefunds(refundPermissions, (err) => {
|
||||||
alert("An error occured while attempting a refund");
|
alert("An error occurred while attempting a refund");
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
@ -1077,7 +1077,7 @@ anonymous payment system.
|
|||||||
%a refund operation cannot be considered anonymous anymore because a
|
%a refund operation cannot be considered anonymous anymore because a
|
||||||
%merchant, and possibly the exchange, has now seen them and could
|
%merchant, and possibly the exchange, has now seen them and could
|
||||||
%link them that previous transaction. At best, these tainted coins
|
%link them that previous transaction. At best, these tainted coins
|
||||||
%are only pseudononymous, similar to Bitcoin accounts.
|
%are only pseudonymous, similar to Bitcoin accounts.
|
||||||
%
|
%
|
||||||
%To maintain anonymity, a Taler wallet automatically performs a
|
%To maintain anonymity, a Taler wallet automatically performs a
|
||||||
%{\em refresh} operation with the mint API to both replace tainted
|
%{\em refresh} operation with the mint API to both replace tainted
|
||||||
@ -1433,7 +1433,7 @@ situation.
|
|||||||
|
|
||||||
Finally, attempts to address the scalability hudles of Bitcoin using
|
Finally, attempts to address the scalability hudles of Bitcoin using
|
||||||
side-chains or schemes like BOLT introduce semi-centralized
|
side-chains or schemes like BOLT introduce semi-centralized
|
||||||
intermediaries, not wholey unlike Taler's use of exchanges. Compared
|
intermediaries, not wholly unlike Taler's use of exchanges. Compared
|
||||||
to BOLT, we would expect a Taler exchange operating in BTC to offer
|
to BOLT, we would expect a Taler exchange operating in BTC to offer
|
||||||
stronger security to all parties and stronger anonymity to customers,
|
stronger security to all parties and stronger anonymity to customers,
|
||||||
as well as being vastly cheaper to operate.
|
as well as being vastly cheaper to operate.
|
||||||
|
@ -179,14 +179,14 @@ instance of the digital contract with the opportunity to pay for it.
|
|||||||
% if we already have the url? i.e. the non-fulfillment URL
|
% if we already have the url? i.e. the non-fulfillment URL
|
||||||
% that just identifies the resource ...
|
% that just identifies the resource ...
|
||||||
|
|
||||||
The case where a user already payed for a resource and then visits
|
The case where a user already paid for a resource and then visits
|
||||||
the resource URL (instead of the fulfillment URL) after losing temporary
|
the resource URL (instead of the fulfillment URL) after losing temporary
|
||||||
session state is also handled as expected, since the wallet component will
|
session state is also handled as expected, since the wallet component will
|
||||||
look for contracts that refer to the same resource.
|
look for contracts that refer to the same resource.
|
||||||
|
|
||||||
While Taler is designed to work well with digital resources on the web,
|
While Taler is designed to work well with digital resources on the web,
|
||||||
it can also be used for more traditional purchases. The resource that
|
it can also be used for more traditional purchases. The resource that
|
||||||
is being payed for then represents the shopping cart of items that
|
is being paid for then represents the shopping cart of items that
|
||||||
are being purchased.
|
are being purchased.
|
||||||
|
|
||||||
%\newpage
|
%\newpage
|
||||||
|
Loading…
Reference in New Issue
Block a user