0020 XLS-20d Non-Fungible Token Support (native) #46
Replies: 74 comments 145 replies
-
|
Digesting this, but from my initial read, looks pretty awesome! |
Beta Was this translation helpful? Give feedback.
-
|
Should we allocate a draft number? Looks like |
Beta Was this translation helpful? Give feedback.
-
|
I suspect we need to clarify rules for the
In general the details on the |
Beta Was this translation helpful? Give feedback.
-
|
Regarding the question of the identifier of an Use the |
Beta Was this translation helpful? Give feedback.
-
|
Interesting NFT spec:
One general comment - as we scale we should consider allowing for off-chain message signing for use on-chain. This means we will be able to do offchain orderbooks and onchcian execution to reduce offercreate noises. |
Beta Was this translation helpful? Give feedback.
-
|
It feels like this standard is very close to enabling an on-ledger software licensing model. @WietseWind have you considered what issuing a XUMM Pro license via NFT would look like? I don't think that you could pull off a subscription based licensing model with this standard, but the ability to profit off of every secondary market transaction seems very appealing. |
Beta Was this translation helpful? Give feedback.
-
|
This is really interesting! I like the idea of the native support of NFTs on the XRPL. |
Beta Was this translation helpful? Give feedback.
-
Really wrestling with this part. I don't have any experience with the IPFS, so that's probably slowing me down. I can envision a NFT's that are "minimally invasive" that the ledger should be able to accommodate directly on chain. I don't know what that limit is (128 characters?) but I can easily see something like ownership of virtual land being nothing more than a hash and some coordinates. Seems a shame to necessitate a pointer off-ledger for something so simple. |
Beta Was this translation helpful? Give feedback.
-
|
The paper sounds plausible in itself, but I think the part with the external references still needs to be clarified. Offchain data storage in particular has some pitfalls in the context of data management, such as trustworthiness, rights management, data integrity and data security. A simple link is usually not enough. You should therefore pay particular attention to the secure connection to external data services. IPFS sounds promising at first, especially for NFTs (Hash of Content eq. Address), but I am currently not clear about how IPFS itself regulates data access restrictions. I think it is unfavorable if all data content is publicly available one way or another. But in the end this is also part of the NFT's rights policy and order of responsiblity. |
Beta Was this translation helpful? Give feedback.
-
|
Excited to see the possibilities of NFTs on XRPL. I am working on CO2 Bonds/Conservation NFTs and would love to learn if something like this https://github.com/BooneTB/CO2StakingBonsai/blob/main/CarbonBOND |
Beta Was this translation helpful? Give feedback.
-
|
I've got an Social Media prototype using ethereum hybrid 721's.... Every asset uploaded is a "721" contract but can also hold a token balance. I call my tokens SAMY. Every view on the asset reduces the token balance by one, paid to the "viewer" Every comment/like, adds a token to the balance, paid by the "commenter/liker". A simple basic decentralized way to measure engagement and reward users. I stripped the ETH protocol today and I'm going to try to add the XRP protocol features for NFT. I did have one question. Smart Contracts on ethereum can hold value, I view this feature in XRPL as just the wallet that holds the value. Sure, the functionality of the code doesn't reside inside the wallet on XRPL, but by using multi sign, I can basically create the same idea and did this using a swift class if anyone is interested. Is there a better way to achieve this? I know you just released hooks but to be honest I've been head down in my ethereum private blockchains. I like XRP more tho. Would love to discuss. |
Beta Was this translation helpful? Give feedback.
-
|
Would it be possible for a |
Beta Was this translation helpful? Give feedback.
-
|
When minting an NFT it looks like there are 2 routes that can be taken from a 3rd parties perspective. Example: Website A wants to offer the ability for users to create NFTs. Website A must either:
Is this correct? What are the downsides for setting User B, User C, User D, as issuers when they mint their own NFTs and not setting Website A as the issuer? |
Beta Was this translation helpful? Give feedback.
-
|
Great proposal! I think this is a solid step towards supporting NFTs on XRPL. I have a question about These objects are updated automatically with If so, what possible use cases could there be for having the ability to change this object outside of a mint or burn transaction? |
Beta Was this translation helpful? Give feedback.
-
|
I've been thinking a little more about this proposal and would like to suggest a change that should make NFT objects even more lightweight. Currently, an NFT contains both a 20-byte issuer and a 32-byte hash, for a total of 55 bytes. The 32-byte hash is meant to distinguish this NFT from any other, but in reality it only adds trouble. For example, an issuer could "double-issue" a token, and there's no way for the ledger to detect this, much less prevent it. Maybe that's fine, of course; maybe issuers shouldn't shoot themselves in the foot, but the spec is meant to allow for "non-fungible" tokens and yet it allows for the creation of binary-identical objects. What does it mean when have two "non-fungible" tokens that are identical and cannot be distinguished? What if we were to add an additional field: a "serial number" of sorts. But what to set it to? Well, the transaction's sequence number seems reasonable. It's never reused, so it works. It means that even if the issuer reuses the hash, the two resulting NFTs are distinct. This causes trouble with the mint account, but we can solve this by adding a new optional field to the account root: a 64-bit number But if we're going to do that, why even have a 256-bit identifier? Why not just treat the pair And this also enables something else that's really neat: we can create semi-fungible tokens. We can simply add an optional 32-bit field to an NFT, let's call it So, now we can use Let's say the issuer wants to issue an NFT to represent a limited edition album. They can assign that album a unique 32-bit number, and issue any number of tokens which are all "linked": |
Beta Was this translation helpful? Give feedback.
-
|
Unfortunately that is not possible given the directory structure of NFTs.
That structure was chosen for performance, and to reduce reserve
requirements for end-users. This is just an example of dev tradeoffs, but
Clio is able to fill in the gap.
…On Wed, Apr 20, 2022 at 4:19 PM Julian Gums ***@***.***> wrote:
Clio seems like a great tool but arguably looking up who a given NFT
belongs to seems to be something that is so common that it would be great
if it was natively supported.
—
Reply to this email directly, view it on GitHub
<#46 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/ABXUFDOSR5MBJD6BHDANFSLVGBRERANCNFSM45N47IJA>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
Owner test with regards to accepting buy offers. The following describes a simple flow to demonstrate the somewhat counterintuitive role of the Owner field with regards to the creation of NFToken Buy Offers on the XRPL. This counterintuitive behaviour can be attributed to the premise that the requirement of an Owner field in the NFTokenCreateOffer transaction ensures that such an offer may only be accepted by the address specified in the owner field. The flow described below, however, reveals that this is not the case: Account 1 creates offer for 100 XRP with owner Account 3 Account 2 creates offer for 100XRP with owner Account 3 Account 3 accepts Account 2’s offer Account 2 accepts Account 1’s offer Following from the above described premise, Account 2 should not have been able to accept Account 1’s offer on the principle that Account 1’s offer was made with the Owner field specified as the address of Account 3. The conclusion, thus, is that the Owner field is significant only when a buy offer is being created. Assigning the Owner field with an address that is not the current owner of the NFT prevents that offer from being successfully made, but does not appear to have any further behaviours or interactions. That is to say, the Owner field does not prevent buy offers from being accepted by a ‘new’ owner whose address is different from the ‘original’ owner address which was used to create that buy offer. |
Beta Was this translation helpful? Give feedback.
-
|
@scottschurr When transferring an NFT would all the past orders for that token id owned by XYZ be "destroyed" or is it up to the user client or rpc indexing to handle this? |
Beta Was this translation helpful? Give feedback.
-
|
Hi guys, I have written up a new proposal to expand on the XLS-20d proposal for NFTs. The change would help owners manage the NFT's they have in there wallets and also mitigate some potential bad user experience and negative feedback on how NFT's work in XRPL. It would be good if you take a look, comment and hopefully up-vote my proposal. |
Beta Was this translation helpful? Give feedback.
-
|
Suggested edits to align the standard with the implementation, prior to moving XLS-20d from draft to final: 1.2.1.1.1.4 Example
Example TokenPage JSON
The NFTokenMint transaction
Example NFTokenMint transaction
The NFTokenBurn transaction
1.3. Account Root modifications
1.3.3 BurnedNFTokens
1.4.1.1. NFTokenOfferID Format
1.5.4.1. Fields
|
Beta Was this translation helpful? Give feedback.
-
|
I minted NFTs on behalf of other account. I used Account A and minted for Account B. |
Beta Was this translation helpful? Give feedback.
-
|
Hello |
Beta Was this translation helpful? Give feedback.
-
|
I've come across an issue. It is very easy to create buy offers from unfunded accounts. Here is one I have done for 250M XRP. Obviously I don't have that, even in devnet. https://xls20.bithomp.com/explorer/18B9E787507DD6EA61874BD1E8EA6C61E41825B343542F3FCE97C1666CD899F0 These buys orders generate a tech unfunded error on the sell side. |
Beta Was this translation helpful? Give feedback.
-
|
I'm not sure how the NFTokenPage concept works on an atomic level but I noticed that they never get completely filled with NFTs. Initially, I thought they always fill up to 32 but I'm seeing token pages with 17-29 NFTs in them when I mint. If I mint the same things twice, I get the same amount of pages so it does not seem random but there seems to be a deterministic algorithm for it. But how? How can I work out if I am going to mint x amount of NFTs, how much reserve I will need? Or does this depend on the exact NFTokenIDs as it seems like this is some kind of indexing issue and an NFTokenID can either fit into a page or it can't, based on how high/low it is and a new one needs to be created? Anyone that can explain? |
Beta Was this translation helpful? Give feedback.
-
|
I know that this is already active/enabled on mainnet, but just for the sake of having this documentation correct, I propose following changes to original post:
That is actually not true. So actually the transfer fee is wrong. Also, in the same section, you are showing how tokenId is calculated. With flags as first for characters etc. 000B => Flags: 11, not 12. We cannot have flags with value of 12. |
Beta Was this translation helpful? Give feedback.
-
|
Note for future readers: This spec has been implemented and adopted, and is being updated and approved here: #95 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
An updated version of this spec can be found here: XLS-20: Non-Fungible Token Support.
The earlier version can be found by looking at the edit history.
Beta Was this translation helpful? Give feedback.
All reactions