The normal behavior of go_on_stage_or_battle
is that two players stake an equal amount of CRED
tokens along with their NFT rappers. The winner should receive the combined coin prize pool, and the losing player forfeits their NFT.
However, the function allows a defender to set bet_amount = 0
. In this case, the challenger must also use a 0 bet. This results in an empty prize pool, but the losing player still permanently loses their NFT. This creates “loss-only” battles, with no upside for either participant, and enables griefing.
Likelihood:
Defenders can always initialize the arena with a 0 bet, since no validation prevents it.
Challengers must match this 0 bet, so the exploit path is straightforward.
Impact:
Players can be tricked into battles where one of them inevitably loses their NFT but gains no prize.
Attackers can grief by forcing zero-stake battles and stripping NFTs from others with no coin risk.
This ensures that all battles require a positive stake, preventing loss-only scenarios.
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.
The contest is complete and the rewards are being distributed.