The getMultiplier() function only checks for pass ownership using balanceOf() > 0 and returns immediately upon finding the highest tier pass, without considering the quantity of passes owned or cumulative benefits from multiple pass types. This design flaw means users who purchase multiple passes of the same type or different types receive the same BEAT token rewards as users with single passes, creating an economic disincentive for additional pass purchases and potentially unfair reward distribution.
User A purchases one BACKSTAGE pass for 0.25 ETH and receives 3x multiplier
User B purchases three BACKSTAGE passes for 0.75 ETH (3x the investment) but still receives only 3x multiplier
Both users attend the same performance and earn identical BEAT rewards despite User B's significantly higher investment
Alternatively, User C purchases 1 BACKSTAGE + 2 VIP passes (total 0.45 ETH) but getMultiplier() returns 3x immediately due to early return logic, ignoring the additional VIP passes entirely
Users realize multiple pass purchases provide no additional benefits and avoid repeat purchases
Users have no economic incentive to purchase multiple passes, limiting ETH inflow
Users making larger investments receive disproportionately lower returns per ETH spent
Protocol fails to capture additional value from users willing to pay premium prices
The system doesn't reflect the principle that higher investment should yield proportionally higher rewards
Implement one of the following solutions:
Proportional multiplier calculation: Account for quantity of each pass type owned
** Restrict pass purchases**: Limit each address to owning only one pass of any type to maintain current simple multiplier logic while preventing confusion.
Additionaly override ERC1155 transfer functions to prevent pass transfers
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.