Add Native USDC To Arbitrum V3 Pool
01Summary
Aave governance proposal to onboard native USDC (issued by Circle) to the Arbitrum V3 pool alongside the existing bridged USDC.e token. Native USDC will use conservative initial parameters with a 41M supply/borrow cap, while USDC.e remains unchanged. Both tokens will coexist to facilitate a gradual transition as native USDC establishes liquidity.
- Type
- protocol addition
Key changes
- Addition of native USDC token (USDCn) to Arbitrum V3 pool with 81% LTV and 86% liquidation threshold(high)
- Native USDC configured with conservative 41M supply cap and 41M borrow cap for initial launch(high)
- Native USDC set with 90% optimal usage ratio, variable rate slope 1 at 3.5%, and slope 2 at 60%(medium)
- Both USDC.e (bridged) and native USDC will operate simultaneously on Arbitrum V3 pool(high)
- Native USDC enabled for borrowing, flashloans, and isolation mode borrowing but stable rate mode disabled(medium)
Notable concerns
- UI must differentiate between native USDC (shown as 'USDC') and bridged USDC.e (shown as 'USDC.e') to avoid user confusion
- Strategy relies on gradual parameter adjustments to migrate liquidity from USDC.e to native USDC over time
- Initial conservative caps require future governance adjustments as native USDC liquidity matures
Generated by Kvorum
02Description
Simple Summary
This AIP propose to add the native USDC token issued by Circle to the Arbitrum V3 pool. Currently onboarded USDC.e token will be kept as is and two USDC tokens will be available on the pool. The bridged asset USDC.e and the native USDC with the symbol USDCn.
Motivation
Circle has launched a native version of USDC on Arbitrum, which is anticipated to become the primary version of the USDC stablecoin on the Arbitrum L2. This will supersede the current “USDC.e” token, which is a bridged asset with an underlying USDC on Ethereum.
From our experience with the Avalanche Pool, we’ve learned that a prudent approach to integrating such a native token involves initially onboarding it with parameters similar to its bridged counterpart, but with more conservative caps. As the native USDC builds secondary liquidity and matures, we can gradually decrease the attractiveness of USDC.e and increase the caps for the native USDC.
This ARFC is focused solely on the onboarding of the native USDC and does not propose any action for USDC.e. As a result, if this proposal is accepted by the governance, both USDC.e and the native USDC will be onboarded simultaneously on the Arbitrum V3 pool. This strategy aims to ensure a smooth transition and maintain the stability of the Aave V3 pool on Arbitrum.
Specification
Token Information
- Token Symbol: USDC
- Token Address: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831
The implementation of the token is the same as the one used for the USDC.e token. The payload use a custom engine to avoid compatibility issues with the current USDC.e token and protocol version.
while the protocol code use "USDCn" to distinguish both versions of the token. we recommend that UI supports USDCn with the symbol "USDC" to avoid confusion.
Likewise, What the protocol consider "USDC" will be shown as "USDC.e" on the UI.
contract AaveV3ArbNativeUSDCListing_20230621 is AaveV3PayloadArbitrum {
address public constant USDCN = 0xaf88d065e77c8cC2239327C5EDb3A432268e5831;
address public constant USDCN_PRICE_FEED =
0x50834F3163758fcC1Df9973b6e91f0F0F0434aD3;
function newListingsCustom()
public
pure
override
returns (IEngine.ListingWithCustomImpl[] memory)
{
IEngine.ListingWithCustomImpl[]
memory listings = new IEngine.ListingWithCustomImpl[](1);
listings[0] = IEngine.ListingWithCustomImpl(
IEngine.Listing({
asset: USDCN,
assetSymbol: "USDCn",
priceFeed: USDCN_PRICE_FEED,
rateStrategyParams: Rates.RateStrategyParams({
optimalUsageRatio: _bpsToRay(90_00),
baseVariableBorrowRate: 0,
variableRateSlope1: _bpsToRay(3_50),
variableRateSlope2: _bpsToRay(60_00),
stableRateSlope1: _bpsToRay(5_00),
stableRateSlope2: _bpsToRay(60_00),
baseStableRateOffset: _bpsToRay(1_00),
stableRateExcessOffset: _bpsToRay(8_00),
optimalStableToTotalDebtRatio: _bpsToRay(20_00)
}),
enabledToBorrow: EngineFlags.ENABLED,
stableRateModeEnabled: EngineFlags.DISABLED,
borrowableInIsolation: EngineFlags.ENABLED,
withSiloedBorrowing: EngineFlags.DISABLED,
flashloanable: EngineFlags.ENABLED,
ltv: 81_00,
liqThreshold: 86_00,
liqBonus: 5_00,
reserveFactor: 10_00,
supplyCap: 41_000_000,
borrowCap: 41_000_000,
debtCeiling: 0,
liqProtocolFee: 10_00,
eModeCategory: 1
}),
IEngine.TokenImplementations({
aToken: AaveV3Arbitrum.DEFAULT_A_TOKEN_IMPL_REV_2,
vToken: AaveV3Arbitrum.DEFAULT_VARIABLE_DEBT_TOKEN_IMPL_REV_2,
sToken: AaveV3Arbitrum.DEFAULT_STABLE_DEBT_TOKEN_IMPL_REV_2
})
);
return listings;
}
}
References
Copyright
Copyright and related rights waived via CC0.
03Mismatch analysis
The decoded calldata consists of a single wrapper call (execute(address)) that references a payload contract address, consistent with Aave's standard governance execution pattern where the proposal executor triggers a separate payload contract containing the detailed logic (in this case, presumably the AaveV3ArbNativeUSDCListing_20230621 contract described and linked in the proposal). Because the decoded action set does not expose the granular parameters (LTV, caps, rate strategy, token address, etc.) that are described in the prose and embedded in the linked Solidity contract, a direct field-by-field comparison between the description and the on-chain calldata is not possible from the data provided. Nothing in the visible calldata contradicts the description, and the high-level action (execute a listing payload) aligns with what the proposal describes. However, since verification of the specific listing parameters is not achievable from this decoded data alone, confidence in this assessment is low, and per policy this should not be treated as a flagged discrepancy but rather as an inconclusive comparison. No value mismatches, target mismatches, omissions, or misleading phrasing can be identified given the information available, so no discrepancies are reported at this time.
Generated by Kvorum
04Actions
- Target
- 0xd1b3…cfa3
- Value
- 0 wei
- Function
- execute(address)
- Arguments
{ "0": "0x7B20e2008c714f209131C7EC90294526e8f493cc" }- Calldata
05Tally
Summed from votes
06Voters
No votes recorded yet.
07Forum
No forum thread is confidently linked to this proposal.
08Similar proposals
- aaveexecutedOnboard Native USDC to Aave V3 Optimism82%
- aaveexecutedAdd USDT to Aave Ethereum V3 pool80%
- aaveexecutedAdd LUSD to Aave Ethereum V3 pool76%
- aaveexecutedAdd LUSD to Arbitrum Aave V376%
- aavedefeatedAdd LUSD to Arbitrum Aave V376%
- aaveexecutedOnboard AUSD75%
- aaveexecutedAdd LUSD to Aave Optimism V3 pool74%
- aaveexecutedOnboard fdUSD to Aave v3 on BNB chain72%
- aaveexecutedAdd EURC to BASE Aave V372%
- aaveexecutedAdd LUSD to Aave V270%