Hi, we're trying to use TransparentUpgradeableProxy but having issue from the msg.sender != admin
check in receive() function. The high gas cost of sload
op in admin()
leads our contracts to fail due to 2300 gas limit when eths are transfer
ed from other contracts which we do not have control of.
A possible solution we're considering is to use a modified version of TransparentUpgradeableProxy with the msg.sender != admin
check removed from the receive function.
Using UUPS is not an option since we would need to migrate all our codebase to Solidity 0.8.x from the current 0.6.x codebase and we're a very small team with time constraints.
So our question is, given that the admin will only interact with the contract for upgrades, and never send calls to other functions, would there be any risk or other consequences from this modification?
Thanks,
Ye Park
Code to reproduce