Skip to content

Offer

[Source]

The Offer ledger entry describes an Offer to exchange currencies in Xahau’s decentralized exchange. (In finance, this is more traditionally known as an order.) An [OfferCreate transaction][] only creates an Offer entry in the ledger when the Offer cannot be fully executed immediately by consuming other Offers already in the ledger.

An Offer can become unfunded through other activities in the network while remaining in the ledger. When processing transactions, the network automatically prunes any unfunded Offers that those transactions come across. (Otherwise, unfunded Offers remain because only transactions can change the ledger state.)

{
"Account": "rBqb89MRQJnMPq8wTwEbtz4kvxrEDfcYvt",
"BookDirectory": "ACC27DE91DBA86FC509069EAF4BC511D73128B780F2E54BF5E07A369E2446000",
"BookNode": "0000000000000000",
"Flags": 131072,
"LedgerEntryType": "Offer",
"OwnerNode": "0000000000000000",
"PreviousTxnID": "F0AB71E777B2DA54B86231E19B82554EF1F8211F92ECA473121C655BFC5329BF",
"PreviousTxnLgrSeq": 14524914,
"Sequence": 866,
"TakerGets": {
"currency": "XAG",
"issuer": "r9Dr5xwkeLegBeXq6ujinjSBLQzQ1zQGjH",
"value": "37"
},
"TakerPays": "79550000000",
"index": "96F76F27D8A327FC48753167EC04A46AA0E382E6F57F32FD12274144D00F1797"
}

An Offer object has the following fields:

NameJSON Type[Internal Type][]Required?Description
AccountStringAccountIDYesThe address of the account that owns this Offer.
BookDirectoryStringHash256YesThe ID of the Offer Directory that links to this Offer.
BookNodeStringUInt64YesA hint indicating which page of the offer directory links to this object, in case the directory consists of multiple pages.
ExpirationNumberUInt32NoIndicates the time after which this Offer is considered unfunded. See [Specifying Time][] for details.
FlagsNumberUInt32YesA bit-map of boolean flags enabled for this offer.
LedgerEntryTypeStringUInt16YesThe value 0x006F, mapped to the string Offer, indicates that this object describes an Offer.
OwnerNodeStringUInt64YesA hint indicating which page of the owner directory links to this object, in case the directory consists of multiple pages. Note: The offer does not contain a direct link to the owner directory containing it, since that value can be derived from the Account.
PreviousTxnIDStringHash256YesThe identifying hash of the transaction that most recently modified this object.
PreviousTxnLgrSeqNumberUInt32YesThe [index of the ledger][Ledger Index] that contains the transaction that most recently modified this object.
SequenceNumberUInt32YesThe Sequence value of the [OfferCreate][] transaction that created this Offer object. Used in combination with the Account to identify this Offer.
TakerPaysString or ObjectAmountYesThe remaining amount and type of currency requested by the Offer creator.
TakerGetsString or ObjectAmountYesThe remaining amount and type of currency being provided by the Offer creator.

There are several options that can be either enabled or disabled when an [OfferCreate transaction][] creates an offer object. In the ledger, flags are represented as binary values that can be combined with bitwise-or operations. The bit values for the flags in the ledger are different than the values used to enable or disable those flags in a transaction. Ledger flags have names that begin with lsf.

Offer objects can have the following flag values:

Flag NameHex ValueDecimal ValueCorresponding OfferCreate FlagDescription
lsfPassive0x0001000065536tfPassiveThe object was placed as a passive Offer. This has no effect on the object in the ledger.
lsfSell0x00020000131072tfSellThe object was placed as a sell Offer. This has no effect on the object in the ledger (because tfSell only matters if you get a better rate than you asked for, which cannot happen after the object enters the ledger).

The ID of an Offer object is the [SHA-512Half][] of the following values, concatenated in order:

  • The Offer space key (0x006F)

  • The AccountID of the account placing the Offer

  • The Sequence number of the [OfferCreate transaction][] that created the Offer.

    If the OfferCreate transaction used a Ticket, use the TicketSequence value instead.