Escrow
(Added by the [Escrow amendment][].)
The Escrow
object type represents a held payment of XAH or IOU waiting to be executed or canceled. An [EscrowCreate transaction][] creates an Escrow
object in the ledger. A successful [EscrowFinish][] or [EscrowCancel][] transaction deletes the object.
If the Escrow
object has a crypto-condition, the payment can only succeed if an EscrowFinish transaction provides the corresponding fulfillment that satisfies the condition. (The only supported crypto-condition type is PREIMAGE-SHA-256.) If the Escrow
object has a FinishAfter
time, the held payment can only execute after that time.
An Escrow
object is associated with two addresses:
- The owner, who provides the XAH or IOU when creating the
Escrow
object. If the held payment is canceled, the XAH or IOU returns to the owner. - The destination, where the XAH or IOU is paid when the held payment succeeds. The destination can be the same as the owner.
Example JSON
Section titled “Example JSON”{ "Account": "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn", "Amount": "10000", "CancelAfter": 545440232, "Condition": "A0258020A82A88B2DF843A54F58772E4A3861866ECDB4157645DD9AE528C1D3AEEDABAB6810120", "Destination": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX", "DestinationTag": 23480, "FinishAfter": 545354132, "Flags": 0, "LedgerEntryType": "Escrow", "OwnerNode": "0000000000000000", "DestinationNode": "0000000000000000", "PreviousTxnID": "C44F2EB84196B9AD820313DBEBA6316A15C9A2D35787579ED172B87A30131DA7", "PreviousTxnLgrSeq": 28991004, "SourceTag": 11747, "index": "DC5F3851D8A1AB622F957761E5963BC5BD439D5C24AC6AD7AC4523F0640244AC"}
Fields
Section titled “Fields”An Escrow
object has the following fields:
Name | JSON Type | [Internal Type][] | Required? | Description |
---|---|---|---|---|
Account | String | AccountID | Yes | The address of the owner (sender) of this held payment. This is the account that provided the amount, and gets it back if the held payment is canceled. |
Amount | String or Object | Amount | Yes | The amount to be delivered by the held payment. |
CancelAfter | Number | UInt32 | No | The held payment can be canceled if and only if this field is present and the time it specifies has passed. Specifically, this is specified as [seconds since the Ripple Epoch][] and it “has passed” if it’s earlier than the close time of the previous validated ledger. |
Condition | String | Blob | No | A PREIMAGE-SHA-256 crypto-condition, as hexadecimal. If present, the [EscrowFinish transaction][] must contain a fulfillment that satisfies this condition. |
Destination | String | AccountID | Yes | The destination address where the amount is paid if the held payment is successful. |
DestinationNode | String | UInt64 | No | A hint indicating which page of the destination’s owner directory links to this object, in case the directory consists of multiple pages. Omitted on escrows created before enabling the [fix1523 amendment][]. |
DestinationTag | Number | UInt32 | No | An arbitrary tag to further specify the destination for this held payment, such as a hosted recipient at the destination address. |
FinishAfter | Number | UInt32 | No | The time, in [seconds since the Ripple Epoch][], after which this held payment can be finished. Any [EscrowFinish transaction][] before this time fails. (Specifically, this is compared with the close time of the previous validated ledger.) |
Flags | Number | UInt32 | Yes | A bit-map of boolean flags enabled for this object. Currently, the protocol defines no flags for Escrow objects. The value is always 0 . |
LedgerEntryType | String | UInt16 | Yes | The value 0x0075 , mapped to the string Escrow , indicates that this object is an Escrow object. |
OwnerNode | String | UInt64 | Yes | A hint indicating which page of the owner directory links to this object, in case the directory consists of multiple pages. Note: The object does not contain a direct link to the owner directory containing it, since that value can be derived from the Account . |
PreviousTxnID | String | Hash256 | Yes | The identifying hash of the transaction that most recently modified this object. |
PreviousTxnLgrSeq | Number | UInt32 | Yes | The [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object. |
SourceTag | Number | UInt32 | No | An arbitrary tag to further specify the source for this held payment, such as a hosted recipient at the owner’s address. |
TransferRate | Number | UInt32 | No |
Escrow ID Format
Section titled “Escrow ID Format”The ID of an Escrow
object is the [SHA-512Half][] of the following values, concatenated in order:
- The Escrow space key (
0x0075
) - The AccountID of the sender of the [EscrowCreate transaction][] that created the
Escrow
object - The Sequence number of the [EscrowCreate transaction][] that created the
Escrow
object If the EscrowCreate transaction used a Ticket, use theTicketSequence
value instead.