AchievementNFT is a minimal, tradeable NFT contract designed to reward user achievements on-chain. Each NFT represents a specific milestone or recognition and can be freely traded, transferred, or bur
Contract Address: 0x79dfb127BdE60E6bDB945bD1eceAEC553b40a99b
Network: (Add your network — e.g. Sepolia / Polygon / BSC Testnet)
Symbol: ACHV
Standard: Minimal ERC-721 (No imports, No constructor)
AchievementNFT is a minimal, tradeable NFT contract designed to reward user achievements on-chain.
Each NFT represents a specific milestone or recognition and can be freely traded, transferred, or burned.
It uses a simple admin-based minting model — the admin can mint new NFTs to any address.
No libraries, no constructors, and no imports — fully self-contained and lightweight.
Feature | Description |
---|---|
🎨 ERC-721 Core | Implements all key functions like |
👑 Admin Controlled | Only admin can mint or batch mint new achievements. |
🏗️ No Constructor / Imports | Designed to be compatible with environments disallowing external imports. |
💸 Tradeable NFTs | Fully transferable via standard ERC-721 calls. |
🔥 Burn Function | Token owners or approved users can burn achievements. |
🧩 Metadata URI Support | Each NFT stores a custom |
🛡️ Safe Transfers | Implements minimal |
Step 1: Deploy the contract on Remix (no inputs needed).
Step 2: After deployment, call:
initializeAdmin(<your_wallet_address>)
This sets the admin who can mint achievements.
⚠️
initializeAdmin
can only be called once.
mintAchievement(address to, uint256 tokenId, string uri)
Mint a new achievement NFT to a user.
Only the admin can call this function.
Example:
mintAchievement(0x1234..., 1, "ipfs://achievement1-metadata")
batchMintAchievements(address[] tos, uint256[] tokenIds, string[] uris)
Mint multiple achievements at once to different users.
Example:
batchMintAchievements(
[0x1111..., 0x2222...],
[1, 2],
["ipfs://achv1", "ipfs://achv2"]
)
transferFrom(address from, address to, uint256 tokenId)
Transfer ownership of a token to another user (standard ERC-721).
Example:
transferFrom(0x1111..., 0x2222..., 1)
burn(uint256 tokenId)
Allows the owner or approved address to destroy (burn) an achievement NFT.
changeAdmin(address newAdmin)
Admin-only function to change the admin address.
Function | Description |
---|---|
| Returns number of NFTs owned. |
| Returns current owner of token. |
| Returns metadata URI. |
| Shows approved address for a token. |
| Checks operator approvals. |
| Returns if a token exists. |
Initialize Admin
initializeAdmin(0xYourAdminAddress)
Mint New Achievement
mintAchievement(0xUserAddress, 1, "ipfs://achievement-metadata")
Transfer Between Users
transferFrom(0xUserAddress, 0xAnotherUser, 1)
Burn (Optional)
burn(1)
Field | Value |
---|---|
Contract Address |
|
Token Name | Achievements |
Symbol | ACHV |
Version | v1.0 |
Verified Source | ✅ Solidity 0.8.20 |
License | MIT |
Tokens are fully tradeable (not soulbound).
Each achievement can have a unique metadata URI (IPFS, Arweave, HTTPS).
Gas usage is optimized for simplicity and transparency.
No external libraries — works entirely on Solidity core.
{
"name": "Top Performer Badge",
"description": "Awarded for outstanding performance.",
"image": "ipfs://QmExampleImage",
"attributes": [
{ "trait_type": "Level", "value": "Gold" },
{ "trait_type": "Category", "value": "Productivity" }
]
}
Project: AchievementNFT
Maintainer: Admin wallet set via initializeAdmin
Version: 1.0
Network Address: 0x79dfb127BdE60E6bDB945bD1eceAEC553b40a99b