The LikeRegistry
contract incorrectly pools all historical ETH sent by users (from previous likes) into a shared multisig wallet upon a mutual match, instead of only pooling the 1 ETH sent for that specific match. This violates the protocol’s intended behavior, where only the 1 ETH from each user’s like to the other should be pooled. As a result, users risk losing all previously sent ETH to unintended matches, leading to significant financial loss and protocol misuse.
Contract: LikeRegistry.sol
Functions: likeUser
, matchRewards
Incorrect ETH Tracking:
The userBalances
mapping tracks the cumulative ETH sent by a user for all likes, not per-recipient.
When a mutual match occurs, the entire userBalances
of both users is pooled, not just the 1 ETH sent for the matched like.
Protocol Logic Flaw:
The protocol intends to pool only the 1 ETH from the mutual likes (e.g., Alice sends 1 ETH to like Bob, Bob sends 1 ETH to like Alice).
Current implementation pools all ETH sent by Alice and Bob for all previous likes, including those unrelated to the match.
Financial Loss: Users lose all ETH sent for previous likes to an unintended match. For example:
Alice spends 3 ETH liking 3 users.
Bob spends 2 ETH liking 2 users.
When Alice and Bob match, 5 ETH (3 + 2) is pooled (minus fees), even though only 1 ETH each was intended.
Protocol Misuse: The system’s core value proposition (“genuine connections”) is undermined, as matches drain unrelated funds.
Loss of Trust: Users will avoid the platform once they realize their entire ETH balance is at risk per match.
Expected: Only 1 ETH from Alice (to Bob) and 1 ETH from Bob (to Alice) are pooled (total 2 ETH - 10% fee = 1.8 ETH).
Actual: All 3 ETH (Alice’s 2 ETH + Bob’s 1 ETH) are pooled, resulting in 2.7 ETH sent to the multisig.
Modify the contract to track ETH per like recipient instead of cumulatively:
Remove the userBalances
mapping entirely.
Update matchRewards
to handle per-recipient tracking.
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.