The current memorabilia implementation unnecessarily creates unique tokenIds for each item within a collection by encoding both collectionId and itemId, making each NFT
non-fungible. This contradicts the uniform pricing model where all items in a collection cost the same amount of BEAT tokens.
Since all memorabilia within a collection are identical (same price, same metadata URI pattern), the design should leverage ERC1155's semi-fungible nature by using the
collectionId directly as the tokenId. This would make all items in a collection share the same tokenId, simplifying the implementation and allowing users to own multiple
fungible copies.
The current approach adds complexity without benefit - tracking "edition numbers" and encoding/decoding tokenIds when a simple _mint(user, collectionId, 1, "") would
achieve the same goal more efficiently while maintaining the collection-based pricing structure.
With this change, the smart contract can be simplified further and remove some storage variables and logic.
Uses collectionId as the tokenId directly
Reuses the existing passSupply mapping for tracking minted amounts
Removes unnecessary encoding/decoding logic
Makes all items in a collection fungible (same tokenId)
Simplifies the URI to be collection-based rather than item-based
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.