Shambolic Banana Barbel
Medium
An incorrect function signature in L1USDCGateway.sol
will prevent the upgrade of L2 USDC to native USDC.
L1USDCGateway.sol
and L2USDCGateway.sol
have been designed to follow the Bridged USDC Standard, which will allow for a future upgrade to native USDC.
The requirements include: (a) the ability to burn the USDC locked in L1, (b) the ability to pause the contracts for the upgrade, and (c) the ability to transfer ownership of the USDC contract on L2 to Circle.
This is mostly done correctly, however, the wrong function signature has been added to the L1 contract, which will block the upgrade from happening.
As we can see in Circle's documenation, the L1 contract needs the following function:
function burnLockedUSDC() external;
However, if we look in L1USDCGateway.sol, we can see that the function signature is:
function burnAllLockedUSDC() external;
None
None
N/A
The L2 USDC contract, which is intended to be able to be upgraded in the future to native USDC, will not be permitted to perform this upgrade.
N/A
Change the function name to burnLockedUSDC()
.