matchRewards forwards rewards to a freshly deployed MultiSigWallet with a low-level call and require(success) (lines 62-66). Because that call sits inside the likeUser execution path, any failure to deliver ETH reverts the entire like/match. The recipient is currently a protocol-controlled wallet with a receive(), so it is safe today, but the push-payment-in-the-hot-path pattern is fragile.
Likelihood: Low. The recipient is a new MultiSigWallet whose receive() accepts ETH, so the call succeeds under current code. Risk materializes only if a future change makes the reward recipient able to reject ETH (e.g. a recipient without receive, a gas-griefing fallback, or configurable destinations).
Impact: Low today, but structurally brittle. Should the recipient ever revert on receipt, require(success) would revert the whole likeUser transaction, meaning a single un-receivable reward destination could brick matching for the affected users. Coupling reward delivery to the like transaction concentrates this failure mode in a critical user-facing path.
If the deployed reward recipient rejected ETH, the mutual like would revert:
Decouple reward delivery from the like transaction using a pull-payment pattern so a failed transfer cannot brick matching.
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.