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

feat(platform)!: basic nft support #1829

Merged
merged 71 commits into from Apr 25, 2024
Merged

feat(platform)!: basic nft support #1829

merged 71 commits into from Apr 25, 2024

Conversation

QuantumExplorer
Copy link
Contributor

@QuantumExplorer QuantumExplorer commented Apr 22, 2024

Issue being fixed or feature implemented

This PR implements the basic needs that were missing from supporting NFTs.
These are the ability to set the price of a NFT (document) and then have a purchaser pay that requested price to acquire the asset.

NFT stands for Non Fungible Token. NFTs in Dash can be bought and sold if the data contract specifies so.

What was done?

In this PR we also added the ability to restrict documents to only be created by the owner of the contract if this is specified in the contract.

How Has This Been Tested?

Breaking Changes

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have added or updated relevant unit/integration/functional/e2e tests
  • I have added "!" to the title and described breaking changes in the corresponding section if my code contains any
  • I have made corresponding changes to the documentation if needed

For repository code-owners and collaborators only

  • I have assigned this pull request to a milestone

QuantumExplorer and others added 30 commits April 18, 2024 18:47
…try_from_schema/v0/mod.rs

Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
…ment.rs

Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
…on/state_transitions/documents_batch/action_validation/document_transfer_transition_action/structure_v0/mod.rs

Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
…on/state_transitions/documents_batch/action_validation/document_delete_transition_action/structure_v0/mod.rs

Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
…on/state_transitions/documents_batch/action_validation/document_replace_transition_action/structure_v0/mod.rs

Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
@qwizzie
Copy link

qwizzie commented Apr 25, 2024

I think NFT support should not be rushed into Platform v1.0 like this (on the Dash Roadmap both Fungable tokens and NFT support are reserved for Platform 2.0, not Platform 1.0). With the current Platform storage size restrictions (due to a fear of possible misuse of Platform to store 'illegal data') already preventing Dash users to store their Platform Identity profile picture directly on Drive with the MVP version of Platform (Platform 1.0), i think this NFT basic support feature will be pretty difficult to promote to Dash users (as NFT images themselves currently can't be stored on Drive).

If this NFT basic support feature just serves as a framework for future NFT implementation, i think its too disruptive to other developers right now, who will need to analyze 5000 lines of additional code and suggest changes, all a few months before release of Platform v1.0 and on a feature thats not even on their immediate todo list.

I also think Evonode owners should have a say in this NFT support, by voting it in through a Evonodes network polling vote after activation of Platform 1.0 on Dash Mainnet. This depends on the Masternode Voting feature, which unfortunetely is still not finished.

If we want NFT support, we should do it the right way : implementing it after a solution has been found or consensus has been reached to what kind of data we want to store on Drive (all data ? certain data ? the ability to exclude certain 'illegal data' ?) and after the Platform storage size restrictions have been lifted.

@QuantumExplorer
Copy link
Contributor Author

m v1.0 like this (on the Dash Roadmap both Fungable tokens and NFT support are reserved for Platform 2.0, not Platform 1.0). With the current Platform storage size restrictions (due to a fear of possible misuse of Platform to store 'illegal data') already preventing Dash users to store their Platform Identity profile picture directly on Drive with the MVP version of Platform (Platform 1.0), i think this NFT basic support feature will be pretty difficult to promote to Dash users (as NFT images themselves currently can't be stored on Drive).

You might have some misconceptions about NFTs in blockchain, NFTs described in https://eips.ethereum.org/EIPS/eip-721 are just an identifier to other data in this case they are described as a token id uint256 (32 bytes). In our system our NFTs have slightly more capabilities as they represent not only the identifier but the document, that itself can have references. In either case pictures or other blobs of data are not inside the NFT, even though the NFT can reference them. This is pretty standard across blockchains.

This isn't an afterthought either. This has been well thought out over years of development. Not having NFTs at release didn't make sense when the amount of work was so little. There was massive upside on having this feature, with little to no downside.

QuantumExplorer and others added 14 commits April 25, 2024 18:10
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
…try_from_schema/v0/mod.rs

Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
…ation/mod.rs

Co-authored-by: Paul DeLucia <69597248+pauldelucia@users.noreply.github.com>
pauldelucia
pauldelucia previously approved these changes Apr 25, 2024
@QuantumExplorer
Copy link
Contributor Author

Yay, we now have NFTs.

@QuantumExplorer QuantumExplorer merged commit 377087b into v1.0-dev Apr 25, 2024
89 checks passed
@QuantumExplorer QuantumExplorer deleted the feat/nftSupport branch April 25, 2024 12:35
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

3 participants