XRPL-Standards icon indicating copy to clipboard operation
XRPL-Standards copied to clipboard

XLS-35d: URITokens — Lightweight first-class NFTs

Open dangell7 opened this issue 2 years ago • 11 comments

URITokens are Non-Fungible Tokens (NFTs) that exist as first-class on-ledger objects. They are uniquely identified by the hash of their issuer and Uniform Resource Identifier (URI), and can point to any digital content. Only one object per URI per account can exist on the ledger. The Issuer can set a flag to enable burning of the object in the future. Each owner's reserve is locked up as well upon ownership of the URIToken. They include the transaction types; mint, burn, buy, create sell offer, and cancel sell offer. Additionally, when minting a URIToken, users can choose whether or not to include a SHA-512 Half hash of the URI's contents to ensure data integrity.

See the spec (in Files changed) for full details.

Proposed implementation: https://github.com/XRPLF/rippled/pull/4456

dangell7 avatar May 23 '23 18:05 dangell7

Could you write a one-paragraph explanation of what URITokens are, from first principles, without mentioning XLS-20?

intelliot avatar May 28 '23 23:05 intelliot

Could you write a one-paragraph explanation of what URITokens are, from first principles, without mentioning XLS-20?

URITokens are Non-Fungible Tokens (NFTs) that exist as first-class on-ledger objects. They are uniquely identified by the hash of their issuer and Uniform Resource Identifier (URI), and can point to any digital content. Only one object per URI per account can exist on the ledger. The Issuer can set a flag to enable burning of the object in the future. Each owner's reserve is locked up as well upon ownership of the URIToken. They include the transaction types; mint, burn, buy, create sell offer, and cancel sell offer. Additionally, when minting a URIToken, users can choose whether or not to include a SHA-512 Half hash of the URI's contents to ensure data integrity.

dangell7 avatar May 29 '23 16:05 dangell7

Only one object per account can exist on the ledger.

I think you mean "Only one object per URI per account can exist on the ledger." ?

Additionally, when minting a URIToken, users can choose whether or not to include a SHA-512 Half hash of the URI's contents to ensure data integrity.

Aside from "data integrity", does this also make the JSON document immutable?

intelliot avatar May 30 '23 20:05 intelliot

Only one object per account can exist on the ledger.

I think you mean "Only one object per URI per account can exist on the ledger." ?

Additionally, when minting a URIToken, users can choose whether or not to include a SHA-512 Half hash of the URI's contents to ensure data integrity.

Aside from "data integrity", does this also make the JSON document immutable?

It would essentially make the json immutable but only through a verification. If I used a URI that pointed to an IPNS then I could essentially change the json data, but then the digest check would be incorrect. So I don't know if saying "makes it immutable" is right.

Also, I updated the uri duplicate nomenclature.

dangell7 avatar May 31 '23 21:05 dangell7

I see. The explanation is helpful and looks good to me. I recommend adding it to the spec near the top in a section called "Abstract".

The Abstract is a summary of the contents of the spec. The Abstract is part of the recommended template.

intelliot avatar Jun 01 '23 00:06 intelliot

Recommend adding a link to the proposed implementation in the spec.

intelliot avatar Jun 01 '23 00:06 intelliot

What about being able to create an Offer at the same time during URITokenMint?

It would be possible to set the sfAmount and sfDestination when creating the URIToken object.

tequdev avatar Aug 20 '23 03:08 tequdev

@dangell7 - feel free to review the comments/questions above, at your convenience

intelliot avatar Aug 31 '23 18:08 intelliot

It looks like Amount and Destination fields are implemented in URITokenMint on Xahau.

https://docs.xahau.network/technical/protocol-reference/transactions/transaction-types/uritokenmint

tequdev avatar Nov 22 '23 12:11 tequdev

If the reserves for ledger objects stay at 2 XRP per, this seems like it would be cost prohibitive.

joshuahamsa avatar Jun 06 '24 16:06 joshuahamsa

If the reserves for ledger objects stay at 2 XRP per, this seems like it would be cost prohibitive.

As of 2 December 2024, the Mainnet "reserve_inc_xrp" has reduced to 0.2.

intelliot avatar Jan 15 '25 01:01 intelliot

@dangell7 do you still want to merge this PR?

mvadari avatar Aug 20 '25 20:08 mvadari