On Near Protocol , NFTs are not stored in the user's wallet, instead, each NFT lives in a NFT contract. The NFT contract works as a bookkeeper, this is: it is in charge of handling the creation, storage and transfers of NFTs.
In order for a contract to be considered a NFT-contract it has to follow the NEP-171 and NEP-177 standards. The NEP-171 & NEP-177 standards explain the minimum interface required to be implemented, as well as the expected functionality.
spec : a string that MUST be formatted nft-n.n.n where "n.n.n" is replaced with the implemented version of this Metadata spec.
name : the human-readable name of the contract.
symbol : the abbreviated symbol of the contract.
icon : a small image associated with this contract. Encouraged to be a data URL.
base_uri : Centralized gateway known to have reliable access to decentralized storage assets referenced by reference or media URLs. Can be used by other frontends for initial retrieval of assets, even if these frontends then replicate the data to their own decentralized nodes, which they are encouraged to do.
val accountId ="nft.waltid.testnet"val ownerId ="waltid.testnet"val chain ="testnet"val result = NearNftService.deployContractWithCustomMetadata( account_id = accountId, owner_id = ownerId, spec ="nft-1.0.0", name ="My NFT", symbol ="NFT", icon ="", base_uri ="", reference ="", reference_hash ="", chain = chain, )println("operation result: $result")