The contract LikeRegistry
includes a receive() function that allows it to accept ETH. However, there is no mechanism to withdraw ETH
sent this way, making any funds sent directly to the contract permanently inaccessible
. Since receive() does not update userBalances or totalFees, this ETH is neither used for rewards nor available for withdrawal by the owner.
Any ETH sent directly to the contract is lost forever.
The contract balance can increase indefinitely, but there is no way to recover ETH that was not explicitly counted as fees.
Users who mistakenly send ETH via receive() will never be able to withdraw it, and the owner cannot retrieve it either.
1- A user sends ETH directly to the contract:
2- The contract accepts the ETH due to receive(), but the balance remains locked:
3- Since totalFees is not updated, the owner cannot withdraw this ETH via withdrawFees().
4- The ETH is permanently stuck in the contract.
Manual
1- Implement a function to allow the owner to withdraw trapped ETH:
2- Alternatively, track ETH received in userBalances to ensure usability:
3- Do not Accept
Not the best design, but if you send money accidentally, that's a user mistake. Informational.
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.