Summary
Wrong event emission in RapBattle.sol
contract
Vulnerability Details
emit Battle(msg.sender, _tokenId, random < defenderRapperSkill ? _defender : msg.sender);
It should be
emit Battle(msg.sender, _tokenId, random <= defenderRapperSkill ? _defender : msg.sender);
to synchronize with the results:
if (random <= defenderRapperSkill) {
credToken.transfer(_defender, defenderBet);
credToken.transferFrom(msg.sender, _defender, _credBet);
} else {
credToken.transfer(msg.sender, _credBet);
}
Impact
Wrong winner announcement.
Tools Used
Manual review
Recommendations
Change to:
emit Battle(msg.sender, _tokenId, random <= defenderRapperSkill ? _defender : msg.sender);