Phygital v3 NFT Contract

Legitimate's Phygital v3 NFT contract is designed to allow multiple parties including Legitimate, third party developers or agencies, and the brands or creators themselves to work together and share permissions to interact with the contract on-chain.
Our NFT contract is open source and available here on GitHub:​


NFT contracts can be deployed by Legitimate or by third parties.
In the case of third party deployments, Legitimate's wallet (legitimatetech.eth) will need to be assigned the API_DELEGATE_ROLE in order to perform unlock and claim functionality for our hosted services. If token recovery and ownership reset is desired for processing returns or managing resales, the TOKEN_RECOVERY_ROLE should be assigned as well.


NFTs will be minted by Legitimate and made claimable if Legitimate is deploying the contract as well. As part of our hosted services, we can enable brands and creators to sell or give the end customer the items first without requiring wallets or crypto transactions.
The required NFT_MANAGER_ROLE permission can also be granted to third party wallets or smart contracts to directly manage the minting process.
Our contract can also be modified and extended for an on-chain mint directly by potential holders as well. In the case of web3 native projects, NFTs can be minted by the owner's wallet with some modifications to our contract permissions and the NFT will automatically enter a locked state. Required changes include making the mint() function publicly accessible and setting limitations such as wallet allowlists or maximum supply of tokens. The owner can then unlock the NFT when the physical item with the LGT Tag is received afterwards.

Metadata Management

NFT metadata is derived from a URL that contains a base_uri as well as a file name that corresponds with the tokenId or locked state.
The base_uri can be an IPFS folder or any HTTP/S folder containing files 1, 2, 3, ..., locked files in JSON format without the .json extension. Do not include the trailing / in the URI. The file locked in the folder is used instead of the respective file that corresponds to the tokenId when the NFT is in the locked state.
On the standard Phygital v3 NFT Contract, the NFT_MANAGER_ROLE is required to update the metadata URI.
Base URI examples:<folder-hash>
Metadata filename examples: