This project creates a smart contract and then deploys it to Rinkeby public testnet and Polygon mainnet.
NFT's can then be minted by sending transaction to the deployed smart contract.
Find out the NFT on Opensea minted on Polygon mainnet:
https://opensea.io/assets/matic/0x488049efd0a92f71046a62fcf994c8f990a1b87d/1
Find the NFT's on Opensea testnet:
https://testnets.opensea.io/assets/0x1e9930Bc5f39dE0515BeC52612bc4510F7B236C0/1
https://testnets.opensea.io/assets/0xD6c24c9A49271bFe5a04B00363EB521a02768bA1/1
NodeJS
https://nodejs.org/en/download/Ganache UI
https://www.trufflesuite.com/ganache
(Ganache UI is not required in case you want to work with ganache-cli)
-
Clone the repo and run npm install.
git clone https://github.com/neha01/nft-demo.git && cd nft-demo && npm install -
Put image file that you want to convert into an NFT under assets folder.
-
Create a account in Pinata (https://www.pinata.cloud/) and create an API Key.
Click on top right profile picture -> API Keys -> New Key
Note down The API Key and API Key Secret and update in .env file. -
Update the name of your image file in
assetsfolder.
UpdatefilePathwith your image filepath.
Runnode scripts/runScriptcommand.
This will call Pinata API's and will upload file to IPFS and a new file will be created indatafolderipfsHash.jsonand the Pinata response containing theipfsHashwill be populated in that file. -
Now create a metadata.json file with the details about your NFT. For Reference checkout data/metadata.json file . Update
filePathwith your metadata filepath. Again Runnode scripts/runScriptcommand. This will call Pinata API's and will upload metadata file to IPFS and the Pinata response containing theipfsHashwill be again populated inipfsHash.jsonfile. -
Install latest solidity version by running
npm install solcand Dont forget to update this solidity version in truffle-config. -
Update Rinkeby test network details in
truffle-config.js.
Update your account mnemonic in.envfile.
Now runtruffle console --network rinkebyto connect to Rinkeby Public test network.
Runmigratecommand to deploy the contract on Rinkeby testnet.
Runlet art = await ArtCollectible.deployed().
Runawait art.claimItem('https://ipfs.io/ipfs/QmREBUVuoeX39eB9KiQjp25RFr2dhYF6zawpYXq1UPJXEz')
Pass the correct metadata file IPFS address to claimItem.
Runart.addressto get contract address. -
Checkout your NFT on
https://testnets.opensea.io/assets/contract_address/tokenId.
You can also verify your metadata using on https://rinkeby-api.opensea.io/asset/contract_address/tokenId/validate
eg: https://rinkeby-api.opensea.io/asset/0x1e9930Bc5f39dE0515BeC52612bc4510F7B236C0/1/validate -
To deploy your NFT on polygon mainnet
Update MNEMONIC of your MATIC funded Metamask account in .env file.
Runnpx truffle migrate --network maticThis will deploy your contract to polygon mainnet.
Copy the deployed contract address and update it in .env file.
Pass your metadata file tokenURI in cliamItem in mintNft.js.
runnode scripts/mintNft.js -
Checkout your NFT on
https://opensea.io/assets/matic/contract_address/tokenId
Party!!🥳🥳

