User Guide: Migrating Existing USDC Liquidity to Circle's USDC Standard
To migrate your existing USDC liquidity on an Arbitrum chain that has recently adopted the Bridged USDC Standard, follow the steps below.
Approve the USDC Contract for Withdrawal
Find the ERC-20 USDC contract and approve
the 'StandardGateway' to spend the full amount of your USDC. Contact the Chain team if the address to the 'StandardGateway' was not provided.
Initiate Withdrawal via outboundTransfer
Call the outboundTransfer
function on the approved USDC contract with the following arguments:
- _l1Token: The address of the USDC contract on the settlement layer.
- _to: The address on the settlement layer where you want to withdraw the USDC.
- _amount: The amount to withdraw (note: 1 USDC =
1000000
units). - _data: Leave this field empty.
Using BlockScout
You can initiate this transaction directly through BlockScout's UI, when navigating to the Standard Gateway Contract.
Using Foundry
Alternatively, use Foundry with the following cast
command, replacing the placeholders with your specific details:
cast call $STANDARD_GATEWAY "outboundTransfer(address,address,uint256,uint256,uint256,bytes)" $L1_USDC_ADDRESS $YOUR_ADDRESS $AMOUNT_TO_WITHDRAW 0 0 0x --rpc-url $RPC_URL --private-key $PK
Checking the Withdrawal Status
After processing the transaction, monitor the withdrawal status in the Superbridge UI. This interface will guide you through the proving and finalization stages.
Finalizing the Transfer on the Settlement Layer
Once the withdrawal is complete and your USDC is back on the settlement layer, use the Superbridge UI or other recommended bridging methods to bridge it back to your rollup.
Bridged USDC on Rollup
Once the bridging process is complete, your USDC will appear as Bridged USDC (USDC.e) on the rollup.