In functions _handleTie
, _finishgame
, _cancelGame
of RockPaperScissors
contract, tokens are never transferred back to the players, instead new tokens are minted to the players.
This issue leads to the tokens deposited in function createGameWithToken
and joinGameWithToken
are forever stuck in the contract, as there are no function to withdraw these tokens.
According to the natspec of function _cancelGame
the tokens should be refunded but new tokens were minted to players, leaving the actual bet tokens stuck in the contract.
Proof of Code
Add this block of code in RockPaperScissors.t.sol
and test
This will inflate the total supply of winningToken
along with tokens being stuck at RockPaperScissors
contract.
Manual Review, Foundry test suites
Instead of minting new tokens it's recommended to transfer the tokens back to the players
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.