Technical Requirements:
Overall System:
- Points will be on Optimism and NFTs will be on Base.
- Users can earn points every 5 minutes by playing a “Spin-the-Wheel” type of game.
- Cross chain transaction will be invoked to distribute tokens
- Points can be redeemed for NFTs
- Points will be transferred cross-chain to the NFT smart contract on Base, which will distribute the NFTs
- NFTs can be burned for points
- NFTs can be burned which will mint tokens on Optimism
Token System:
- Network: Optimism
- Use PolyERC20 smart contracts for managing tokens.
- Use phase2NFT for NFT Distribution
- Allow users to earn points through tasks or games, and spend points on NFTs or the randomizer.
- Faucet Contract:
- Implement a faucet contract enabling users to claim a maximum of 10 tokens per 5 min.
- Control Faucet Contract through a gamified faucet “Spin-the-Wheel” Contract which randomly determines the amount which faucet sends to the user
NFT System
- Create PolyERC721 - Can use template from Challenge 4
- NFT Specifications:
- Implement smart contracts to manage four distinct NFTs (NFT1, NFT2, NFT3, NFT4) with specified circulation and point values.
- NFT1: 25 tokens.
- NFT2: 50 tokens.
- NFT3: 75 tokens.
- NFT4: 100 tokens.
- Points will be distributed as follows
- NFT 1: 10 Points
- NFT 2: 50 Points
- NFT 3: 150 Points
- NFT 4: 500 Points
- Bonus - All 4: 2000 Points
- Network: Base
- NFT Burn Mechanism:
- NFTs must be burnable. Upon burning, PolyERC20 tokens are redistributed to the user.
- Restriction on NFT Trading:
- Ensure NFT cannot be traded between accounts; they can only be burned.
- User NFT Holdings:
- Ensure users can hold a maximum of 4 NFTs simultaneously.
- Implement functionality for users to return NFTs to circulation, receiving a 20% point refund.
- NFT 1: 5 tokens refund
- NFT 2: 10 tokens refund
- NFT 3: 15 tokens refund
- NFT 4: 20 tokens refund
- Randomizer Purchase:
- Enable users to spend 60 tokens to purchase a randomizer, which awards an NFT from the total circulation at random.
- NFT Implementation Details
- NFTs will be minted upon purchase of either an individual NFT or a randomizer
- Randomizer should partition the following percentages to what NFT is allocated:
- NFT 1: 40%
- NFT 2: 30%
- NFT 3: 20%
- NFT 4: 10%
- NFT Contract will burn Polymer Testnet Tokens upon receiving it to mint the NFT
User Flows
-
Obtain Polymer Testnet Tokens
-
Spinner is pressed → allocation is landed on
-
Invoke a function on Optimism → sends packet to Base
-
Base contract sends ack back to Optimism
-
Optimism transfers tokens to user upon ack
-
Purchase NFTs or Random NFT with Polymer Testnet Tokens
-
User calls
-
View NFTs
-
Burn Duplicate NFTs
-
View a Leaderboard based on the points score
Frontend Development:
Landing Page
Faucet Flywheel Page
Buy NFT Page
NFT Portfolio
Tasks to Earn Points from the Faucet:
- Complete Mini-Games:
- Spin-Wheel / Slots Game
Conclusion:
These technical requirements and tasks are designed to create a balanced ecosystem that promotes user engagement through gameplay, educational content, and community involvement. By integrating these elements seamlessly, you can foster a vibrant community around your game while highlighting the unique features of cross-chain NFT minting and distribution.