Escrow

[Source]

(Added by the Escrow amendment.)

The Escrow object type represents a held payment of XRP 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 XRP when creating the Escrow object. If the held payment is canceled, the XRP returns to the owner.
  • The destination, where the XRP is paid when the held payment succeeds. The destination can be the same as the owner.

Example Escrow 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"
}

Escrow 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 XRP, and gets it back if the held payment is canceled.
Amount String Amount Yes The amount of XRP, in drops, 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 XRP 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 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.

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 the TicketSequence value instead.