Skip to content

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

Merged
mvadari merged 6 commits intoXRPLF:masterfrom
Transia-RnD:xls-35d
Sep 8, 2025
Merged

XLS-35d: URITokens — Lightweight first-class NFTs#110
mvadari merged 6 commits intoXRPLF:masterfrom
Transia-RnD:xls-35d

Conversation

@dangell7
Copy link
Contributor

@dangell7 dangell7 commented May 23, 2023

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: XRPLF/rippled#4456

@intelliot
Copy link
Contributor

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

@dangell7
Copy link
Contributor Author

dangell7 commented May 29, 2023

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.

@intelliot
Copy link
Contributor

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 intelliot changed the title XLS 35 Draft XLS-35d: URITokens — Lightweight first-class NFTs May 31, 2023
@dangell7
Copy link
Contributor Author

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.

@intelliot
Copy link
Contributor

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
Copy link
Contributor

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

@tequdev
Copy link
Member

tequdev commented Aug 20, 2023

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.

@intelliot
Copy link
Contributor

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

@tequdev
Copy link
Member

tequdev commented Nov 22, 2023

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

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

@joshuahamsa
Copy link
Contributor

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

@intelliot intelliot added the awaiting author blocked: pending response or changes from PR creator label Nov 13, 2024
@intelliot
Copy link
Contributor

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.

@mvadari
Copy link
Collaborator

mvadari commented Aug 20, 2025

@dangell7 do you still want to merge this PR?

dangell7 and others added 2 commits September 8, 2025 21:49
Co-authored-by: Mayukha Vadari <mvadari@gmail.com>
@mvadari mvadari merged commit 07b4075 into XRPLF:master Sep 8, 2025
2 checks passed
mvadari pushed a commit to mvadari/XRPL-Standards that referenced this pull request Sep 12, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting author blocked: pending response or changes from PR creator

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants