0051 XLS-51d: NFToken Escrows #146
Replies: 7 comments 8 replies
-
Great addition!! |
Beta Was this translation helpful? Give feedback.
-
Very interesting proposal! |
Beta Was this translation helpful? Give feedback.
-
Very nice proposal! Ease of trade in NFTs should help the liquidity of the ecosystem. Are you planning to transfer the ownership of NFTs into the Escrow? We need to prevent all modifications (transfer, deletions, etc) whilst the NFT is inside the Escrow. Alternatively, we could perform ownership pre-requisite checks on Payment transaction types. This could vet that NFTs under Escrow are not being transferred. How can we implement this proposal? |
Beta Was this translation helpful? Give feedback.
-
Not in the scope of rippled, but how are NFTs in escrow supposed to be handled in Clio's NFT methods(nfts_by_issuer, nft_history, nft_info)? |
Beta Was this translation helpful? Give feedback.
-
One problem that I realized with this spec: you could use this to force someone to take an NFT without going through the standard accept flow. There is no way to accept an escrow right now. This problem needs to be solved before this spec can be implemented. Some possible answers:
|
Beta Was this translation helpful? Give feedback.
-
I won't put my feelings hating on as they sway to IOU's first. But some over sites, for finish events on this spec. EscrowBurn - burn NFT on finish. |
Beta Was this translation helpful? Give feedback.
-
NFToken Escrows
Abstract
The XRP Ledger currently only supports escrows for one type of token: XRP. Now that XLS-20 is live on the network and there are almost 4 million NFTs on the ledger, users may want to also be able to put their NFTs in an escrow, just as they would with their funds.
1. Overview
This spec proposes modifications to one existing on-ledger object and one existing transaction:
Escrow
ledger objectEscrowCreate
transactionThis change will require an amendment, tentatively called
featureNFTokenEscrow
.2. On-Ledger Object:
Escrow
The
Escrow
object already exists on the XRPL. We propose a slight modification to support NFT escrows.2.1. Fields
As a reference, these are the existing escrow object fields.
LedgerIndex
string
HASH256
LedgerEntryType
string
UINT16
Owner
string
AccountID
OwnerNode
string
UInt32
Amount
Amount
Amount
Condition
string
Blob
CancelAfter
number
UInt32
FinishAfter
number
UInt32
Destination
string
AccountID
DestinationNode
string
UInt32
DestinationTag
number
UInt32
PreviousTxnId
string
HASH256
PreviousLedgerSequence
number
UInt32
SourceTag
number
UInt32
We propose these modifications:
Amount
Amount
Amount
NFTokens
array
STArray
2.1.1.
Amount
The
Amount
field is still used as it currently is, but it is now optional, to support escrows that only hold NFTs. AnEscrow
object must have anAmount
field and/or anNFTokens
field.2.1.2.
NFTokens
The NFTs that are in the escrow. One escrow can hold up to 32 NFTs, equivalent to one
NFTokenPage
.NFTs stored in an escrow cannot be burned (and cannot be modified either, if XLS-46 is enabled).
3. Transaction:
EscrowCreate
The
EscrowCreate
transaction already exists on the XRPL. We propose a slight modification to support NFT escrows.3.1. Fields
As a reference, these are the existing
EscrowCreate
fields:TransactionType
string
UInt16
Account
string
AccountID
Amount
Amount
Amount
Destination
string
AccountID
Condition
string
Blob
CancelAfter
number
UInt32
FinishAfter
number
UInt32
SourceTag
number
UInt32
DestinationTag
number
UInt32
We propose these modifications:
Amount
Amount
Amount
NFTokenIDs
array
STArray
3.1.1.
Amount
The
Amount
field is still used as it currently is, but it is now optional, to support escrows that only hold NFTs. AnEscrowCreate
transaction must have anAmount
field and/or anNFTokens
field.3.1.2.
NFTokenIDs
This field contains the
NFTokenID
s of theNFToken
s that the user wants to put in an escrow. There can be up to 32 NFTs in an escrow.Appendix
Appendix A: FAQ
A.1: Why not use a separate
NFTokenEscrow
object?That felt like an unnecessary complication and would involve a lot of repeated code.
A.2: Can I put XRP and NFTs in the same escrow?
Yes.
A.3: Why is this so much simpler than for issued currency escrows?
The complication with issued currencies is that they must be held by accounts in trustlines. There is currently no way for a ledger object (such as an escrow) to own another ledger object (such as a trustline).
NFTs have no such requirement - all that defines an NFT is the
NFTokenID
and theURI
, which can easily be held by an object instead of an account.Beta Was this translation helpful? Give feedback.
All reactions