The Proxy contract's fallback function does not support receiving ether. This could lead to potential issues if paired with an implementation contract that is intended to receive ether. Core contract implementation could be brick or non functional at all. Please review the current suggestion and the suggest to the test testIfSendEtherToProxyThenRevert
The Proxy contract's fallback function it lacks the payable keyword, which means it cannot receive ether. If the implementation is doing some defi and needs to receive ether the proxy contract will reject the transaction. This could be problematic if the _implementation contract is designed to accept ether.
Functionality Limitation: The proxy contract cannot be paired with any implementation contract that requires the reception of ether, limiting its usability.
Manual review.
Add the payable keyword to the fallback function in the Proxy contract. This will allow the proxy to receive ether and delegate it to the _implementation contract if necessary.
Alternatively, consider using OpenZeppelin's proxy contract which is well-tested and widely adopted in the community. It already handles such scenarios and ensures that the proxy can receive ether if the implementation contract is designed to do so.
Would also love to add a few gas optimizations:
This is the recommendation on the current test suite:
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.