redeemMemorabilia burns BEAT tokens and mints a memorabilia NFT to the caller. The intended flow is that only festival pass holders earn BEAT (via attendPerformance) and then use those tokens to redeem memorabilia. However, BeatToken is a standard ERC20, and BEAT tokens are freely transferable between any addresses.
redeemMemorabilia only checks that the caller has sufficient BEAT tokens — it does not verify that the caller owns a festival pass. This means any address that receives BEAT tokens from a pass holder can redeem memorabilia without ever participating in the festival.
Likelihood:
BEAT tokens are standard ERC20 pass holders, who can transfer tokens to any wallet at any time.
A pass holder deliberately or accidentally sending BEAT to a non-holder enables redemption from that wallet.
Impact:
Memorabilia meant to be exclusive collector items for festival attendees can be acquired by wallets with no connection to the festival.
Dilutes the cultural and economic value of the memorabilia for legitimate pass holders.
The following shows a non-pass-holder receiving transferred BEAT tokens and using them to successfully redeem memorabilia without ever owning a festival pass.
Add a pass-ownership check at the top of redeemMemorabilia so that only wallets holding at least one festival pass (General, VIP, or Backstage) can burn BEAT tokens for memorabilia. Implement hasPass as a helper that queries balanceOf across all three pass tier IDs.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.