For the Chainlink hackathon, our team set out to explore ways to challenge the traditional rarity/scarcity aspect of NFTs. We have seen that NFTs have a higher perceived value when there is less in circulation as collectors are willing to pay more in auctions for NFTs with lower mint counts. Oftentimes the vast majority of collectors are priced out and are not able to obtain the rarer pieces due to their prices. With our project, we wanted to level the playing field for collectors so that not just those with the most funds are able to obtain the rarest pieces.
Nifty Royale is a platform that aims to be a NFT marketplace with a gamification element. A battle royale game is executed on-chain to determine a winner who will receive a one-of-a-kind NFT as the prize.
The marketplace will consist of both curated primary sales (“drops”) and a secondary market for peer-to-peer trading of NFTs. For each drop, limited editions of original artwork by an artist will be minted as NFTs and be available for sale at a fixed price during the initial sales period.
At the conclusion of the initial sale, all NFTs purchased will be entered into the battle royale game. NFTs will be eliminated one by one until there is one NFT left to be crowned as the winner. Chainlink VRF will be used as the source of randomness and the Keeper network will initiate the eliminations to ensure that the process is fair and tamper-proof. The winner of the battle royale will then be rewarded with an upgraded NFT that is based on the original artwork and is the only one of its kind minted. In the meanwhile, all the other collectors who have purchased from the curated drop are going to own the base NFTs.
What it does
For the submission of the hackathon, our team focused on building an MVP of the back-end and front-end UI of the battle royale game.
- X number of base NFTs will be minted for each battle royale game.
- To differentiate the base NFTs they each have a serial number and vary in the color of the backgrounds.
- Each piece of NFTs will have a property within its metadata to indicate its status in the battle royale, which will be updated as the competition goes on. To start all NFTs are minted with an active status.
- As NFTs are eliminated their metadata will be updated to reflect the eliminated status as well as to provide placement # to indicate how far each NFT has made it through the battle royale.
- On the status page, once an NFT has been eliminated, a visual indication (e.g a dripping checkmark) will be added to indicate that it has been eliminated.
- Once there is only one NFT remaining, it will be declared as the winner and its status will change accordingly. The winner will be rewarded with an upgrade of the NFT.
- On the status page, a user is able to view the real-time status of the NFTs that he/she owns in the battle royale by connecting their metamask account through the UI.
How we built it
Nifty Royale is comprised of 2 contracts deployed on the blockchain and leverages Chainlink node features in order to execute the game mechanics. OpenSea is used to request data of the NFTs within an angular web app along with WebJS to interact directly with the BattleRoyale contract. OpenSea or any other 3rd party NFT auction site could be used to run the initial sales of the NFTs. IPFS is the off-chain data source to store and request the token metadata.
- Royale NFT contract: used for minting the NFT tokens
- BattleRoyale contract: used for calling the Royale contract, keeping track of the state of the game, and executing the game mechanics
- Chainlink Keeper Network: used to execute the elimination function over a period of time
- Chainlink VRF (Verifiable Random Function): used to generate a random index for eliminating a token in play
- All back-end contracts can be located in this repo
- Web3.JS: used in the web app for making ABI calls to the BattleRoyale contract; repo can be found here
- OpenSea: for auctioning and sale of the NFT tokens
- IPFS: used for storing NFT token meta-data off-chain in a decentralized source
Challenges we ran into
- Updating Metadata: We are still exploring what will be the best way to update the NFT metadata as the battle royale elimination mechanism is being iterated.
- Availability of services on testnets: Currently the Chainlink Keeper network is only available on the Kovan testnet whereas the OpenSeas API/SDKs are only available on the Rinkeby testnet. As we plan to use both for our mainnet launch we have to split out testing of different parts of our platform on different testnets.
- Commercialization challenges: For production, the cost of minting NFTs on the Ethereum mainnet and using the Chainlink VRF/Keeper is considerably expensive, which limits the scalability of the project. At the current rate of gas expenses, only sales of high-value and high-priced NFTs are commercially viable. The team is looking into Layer 2 protocols such as Matic/Polygon to mitigate the risk of high operational costs in the near future.
Accomplishments that we're proud of
We assembled a team of four across three countries within a week. Despite the time difference and commitment of daytime jobs, the team has been well-organized and committed from the very beginning. We started out developing a few ideas through brainstorming sessions. After we connected with an artist, @Lushsux, we evaluated his proposition and quickly developed the battle royale concept that aligns the intellectual interest of the artist and ours. The team has demonstrated agile development values and the ability to quickly pivot and refine the scope of work that is commercially viable.
What we learned
We have the privilege to collaborate with a prominent artist, @Lushsux, who has created a piece of artwork exclusively for the Chainlink community. @Lushsux has almost one million followers on social media and his artwork is in high demand among NFT investors. This allows us to do a beta launch almost immediately after the Hackathon. Prior to the beta launch, we will continue to iterate on the core battle royale mechanics before moving to build out the marketplace ecosystem that enables both primary and secondary sales.
Meanwhile, we have carried out some market research, P&L analysis, and marketing work in preparation for the beta launch. We are going to determine an optimized set of price and supply with consideration of the past sales history of @Lushsux’s NFTs, and operational costs including minting NFTs as well as invoking VRF on Chainlink. Furthermore, we have designed a landing page, where we are going to collect emails and field some simple survey questions to gauge interest and demand from NFT collectors.
What's next for Nifty Royale
Additional features are planned to be added before deployment. The following should be done and ready for testing in the upcoming weeks:
- NFT uploader added to the front-end to allow users to mint NFTs and create a new game with the configuration they would like
- Dynamic shareable links to allow users to share games that are on standby before the round begins
- Auction links to allow users to buy NFTs to play
- Possibly a central server to store references to past deployed contracts to showcase games that have been played in the past
Along with adding the features above, optimizing code, and beta testing, a campaign is planned for the initial release to generate buzz for the initial user base. Once testing is complete, Nifty Royale will be released and deployed on mainnet.