0046 XLS-46d: Dynamic Non Fungible Tokens (dNFTs) #130
Replies: 11 comments 17 replies
-
The flag description says that Perhaps only the |
Beta Was this translation helpful? Give feedback.
-
Correct! Thats a typo, will change! |
Beta Was this translation helpful? Give feedback.
-
Thanks @xVet for doing this, as a EVM developer (and XRPL enthusiast) I was longer than today wishing for this to become reality. In your example you are referring to a png as your URI. Isn’t a json not a better example as that holds all the attributes and properties? Second: Is it an option for NFT owner to not accept these changes? There are for sure great use cases, but seeing a prince turning into a frog (without my permission) is a showstopper (for me). And yes I know this is already common case on EVM chains (without permission). And does it also means the marketplaces or wallets need to incorporate a ‘refresh data’ function? Or are these changes picked up automatically? #keepbuilding |
Beta Was this translation helpful? Give feedback.
-
I think it only could work with Since NFTs are stored in On the other hand, if it is the issuer who tries to So, |
Beta Was this translation helpful? Give feedback.
-
For the |
Beta Was this translation helpful? Give feedback.
-
I'm generally supportive of this idea. I think it can unlock more use cases for NFTs beyond the traditional non-mutable use case. One particular use case I had in mind was for NFT reveals. Some collections like to sell their NFTs as hidden at first and then modify them to reveal them later. I think a feature that may be nice to have here in addition to your spec is to have a way to set a limit to the number of times an issuer or owner may modify the NFT after mint. In some cases like NFT reveals, limiting the issuer to up to one modification will provide more trust to the owner. Alternatively, if there is a way to allow the issuer or owner to give up their modification permissions at some point, it may achieve the same effect |
Beta Was this translation helpful? Give feedback.
-
I'm surprised that there has not been more discussion regarding who has the rights to modify the URI of an
There are consequences to the specific choices made here.
Thoughts? What am I missing here? |
Beta Was this translation helpful? Give feedback.
-
Just a quick note that the implementation has diverged from the spec regarding the Personally, I think the implementation got this one right. The My suggestion would be to modify the spec to say the |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
Thank you everyone who contributed to the discussion so far! I'll close this discussion by the end of this week, given its a already a well discussed Standard. |
Beta Was this translation helpful? Give feedback.
-
Closing the discussion here! The XLS PR can be found here: #205 Code PR can be found here: XRPLF/rippled#5048 |
Beta Was this translation helpful? Give feedback.
-
Abstract
This proposal aims to provide support for XLS-20 NFTs to modify/upgrade token properties.
XLS-20 provides -Non-Fungible Token- support, these tokens are immutable and don’t allow any changes. Currently NFTs can’t be modified, resulting often in new mints, which leads to ledger bloat that eat valuable resources as well as experimental approaches to use website endpoints to mimic dynamic abilities.
Apart from the use of immutable NFTs, there is a wide range of use cases around dNFTs (Dynamic Non-Fungible Tokens) which are considered mutable NFTs. The goal is to provide both options to developers and users to cover all aspects of non fungibility, while choosing the least invasive approach to achieve this functionality.
Motivation
Usually, NFTs are typically static in nature. A static NFT refers to an NFT that possesses unchanging and immutable characteristics stored on the blockchain, rendering them unmodifiable. These static NFTs encompass various forms like images, videos, GIF files, music, and unlockable components. For instance, an illustration of a basketball player making a shot into a hoop serves as an example of a static NFT.
On the other hand,
dynamic NFTs
, often abbreviated as dNFTs, represent the next phase in the evolution of the NFT landscape. Thesedynamic NFTs
seamlessly integrate the inherent uniqueness of NFTs with the inclusion of dynamic data inputs. These inputs can arise from calculations conducted either on the blockchain or off-chain.Oracles could supply dynamic real-world data to NFTs. To illustrate, a
dynamic NFT
might showcase real-time updates of a basketball player's performance statistics as they actively play.Specification
3. New Transactors and Flags
We will specify the following:
3.1 tfMutable
New flags for
NFTokenMint
:tfMutable
0x00000010
Allow issuer (or an entity authorized by the issuer) to modify “URI”.
3.2 NFTokenModify
NFTokenModify
is used to modify the URI property of a NFT:Transaction-specific Fields
TransactionType
✔️
string
UINT16
Indicates the
account
which is owning the NFT, in case ofaccount
not specified, it's implied that the submittingaccount
is also theOwner
of the NFT.Owner
string
ACCOUNT ID
Indicates the
NFToken
object to be modified.NFTokenID
✔️
string
UINT256
The new
URI
that points to data and/or metadata associated with the NFT.If a
URI
is omitted then the correspondingURI
record in the XRP ledger, if present, is removed.URI
string
BLOB
Example (modify URI):
If
tfMutable
is not set, executing NFTokenModify should fail!If
tfMutable
is set, executing NFTokenModify should fail when neitherIssuer
or anaccount
authorized viaNFTokenMinter
, according to the specific flag, is executing the transaction.This approach takes into consideration that
NFToken Flags
are part of theNFTokenID
, mutating anything that is part of theNFTokenID
must be avoided.Beta Was this translation helpful? Give feedback.
All reactions