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.