The likeUser function does not update the userBalances mapping when users send ETH. As a result, all ETH sent during a "like" is unaccounted for.
During mutual matches, matchRewards transfers userBalances[from] and userBalances[to], which remain at 0, leading to zero rewards sent to the multisig wallet.
All user ETH is permanently locked in the contract. The core protocol functionality which is pooling funds for matched users is non-functional.
Modify the test imports and setup and include this test below, run with -vvv. this test is expecting this failure to verify that funds are locked when users match.
it simulates user liking user2 by sending 1 ETH.
Simulates user2 liking user by sending 1 ETH.
Checks the balance of the deployed multisig wallet.
The multisig wallet should have 1.8 ETH (90% of 2 ETH after a 10% fee), but it returns 0. The multisig is deployed but has 0 ETH, which the test checks for. This shows that the funds aren't being tracked correctly.
Update likeUser to track ETH:
Likelihood: High, always. Impact: High, loss of funds
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.