|
2 | 2 |
|
3 | 3 | <Zoe-Version/>
|
4 | 4 |
|
5 |
| -**Definition**: _Offer safety_ means that the user is guaranteed to either |
6 |
| -get what they wanted or get back a full refund of what they offered. |
| 5 | +**Definition**: _Offer safety_ means that the user is guaranteed to either |
| 6 | +get **at least what they wanted**, or get back a **full refund** of what they offered — and **never worse**. |
| 7 | +They can receive more than they asked for, but never less than promised, and they will never lose more than they offered. |
7 | 8 |
|
8 | 9 | For Zoe to enforce offer safety, the user must
|
9 | 10 | give Zoe a `proposal`. This is a description of both what they want and what
|
@@ -32,8 +33,11 @@ escrow my offer, as Zoe immediately escrows the `give:`-specified payment.
|
32 | 33 |
|
33 | 34 | After the user escrows, they get a promise for a payout from Zoe.
|
34 | 35 | This is the payout that offer safety is enforced over. The payout _must_
|
35 |
| -be either what the user wanted (an event ticket in the above example) |
36 |
| -or a full refund of what they escrowed ($100 in this example). |
| 36 | +be either at least what the user wanted (an event ticket in the above |
| 37 | +example) or a full refund of what they escrowed ($100 in this example). |
| 38 | +Sometimes I may even get _more_ than I asked for (e.g., an upgraded ticket |
| 39 | +or an additional item), but Zoe guarantees that I’ll never get less than |
| 40 | +what I requested or lose more than I was willing to give. |
37 | 41 |
|
38 | 42 | We can enforce offer safety because Zoe controls the payout. In the example,
|
39 | 43 | if I try to buy my event ticket using a smart contract on Zoe, the contract
|
|
0 commit comments