[ARFC] Onboard frxUSD to Aave V3 Core Instance on Ethereum

Overview

Chaos Labs supports the listing of frxUSD on the Aave v3 Core Instance as a borrowable asset with collateral capacity limited to a narrow set of E-Modes. The following post covers the details of the recommendation. We have additionally worked directly with Frax’s team to complete a mechanism-design review of frxUSD’s mint/redeem and custody architecture and deployed a Proof of Reserves feed to deliver independent, on-chain verification of cross-chain supply versus backing.

frxUSD

frxUSD is a fully collateralized, fiat-redeemable stablecoin issued by the Frax ecosystem. Each unit is backed 1:1 by cash and cash-equivalent assets held with regulated U.S. custodians. A companion token, sfrxUSD, captures the yield generated by the underlying reserve portfolio through a dynamic allocation strategy.

Minting and redemption occur through governance-approved “enshrined custodians,” each mapped to a specific reserve asset, with Ethereum and Fraxtal serving as the primary chains for issuance and redemption. On other chains, frxUSD is implemented via the LayerZero OFT standard to maintain a unified cross-chain supply.

The following sections expand on the topics of backing, operations, mint and redeem mechanics, bridging, on-chain liquidity, and a risk parameter recommendation for deployment on the Ethereum Core instance of Aave v3.

Backing

frxUSD reserves are diversified across multiple instruments and issuers, all targeting short-duration, high-quality government exposure or fully collateralized fiat. The primary backing instruments are USTB, WTGXX, BUIDL, USDB, and USDC, as shown in the chart below.

USTB

USTB is issued by Superstate, with tokenization and portfolio management handled by Federated Hermes and custody at UMB Bank. The fund holds at least 95 percent in short-term US Treasury bills and a small cash buffer, with on-chain NAV accrual and real-time yield accounting. Reputation and credit quality are strong given the underlying assets and service providers, but redemptions are permissioned, transfers are restricted to whitelisted wallets, and peg stability depends on a relatively small set of intermediaries and an instant USDC buffer that is finite in size.

WTGXX

WTGXX is a regulated money market fund issued by WisdomTree Digital Management and managed by Voya Investment Management, with BNY Mellon as custodian. The portfolio invests exclusively in US Treasuries, government securities, and fully collateralized repo, targeting a stable one-dollar NAV with same-day or next-day redemption. It benefits from a long track record and strong institutional counterparts, but access is restricted to investors onboarded through WisdomTree’s infrastructure, and wallet eligibility is controlled via a non-transferable token, which concentrates operational and access risk in a narrow institutional channel.

BUIDL

BUIDL is a tokenized fund issued by BlackRock and distributed via Securitize, with custody at Bank of New York Mellon. It holds cash and cash-equivalent US government instruments such as Treasury bills, notes, and REPOs, and supports conversion into USDC through integrated channels. BlackRock’s scale, BNY Mellon’s role, and PwC auditing make credit and operational reputation very strong, yet mints and redemptions are limited to whitelisted accredited investors and rely on traditional transfer-agent and banking rails, so arbitrage and redemption are concentrated in a small set of qualified participants.

USDB

USDB is a fiat-backed stablecoin originally issued by Bridge (now part of Stripe), backed by 5 to 10 percent cash in segregated bank accounts and 90 to 95 percent short-duration US Treasuries managed by BlackRock. Redemptions are orchestrated via Bridge’s internal systems and generally settle same-day or within T+1 to T+2 in line with regulatory guidance. The association with Stripe and the use of high-quality collateral are positives for reputation, but the system relies heavily on proprietary orchestration and monthly attestations that are not yet fully transparent, which introduces additional operational and disclosure risk.

USDC

USDC is a fiat-backed stablecoin issued by Circle and backed by a mix of cash and short-term US government securities held with regulated banking and custodial partners. It is widely used across centralized exchanges, DeFi, and payments, with regular reserve attestations and a long public track record during multiple market stress events. While USDC is still exposed to banking-system and regulatory risk in the United States, its scale, transparency practices, and central role in on-chain markets make it one of the most reputable and liquid components of the frxUSD reserves.

Mint & Redeem

Due to the economic design of the frxUSD, the mint and redemption operations present some operational complexity, as frxUSD is backed by a broad set of RWA assets; the mint and redemption mechanics rely on the underlying pricing strategies associated with the backing assets. As the stablecoin is redeemable for other stablecoins and RWA assets, the question of pricing the underlying for the mint/redeem conversion naturally arises, as some price fluctuations in the open market may occur, even between frxUSD and USDC, for example.

In practice, the protocol utilizes hardcoded price values for the redemption of assets such as USDC and BUIDL, which are typically facilitated by contracts like FraxUSDCustodianUSDC. In the case of USDC, specifically, the contract has a hardcoded price, which can be obtained externally via pricePerShare() call, during the mint/redeem operations, and computed the price of shares based on the price of assets, taking into account only the decimal conversions. The code snippet from the mentioned FraxUSDCustodianUSDC is attached below:

/// @dev Internal conversion function [from shares(frxUSD) to assets(USDC)] with support for rounding direction
/// @param _shares Amount of shares(frxUSD) to convert to underlying tokens
/// @param _rounding Math.Rounding rounding direction
/// @return _assets Amount of underlying tokens(USDC) represented by the given number of shares
function _convertToAssets(uint256 _shares, Math.Rounding _rounding) 
				 internal view virtual returns (uint256 _assets) {
	_assets = Math.mulDiv(_shares, uint256(10 ** custodianTknDecimals), uint256(10 ** frxUSDDecimals), _rounding);
}

Given that USDC is effectively hardcoded, the mint and redemption functionality presents exposure to both market and systemic risks. If USDC were to temporarily depeg, a sophisticated user could mint frxUSD for USDC, effectively arbitraging the depeg of USDC against frxUSD. These risks can be limited by either calling setMintCap() to reduce new mints of frxUSD from any specific custodian, or by introducing a substantial fee to limit the profitability of the arbitrage until market conditions are restored.

/// @notice Set the mint cap for frxUSD minting
/// @param _mintCap The new mint cap
function setMintCap(uint256 _mintCap) public onlyOwner {
  mintCap = _mintCap;
  emit MintCapSet(_mintCap);
}

Design-wise, such logic has likely been established to effectively peg a much smaller frxUSD (market cap of $125 million) to the second-largest stablecoin — USDC, as users can redeem frxUSD for USDC, thereby pushing its price up in case of temporary market fluctuations.

When the custodian asset is not designed to trade at a fixed $1.00 peg, as is the case for USTB, which currently trades around $10.92 per token, the simple decimal-based conversion used in FrxUSDCustodian is no longer fit. Instead, the mint and redemption flows must incorporate the USD notional value of the backing asset to maintain the peg of frxUSD.

Such functionality is facilitated with FrxUSDCustodianWithOracle, which is an extended version of FrxUSDCustodian. In this configuration, frxUSD remains a dollar-tracking stablecoin, but the underlying custodian token has a floating NAV. To reconcile this, FrxUSDCustodianWithOracle integrates an external price oracle into the ERC-4626 conversion logic, such that deposit and redemption operations provide accurate pricing of both assets. Specifically, the redemption rate of frxUSD for USTB is provided by the following function:

/// @dev Internal conversion function (from shares to assets) with support for rounding direction
/// @param _shares Amount of shares to convert to underlying tokens
/// @param _rounding Math.Rounding rounding direction
/// @return _assets Amount of underlying tokens represented by the given number of shares
function _convertToAssets(uint256 _shares, Math.Rounding _rounding)
    internal
    view
    override
    returns (uint256 _assets)
{
    _assets = Math.mulDiv(
        super._convertToAssets(_shares, _rounding),
        (10 ** oracleDecimals),
        getCustodianOraclePrice(),
        _rounding
    );
}

As can be noted, the internal _convertToAssets() fetches the last reported price from the SuperstateOracle. The oracle is being updated directly by an address associated with the deployment of USTB, as can be observed in this transaction.

Redemption liquidity is further complicated by the diversified nature of frxUSD’s backing. While the aggregate reserves are sized to accommodate the full outstanding supply across all custodians, there is no guarantee that any specific reserve asset will remain available for redemption at all times. In particular, only a limited share of total backing is held as USDC. Once the USDC custodian’s reserves are exhausted, additional redemptions must route through other custodians holding instruments such as USTB, BUIDL, or WTGXX, some of which are permissioned and require KYC or whitelisting at the underlying issuer level. If a user attempts to route a redemption through a frxUSDCustodian contract with insufficient reserves, the transaction will revert.

 /// @notice Redeem a specified amount of shares for the underlying tokens. Make sure to approve _owner's shares to this contract first.
  /// @param _sharesIn Number of shares to redeem
  /// @param _receiver Recipient of the underlying asset tokens
  /// @param _owner Owner of the shares being redeemed. Must be msg.sender.
  /// @return _assetsOut Amount of underlying tokens out
  /// @dev See {IERC4626-redeem}. Leaving _owner param for ABI compatibility
  function redeem(uint256 _sharesIn, address _receiver, address _owner) public virtual returns (uint256 _assetsOut) {
    // Make sure _owner is msg.sender
    if (_owner != msg.sender) revert TokenOwnerShouldBeSender();

    // See how many shares the owner can redeem
    uint256 _maxShares = maxRedeem(_owner);

    // Revert if you are trying to redeem too many shares
    if (_sharesIn > _maxShares) {
      revert ERC4626ExceededMaxRedeem(_owner, _sharesIn, _maxShares);
    }

    // See how many asset tokens are expected
    _assetsOut = previewRedeem(_sharesIn);

    // Do the redemption
    _withdraw(msg.sender, _receiver, _owner, _assetsOut, _sharesIn);
  }

In practice, this means that atomic redemption liquidity is highly variable, path-dependent, and may be uneven across reserve assets: early redeemers may access USDC directly, while later redeemers may receive tokenized Treasuries or other RWA instruments instead, subject to off-chain eligibility constraints. This dynamic can be further exemplified by the high volatility of USDC reserves in the frxUSDCustodianUSDC, which exhibits sharp fluctuations in liquidity inflows and outflows as entities mint and redeem the asset.

Redemption Capacity and Fees

Given the diversity of reserves, the backing configuration of the asset implies substantial variation in permission-based constraints, atomicity of redemptions, and reserve liquidity. As mentioned previously, the redemptions are processed via the frxUSDCustodian contracts, which have a configurable redemption fee, said fee can be accessed by calling the redeemFee() read function on the respective contract.

asset contractAddress frxUSDCustodian redeemFee()
USDC 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 0x4F95C5bA0C7c69FB2f9340E190cCeE890B3bd87c 0.00%
USTB 0x43415eb6ff9db7e26a15b704e7a3edce97d31c4e 0x5fbAa3A3B489199338fbD85F7E3D444dc0504F33 0.01%
BUIDL 0x7712c34205737192402172409a8f7ccef8aa2aec 0xe827abf9f462ac4f147753d86bc5f91e186e4e9c 0.01%
WTGXX 0x1fecf3d9d4fee7f2c02917a66028a48c6706c179 0x860Cc723935FC9A15fF8b1A94237a711DFeF7857 0.01%
USDB 0xeac4269c9a01190b1400c4dc728864e61895fdf3 0xFE2Ea8dE262d956e852F12DE108fda57171a0a29 0.01%

As can be observed, the fees listed present minimal barriers for conversion of frxUSD to the underlying reserves; nevertheless, additional operational constraints exist. Specifically, some of the reserves cannot be redeemed for USDC permissionlessly. One such example is BUIDL, which, as can be observed from the ERC20 transactions, has not been redeemed for USDC for over 200 days. Instead, as signaled by the emitted burn events and lack of corresponding USDC inflows, the asset has been redeemed off-chain. While frxUSD → BUIDL → USD redemptions may incur additional BUIDL → USD redemption fees, according to rwa.xyz, such fees are currently waived.

Additionally, the Frax team has introduced a streamlined option to redeem frxUSD to USDC atomically via USTB. This is facilitated by the RWARedemptionCoordinator, which burns the frxUSD upon receipt and redeems it for USTB. A whitelisted entity receives USDC and returns the funds to the initial frxUSD redeemer, net of 1 basis point in fees.

In addition to these pathways, WTGXX-backed redemptions further illustrate the distinction between on-chain redemption mechanics and effective stablecoin liquidity. While the frxUSDCustodian for WTGXX applies a fixed 1 basis point redemption fee and executes the frxUSD burn atomically on-chain, the subsequent non-atomic conversion of WTGXX into USDC follows if redeemWtgxx is called by the WTGXX custodian on the USDC custodian. In practice, redeemed WTGXX is transferred to a Frax-controlled receiver address and settles off-chain through WisdomTree and its custodial partners’ EOAs, after which USDC is minted and transferred to the Frax USDC custodian by Circle. This redemption flow illustrates operational complexities associated with the frxUSD → WTGXX → USDC redemption path, which is only partially on-chain, with the USDC settlement time shifter by a few hours.

DEX Liquidity

The primary liquidity venue for frxUSD is the Curve V2 frxUSD/crvUSD pool, which currently has a TVL of approximately $37 million. The pool’s design and substantial depth limit observed dislocations from the oracle price. Over the past 60 days, dislocations have been minimal, with the largest reaching 20 basis points. The mean dislocation over this period was less than five basis points, signaling a substantial level of asset stability.

Pricing

We recommend pricing the asset using a market-based frxUSD/USD oracle feed. This approach is appropriate as the market price is generally expected to closely track the peg, while the use of a CAPO limiting the price of frxUSD to 1.04 USD significantly constrains the risk of overpricing, which is critical for limiting the accumulation of bad debt. Additionally, we expect the market price to be more reliable than a typical secondary-market feed due to the diversity of the collateral backing frxUSD and the presence of on-chain atomic redemptions into USDC or other reserve assets, which should enable rapid arbitrage and keep secondary market prices tightly aligned with the peg.

However, reliance on a market price oracle introduces residual risk if the feed becomes insufficiently liquid or temporarily manipulable, potentially causing liquidations and enabling borrowing against an underpriced oracle value. To mitigate such risks, this design could be complemented with a freezing or circuit-breaker risk oracle that leverages Proof of Reserves signals, preventing risky operations during periods where market prices materially diverge from the underlying backing value.

Asset Parameters

Collateral Parameters

Given the relatively low maturity of the asset, along with a high probability of substantial asset concentration within the Core instance of Aave v3, given the market cap of approximately $125 million, we recommend limiting the collateralization utility of the asset within a set of established stablecoins facilitated by a dedicated E-Mode. We recommend constraining the mentioned set of frxUSD-borrowable assets to highly correlated stablecoins, while preserving conservative collateral parameters such that frxUSD can borrow stablecoins at the same capital efficiency as USDC. The recommendation to provide frxUSD with the same collateralization power as USDC is motivated by its redeemability and strictly enforced liquidity-dependent peg configuration. As mentioned previously in the analysis, as long as frxUSDCustodianUSDC has ample liquidity across its reserves, the assets are convertible one-to-one, ensuring efficient secondary market pricing of frxUSD.

Additionally, we recommend enabling the asset as borrowable, as we expect the primary demand to originate from this use case. Given the recent depreciation of the collateral utility of volatile, low-demand assets following the October 10 market crash and the recent introduction of Aave v3.6, we conclude that the risk associated with uncorrelated borrowing is minimal, as the majority of demand is expected to come from matured ‘blue-chip’ assets.

Supply & Borrow Caps

For the time being, we recommend a supply cap of 60 million frxUSD and a borrow cap of 55 million frxUSD. While conservative relative to the liquidity, these values reflect the risk of high concentration of the asset within Aave, as the current supply stands at approximately 125 million, while also taking into account the secondary market liquidity and direct redemption capacity via permissionless venues.

Interest Rate

We recommend aligning the interest rate configuration of frxUSD with the broader stablecoin market while proposing a slightly more conservative optimal utilization. Specifically, we propose a base rate of 0%, a slope 1 of 5.5%, a slope 2 of 50%, and an 80% UOptimal.

Specification

Parameter Value
Asset frxUSD
Isolation Mode No
Borrowable Yes
Collateral Enabled No
Supply Cap 60,000,000
Borrow Cap 55,000,000
Debt Ceiling -
LTV -
LT -
Liquidation Bonus -
Liquidation Protocol Fee 10%
Variable Base 0%
Variable Slope1 5.5%
Variable Slope2 50%
Uoptimal 80%
Reserve Factor 10%

frxUSD E-Mode

Asset frxUSD USDC USDT USDe GHO
Collateral Yes No No No No
Borrowable No Yes Yes Yes Yes
Max LTV 75% - - - -
Liquidation Threshold 78% - - - -
Liquidation Bonus 4.5% - - - -
4 Likes