diff --git a/CIP-0054/README.md b/CIP-0054/README.md new file mode 100644 index 000000000..20441bff3 --- /dev/null +++ b/CIP-0054/README.md @@ -0,0 +1,227 @@ +--- +CIP: 54 +Title: Cardano Smart NFTs +Authors: Kieran Simkin +Comments-URI: https://forum.cardano.org/t/cip-draft-cardano-smart-nfts/100470 +Status: Draft +Type: Standards +Created: 2022-05-18 +License: CC-BY-4.0 +--- +# Cardano “Smart NFTs” + +## Abstract + +This CIP specifies a standard for an API which should be provided to Javascript NFTs, it also defines some additions to the 721 metadata standard defined in [CIP-0025](https://github.com/cardano-foundation/CIPs/tree/master/CIP-0025) which allow an NFT to specify it would like to receive certain current information from the blockchain. + +Currently if an NFT creator wishes to change or otherwise “evolve” their NFT after minting, they must burn the token and re-mint. It would be very nice if the user were able to modify their NFT simply by sending it to themselves with some extra data contained in the new transaction metadata. This would allow implementation of something like a ROM+RAM concept, where you have the original immutable part of the NFT (in Cardano’s case represented by the original 721 key from the mint transaction), and you also have a mutable part – represented by any subsequent transaction metadata. + +It would also be nice to be able to retrieve data that has been previously committed to the blockchain, separately to the NFT which wishes to access it. This would be useful for retrieving oracle data such as current Ada price quotes – as well as for allowing an NFT to import another NFT’s data. + +Further to this - for on-chain programatically generated NFTs, it makes sense to mint the code to render the NFT as one token, and then have the individual NFTs contain only the input variables for that code. This CIP specifies an additional metadata option which specifies that an NFT should be rendered by another token - this will massively reduce code duplication in on-chain NFTs. + +This combination of functionality enables many exciting new possibilities with on-chain NFTs. + +## Description: + +Currently the NFT sites which support on-chain Javascript NFTs do so by creating a sandboxed `