Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

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

XLS-35d/README.md Outdated Show resolved Hide resolved
XLS-35d/README.md Outdated Show resolved Hide resolved
XLS-35d/README.md Outdated Show resolved Hide resolved
@intelliot
Copy link
Collaborator

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
Collaborator

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
Collaborator

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
Collaborator

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

@tequdev
Copy link
Contributor

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
Collaborator

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

@tequdev
Copy link
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants