From bc290e7f08c25ae8ecd576f1ec42cae1fd24af08 Mon Sep 17 00:00:00 2001 From: mDuo13 Date: Mon, 11 Mar 2019 18:28:58 -0700 Subject: [PATCH] Add escrow state diagram --- content/_img-sources/escrow-states.uxf | 487 ++++++++++++++++++ .../concepts/complex-payment-types/escrow.md | 24 +- img/escrow-states.png | Bin 0 -> 35006 bytes 3 files changed, 509 insertions(+), 2 deletions(-) create mode 100644 content/_img-sources/escrow-states.uxf create mode 100644 img/escrow-states.png diff --git a/content/_img-sources/escrow-states.uxf b/content/_img-sources/escrow-states.uxf new file mode 100644 index 0000000000..c6ab23d7a4 --- /dev/null +++ b/content/_img-sources/escrow-states.uxf @@ -0,0 +1,487 @@ + + + 10 + + UMLClass + + 210 + 160 + 170 + 60 + + *Held* +No one can finish or cancel the Escrow. +style=wordwrap + + + + UMLSpecialState + + 230 + 80 + 20 + 20 + + type=initial + + + + Relation + + 230 + 80 + 210 + 100 + + lt=<- +EscrowCreate transaction + 10.0;80.0;10.0;10.0 + + + Relation + + 230 + 210 + 30 + 80 + + lt=<- + + 10.0;60.0;10.0;10.0 + + + UMLClass + + 210 + 270 + 170 + 80 + + *Ready* +Anyone can finish the Escrow. +style=wordwrap + + + + UMLSpecialState + + 510 + 300 + 20 + 20 + + type=final + + + + Relation + + 370 + 290 + 160 + 50 + + lt=<- +EscrowFinish +transaction + 140.0;20.0;10.0;20.0 + + + Relation + + 230 + 340 + 30 + 110 + + lt=<- + + 10.0;90.0;10.0;10.0 + + + UMLClass + + 210 + 430 + 170 + 80 + + *Expired* +Anyone can cancel the Escrow. +No one can finish it. +style=wordwrap + + + + Relation + + 370 + 450 + 160 + 50 + + lt=<- +EscrowCancel +transaction + 140.0;20.0;10.0;20.0 + + + UMLSpecialState + + 510 + 460 + 20 + 20 + + type=flow_final + + + + UMLSpecialState + + 990 + 80 + 20 + 20 + + type=initial + + + + Relation + + 990 + 90 + 210 + 200 + + lt=<- +r2=EscrowCreate transaction + + 10.0;180.0;10.0;10.0 + + + UMLSpecialState + + 1270 + 300 + 20 + 20 + + type=final + + + + Relation + + 1130 + 290 + 160 + 50 + + lt=<- +EscrowFinish +transaction + 140.0;20.0;10.0;20.0 + + + Text + + 210 + 20 + 180 + 30 + + *FinishAfter time only* + + + + Text + + 980 + 20 + 180 + 30 + + *Condition only* + + + + UMLSpecialState + + 610 + 80 + 20 + 20 + + type=initial + + + + Relation + + 610 + 80 + 210 + 100 + + lt=<- +EscrowCreate transaction + 10.0;80.0;10.0;10.0 + + + Relation + + 610 + 210 + 30 + 80 + + lt=<- + + 10.0;60.0;10.0;10.0 + + + UMLSpecialState + + 890 + 300 + 20 + 20 + + type=final + + + + Relation + + 750 + 290 + 160 + 50 + + lt=<- +EscrowFinish +transaction + 140.0;20.0;10.0;20.0 + + + Text + + 590 + 20 + 180 + 40 + + *Both Condition and FinishAfter time* +style=wordwrap + + + + UMLClass + + 970 + 270 + 170 + 80 + + *Conditionally Ready* +Anyone with the correct fulfillment can finish the Escrow. +style=wordwrap + + + + UMLClass + + 970 + 430 + 170 + 80 + + *Expired* +Anyone can cancel the Escrow. +No one can finish it. +style=wordwrap + + + + Relation + + 990 + 340 + 30 + 110 + + lt=<- + 10.0;90.0;10.0;10.0 + + + Relation + + 610 + 340 + 30 + 110 + + lt=<- + 10.0;90.0;10.0;10.0 + + + UMLClass + + 590 + 160 + 170 + 60 + + *Held* +No one can finish or cancel the Escrow. +style=wordwrap + + + + UMLClass + + 590 + 430 + 170 + 80 + + *Expired* +Anyone can cancel the Escrow. +No one can finish it. +style=wordwrap + + + + Relation + + 110 + 40 + 30 + 560 + + lt=<- + 10.0;540.0;10.0;10.0 + + + UMLClass + + 590 + 270 + 170 + 80 + + *Conditionally Ready* +Anyone with the correct fulfillment can finish the Escrow. +style=wordwrap + + + + Relation + + 90 + 380 + 1230 + 30 + + lt=. + 10.0;10.0;1210.0;10.0 + + + Relation + + 90 + 230 + 840 + 30 + + lt=. + 10.0;10.0;820.0;10.0 + + + Text + + 10 + 210 + 110 + 50 + + FinishAfter time +style=wordwrap + + + + Text + + 10 + 360 + 110 + 70 + + CancelAfter time +(if specified) +style=wordwrap + + + + Relation + + 750 + 450 + 160 + 50 + + lt=<- +EscrowCancel +transaction + 140.0;20.0;10.0;20.0 + + + UMLSpecialState + + 890 + 460 + 20 + 20 + + type=flow_final + + + + Relation + + 1130 + 450 + 160 + 50 + + lt=<- +EscrowCancel +transaction + 140.0;20.0;10.0;20.0 + + + UMLSpecialState + + 1270 + 460 + 20 + 20 + + type=flow_final + + + + Text + + 100 + 20 + 60 + 30 + + Time +style=wordwrap + + + diff --git a/content/concepts/complex-payment-types/escrow.md b/content/concepts/complex-payment-types/escrow.md index 8dbed75627..fd527504a0 100644 --- a/content/concepts/complex-payment-types/escrow.md +++ b/content/concepts/complex-payment-types/escrow.md @@ -1,6 +1,6 @@ # Escrow -Escrow is a feature of the XRP Ledger that allows you to send conditional XRP payments. These conditional payments, called _escrows_, set aside XRP and deliver it later when certain conditions are met. Conditions to successfully finish an escrow include time-based unlocks and [crypto-conditions][]. Escrows can also be set to expire if not finished in time. Conditional held payments are a key feature for full [Interledger Protocol][] support, which enables chains of payments to cross any number of ledgers. +Escrow is a feature of the XRP Ledger that allows you to send conditional XRP payments. These conditional payments, called _escrows_, set aside XRP and deliver it later when certain conditions are met. Conditions to successfully finish an escrow include time-based unlocks and [crypto-conditions][]. Escrows can also be set to expire if not finished in time. The XRP set aside in an escrow is locked up. No one can use or destroy the XRP until the escrow has been successfully finished or canceled. Before the expiration time, only the intended receiver can get the XRP. After the expiration time, the XRP can only be returned to the sender. @@ -33,12 +33,32 @@ Escrow is designed as a feature to enable the XRP Ledger to be used in the [Inte - Escrow only works with XRP, not issued currencies. - Escrow requires sending at least two transactions: one to create the escrow, and one to finish or cancel it. Thus, it may not be financially sensible to escrow payments for very small amounts, because the participants must destroy the [transaction cost](transaction-cost.html) of the two transactions. - When using Crypto-Conditions, the [cost of the transaction to finish the escrow](#escrowfinish-transaction-cost) is higher than usual. -- All escrows must have a "finish-after" time, an expiration time, or both. Neither time can be in the past when the transaction to create the escrow executes. +- All escrows must be created with a "finish-after" time or a [crypto-condition][]. If the escrow does not have a finish-after time, it must have an expiration time. + + **Note:** The [fix1571 amendment][] changed the requirements for creating an escrow. Escrows created before that amendment could provide an expiration time with no condition or finish-after time. Anyone can finish such escrows immediately (sending the funds to the intended recipient). + +- None of the time values can be in the past when the escrow-creating transaction executes. - Timed releases and expirations are limited to the resolution of XRP Ledger closes. This means that, in practice, times may be rounded to approximately 5 second intervals, depending on exactly when the ledgers close. - The only supported [crypto-condition][] type is PREIMAGE-SHA-256. Escrow provides strong guarantees that are best suited for high-value, low-quantity payments. [Payment Channels](use-payment-channels.html) are better suited for fast, low-value payments. Of course, unconditional [Payments](payment.html) are also preferable for many use cases. +## State Diagram + +The following diagram shows the states an Escrow can progress through: + +[![State diagram showing escrows going from Held → Ready/Conditionally Ready → Expired](img/escrow-states.png)](img/escrow-states.png) + +The diagram shows three different cases for three possible combinations of the escrow's "finish-after" time (`FinishAfter` field), crypto-condition (`Condition` field), and expiration time (`CancelAfter` field): + +- **Time-based Escrow (left):** With only a finish-after time, the escrow is created in the **Held** state. After the specified time has passed, it becomes **Ready** and anyone can finish it. If the escrow has an expiration time and no one finishes it before that time passes, then the escrow becomes **Expired**. In the expired state, an escrow cannot be finished, and anyone can cancel it. + +- **Combination Escrow (center):** If the escrow specifies both a crypto-condition (`Condition` field) _and_ a "finish-after" time (`FinishAfter` field), the escrow is **Held** until its finish-after time has passed. Then it becomes **Conditionally Ready**, and can finish it if they supply the correct fulfillment to the crypto-condition. If the escrow has an expiration time (`CancelAfter` field), and no one finishes it before that time passes, then the escrow becomes **Expired**. In the expired state, an escrow cannot be finished, and anyone can cancel it. + +- **Conditional Escrow (right):** If the escrow specifies a crypto-condition (`Condition` field) and not a finish-after time, the escrow becomes **Conditionally Ready** immediately when it is created. During this time, anyone can finish the escrow, but only if they supply the correct fulfillment to the crypto-condition. If no one finishes the escrow before its expiration time (`CancelAfter` field), the escrow becomes **Expired**. (An escrow without a finish-after time _must_ have an expiration time.) In the expired state, the escrow can no longer be finished, and anyone can cancel it. + + + ## Availability of Escrow Conditional payments have been enabled by the ["Escrow" Amendment](known-amendments.html#escrow) to the XRP Ledger Consensus Protocol since 2017-03-31. A previous version of the same functionality was available on the [Ripple Test Net](https://ripple.com/build/ripple-test-net/) by the name "Suspended Payments" (SusPay) in 2016. diff --git a/img/escrow-states.png b/img/escrow-states.png new file mode 100644 index 0000000000000000000000000000000000000000..a127a3a0ec21060c038983057d80515ceb561b53 GIT binary patch literal 35006 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 literal 0 HcmV?d00001