0046 XLS-46d: Dynamic Non Fungible Tokens (dNFTs) #130
Replies: 6 comments 9 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.
-
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 lsfMutable
New flags for
NFTokenMint
:lsfMutable
0x00000016
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.Account
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.URI
✔️
string
BLOB
Example (modify URI):
If
lsfMutable
is not set, executing NFTokenModify should fail!If
lsfMutable
is set, executing NFTokenModify should fail when neither Issuer or Owner (or an authorized entity), 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