NFTokenOffer
Non-fungible token functionality is part of the NonFungibleTokensV1 amendment to the XRP Ledger protocol. You can use these functions on the NFT-Devnet now, but they are not yet available on the production Mainnet.
Tokens that have the lsfTransferable
flag set can be transferred among participants using offers. The NFTokenOffer
object represents an offer to buy, sell or transfer an NFToken
object. The owner of a NFToken
can use NFTokenCreateOffer
to start a transaction.
NFTokenOfferID
Format
The unique ID (NFTokenOfferID
) of the NFTokenOffer
object is the result of the following values concatenated in order:
- The
NFTokenOffer
space key,0x0074
; - The
AccountID
of the account placing the offer; and - The
Sequence
(orTicket
) of theNFTokenCreateOffer
transaction that will create theNFTokenOffer
.
NFTokenOffer
Fields
Field Name | Required? | JSON Type | Internal Type | Description |
Owner
|
Yes | string | AccountID | Owner of the account that is creating and owns the offer. Only the current Owner of an NFToken can create an offer to sell an NFToken , but any account can create an offer to buy an NFToken .
|
LedgerEntryType
|
Yes | string | UInt16 | The type of ledger object (0x0074 ).
|
PreviousTxnID
|
Yes | string | Hash256 | Identifying hash of the transaction that most recently modified this object. |
PreviousTxnLgrSeq
|
Yes | number | UInt32 | Index of the ledger that contains the transaction that most recently modified this object. |
TokenID
|
Yes | string | Hash256 | TokenID of the NFToken object referenced by this offer.
|
Amount
|
Yes | object or string | AMOUNT | Amount expected or offered for the NFToken . If the token has the lsfOnlyXRP flag set, the amount must be specified in XRP.
Sell offers that specify assets other than XRP must specify a non-zero amount. Sell offers that specify XRP can be 'free' (that is, the |
Expiration
|
No | number | UInt32 | The time after which the offer is no longer active. The value is the number of seconds since the Ripple Epoch . |
Destination
|
No | string | AccountID | The AccountID for which this offer is intended. If present, only that account can accept the offer.
|
OwnerNode
|
No | string | UInt64 | Internal bookkeeping, indicating the page inside the owner directory where this token is being tracked. This field allows the efficient deletion of offers. |
OfferNode
|
No | string | UInt64 | Internal bookkeeping, indicating the page inside the token buy or sell offer directory, as appropriate, where this token is being tracked. This field allows the efficient deletion of offers. |
Flags
|
Yes | number | UInt32 | A set of flags associated with this object, used to specify various options or settings. Flags are listed in the table below. |
NFTokenOffer Flags
Flag Name | Flag Value | Description |
lsfBuyToken
|
0x00000001
|
If set, the offer is a buy offer. Otherwise, the offer is a sell offer. |
lsfAuthorized
|
0x00000002
|
If set, the offer has been approved by the issuer. This flag can only be set by the Issuer of the token or an account authorized by the issuer (for example, the MintAccount listed in the account root of the Issuer ) and only if the token has the flag indicating that authorization is required.
|
NFTokenOffer
Transactions
Token offers on XRPL are stored sorted by quality in an order book and automatically matched by an on-ledger mechanism. An NFTokenOffer
is not stored in an order book and is never automatically matched or executed.
A buyer must explicitly choose to accept an NFTokenOffer
that offers to buy an NFToken
. Similarly, a seller must explicitly choose to accept a specific NFTokenOffer
that offers to buy an NFToken
object that they own.
There are three defined transactions:
-
NFTokenCreateOffer
-
NFTokenCancelOffer
-
NFTokenAcceptOffer
Locating NFTokenOffer
objects
Each token has two directories. One contains offers to buy the token and the other containing offers to sell the token. This makes it easy to find NFTokenOffer
for a particular token. It is expected that off-ledger systems will be used to retrieve, present, communicate and effectuate the creation, enumeration, acceptance or cancellation of offers. For example, a marketplace may offer intuitive web- or app-based interfaces for users.
NFTokenOffer
Reserve
Each NFTokenOffer
object costs the account placing the offer one incremental reserve. As of this writing the incremental reserve is 5 XRP. The reserve can be recovered by cancelling the offer.