feat: Implement a comprehensive, standards-compliant NFT contract #357
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #342
I've Implemented a full Soroban NFT contract module set with roles, mint/burn/transfer/approval, metadata + royalties, batch ops, pause/whitelist/reveal controls, events, interface detection, and basic tests under nftopia-stellar/contracts/nft_contract/src.
The contract now has explicit storage/layout and helpers to support provenance tracking and safe transfers with receiver validation.
Key changes and locations:
Notes:
safe_transfer_from calls on_nft_received on contract recipients and requires true to proceed.
token_uri falls back to base_uri when unrevealed or when token URI is empty.
Royalties are computed via get_royalty_info (EIP-2981-style); actual payment remains a marketplace responsibility.