MilestoneNFT is an on-chain reward system that issues NFTs for milestone achievements β ideal for recognizing contributions, performance, or project progress.
Each NFT represents a verified milestone and carries a unique metadata URI.
- Network: Testnet
- Contract Address:
0x573bC0fc396Cf1703C79090728eE27f416034297 - Standard: Custom ERC-721 (no imports)
- Compiler Version:
^0.8.19 - Admin: Hardcoded inside the contract (must be updated before deployment)
- License: MIT
β
No Imports / No Constructor β Fully self-contained contract
β
Admin-Controlled Minting β Only admin can issue milestone NFTs
β
ERC721-Compatible β Supports transfer, approvals, and balance tracking
β
Metadata Support β Each NFT can have a custom tokenURI
β
Milestone Tracking β Each NFT stores an on-chain milestone description
β
Base URI Customization β Admin can update base metadata URI
β
Burnable Tokens β Admin or owner can revoke NFTs
| Function | Description |
|---|---|
awardMilestoneNFT(address to, string uri, string milestone) |
Admin mints a new NFT as a reward for a milestone. |
setBaseURI(string newBase) |
Admin updates the base URI for metadata. |
milestoneOf(uint256 tokenId) |
Returns the milestone text associated with a token. |
transferFrom(address from, address to, uint256 tokenId) |
Transfer ownership of a token. |
burn(uint256 tokenId) |
Burn (revoke) an NFT β callable by admin or token owner. |
tokensOfOwner(address owner) |
Returns all token IDs owned by an address. |
- Admin awards milestone:
awardMilestoneNFT(0xUserAddress, "ipfs://QmHashOfMetadata", "Completed Phase 1");
- User checks their NFT:
tokensOfOwner(0xUserAddress); milestoneOf(tokenId); tokenURI(tokenId);
- Transfer NFT (optional):
transferFrom(0xUserAddress, 0xAnotherUser, tokenId); - Admin updates metadata (if needed):
setBaseURI("https://myproject-metadata.xyz/nft/");