Write Your First NFT
Prerequisites
Before you begin, ensure you have the following:
Git: Used for code management and obtain examples.
Node.js: Install it from nodejs.org.
Pharos Devnet/Testnet Access: Access to a Pharos node (local or remote) for interacting with the blockchain.
Setup 1: Install Hardhat
Setup 2: Set Up the Project
Clone the example repo:
git clone https://github.com/PharosNetwork/examples
cd examples/nft/hardhat/contract
Install OpenZeppelin Contracts:
npm install
Setup 3: Write the NFT Contract
Create a New Solidity File:
Create a new file for your NFT contract:
touch contracts/Token.sol
Write the Token Contract:
Open
contracts/Token.sol
in your favorite text editor and add the following code:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract Token is ERC721 {
uint256 id;
constructor() ERC721("Token", "MTK") {}
function mint(address to) public returns (uint256) {
id += 1;
_mint(to, id);
return id;
}
}
Compile the Smart Contract:
npx hardhat compile
Test the Smart Contract
npx hardhat test
Step 4: Deploy the Token Contract
Set the private key:
npx hardhat vars set PRIVATE_KEY
Deploy the Contract:
npx hardhat ignition deploy ./ignition/modules/Token.js --network pharos
Step 5: Verify the Token Contract
Add the following content to your hardhat.config.js
file
chain_name
pharos
chain_id
688688
rpc_endpoint
https://testnet.dplabs-internal.com
api_host
https://api.socialscan.io/pharos-testnet/v1/explorer/command_api/contract
explorer_url
https://testnet.pharosscan.xyz/
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.28",
networks: {
pharos: {
url: "https://testnet.dplabs-internal.com",
accounts: [vars.get("PRIVATE_KEY")],
},
},
etherscan: {
customChains: [
{
network: "pharos",
chainId: 688688,
urls: {
apiURL: "https://api.socialscan.io/pharos-testnet/v1/explorer/command_api/contract",
browserURL: "https://testnet.pharosscan.xyz/",
},
},
],
apiKey: {
pharos: "Put a random string", // Note we don't need a apiKey here, just leave a random string
},
}
};
Run the hardhat verify command
npx hardhat verify --network pharos <contract_address> <constructor_args_params>
Troubleshooting
Contract Deployment Fails: Ensure you have enough testnet tokens to cover the deployment cost.
Interaction Issues: Verify that the contract address and ABI are correct.
Insufficient Balance: Ensure your wallet has enough tokens to transfer.
Conclusion
Now that you’ve created and deployed your first NFT using Hardhat.
This guide provides a comprehensive introduction to to creating and deploying an NFT on the Pharos blockchain. If you encounter any issues, refer to the Troubleshooting section or consult the Hardhat documentation. Happy building! 🚀
Last updated