# Aave Horizon RWA Market

Aave Horizon is an Aave Labs initiative: a licensed, separate instance of the Aave Protocol, initially forked from V3.3, that creates a market for _Real-World Assets (RWAs)_ for institutional and qualified participants. Users supply **permissioned**, tokenized RWAs as collateral and borrow **permissionless** stablecoins. Asset types and user roles are kept separate, so institutions stay compliant while accessing the capital efficiency and liquidity of _decentralized finance (DeFi)_.

RWA collateral is **permissioned**: only qualified users allowlisted by the RWA issuers can supply it. Compliance is enforced at the asset level by the RWA token’s native smart contract, so only approved participants can interact with these regulated assets. The stablecoin liquidity pools for USDC, RLUSD, and GHO are **permissionless**, with no restrictions for liquidity providers.

**Only users who supply permissioned RWA collateral can borrow** from the permissionless stablecoin pools. This lets institutions use regulated assets to access DeFi liquidity.

## Supplying RWA Collateral

Participation starts by supplying tokenized RWAs as collateral, exclusively for users the RWA’s issuer has qualified and allowlisted. Qualification typically follows standard institutional onboarding: identity verification, compliance checks, and agreement to terms and conditions.

Supplied RWAs are **collateral only** and cannot be borrowed by other participants. Suppliers receive aTokens representing the collateral position. These receipt tokens are **non-transferable**, so the collateral position stays with the original supplier. This prevents secondary-market trading of collateral positions and preserves the permissioning system.

Collateral value comes from established pricing mechanisms that account for each RWA type’s characteristics. Risk parameters, including loan-to-value ratios and liquidation thresholds, follow the underlying asset’s risk profile and regulatory requirements.

## Borrowing Stablecoins

The primary borrowable assets are permissionless stablecoins such as USDC, RLUSD, and GHO. Any participant can supply them to earn yield. Stablecoins cannot be used as collateral, which keeps the permissioned collateral side distinct from the permissionless liquidity side.

Borrowing is therefore **exclusively available to users who have supplied and enabled RWA collateral**, so regulated, permissioned assets access permissionless liquidity. Borrowing follows standard Aave Protocol mechanics, with interest rates set by utilization curves and market dynamics.

Borrowers must maintain adequate collateralization ratios under their RWA collateral’s risk parameters. The system continuously monitors these ratios and may trigger liquidation if positions become under-collateralized, with liquidation mechanisms adapted to RWA collateral.

## RWA Price Oracle Safeguards

Unlike crypto-native assets priced by decentralized exchange markets, RWAs rely on a _Net Asset Value (NAV)_ reported directly by the issuer. This creates a critical risk: delayed, inaccurate, or malicious reporting. An operational error or malicious act could publish an incorrect NAV onchain and trigger faulty liquidations across the market. An emergency multisig can freeze the reserve, but only reactively, leaving a window where allowlisted liquidators could exploit a faulty price and cause irreparable harm to borrowers.

Aave Horizon mitigates this with an automated safeguard at the oracle level. With Chainlink and LlamaRisk, upper and lower price bounds are configured for each RWA price feed at the _Decentralized Oracle Network (DON)_ level. When an issuer reports a new NAV, the Chainlink DON validates it against these bounds before publishing it onchain. Within the bounds, the update is accepted. Outside them, the DON **rejects the update** and the oracle keeps reporting the last valid price. This prevents a faulty price from reaching the protocol and eliminates erroneous liquidations. Any breach of the bounds also triggers a time-sensitive reaction from Aave Horizon’s emergency multisig, which prevents new loan originations and additional exposure until the root cause analysis is complete.

## Administrative Functions and Edge Case Management

The market provides mechanisms for account recovery and management in exceptional circumstances, facilitated by the RWA issuers. These administrative functions are essential for institutional participation, giving resolution paths for complex scenarios in regulated environments.

For example, if a user loses their private keys, the issuer can migrate the user’s entire collateral and borrow position to a new, secure wallet. This preserves market integrity while giving institutions operational flexibility.

An issuer may also be legally required to secure a position. For example, issuers can prevent a user from increasing their borrow position while coordinating a resolution, preserving the market’s collateralization and compliance.

The administrative framework is transparent and accountable, with clear governance determining how these powers are exercised. Institutions can trust their interests are protected while the protocol stays decentralized.

For `RwaAToken` functions and roles, see the [tokenization documentation](./smart-contracts/tokenization#rwaatoken).

For Aave Horizon RWA Market governance, see [access controls](../reference/access-controls).

## Integrations

Aave Horizon is fully compatible with AaveKit API methods. Follow the [getting started](/aave-v3/getting-started/react) guides to integrate Aave programmatically and specify the Aave Horizon Pool address, as in the query examples below.

<tabgroup>
<tab label="React">

```tsx
import { useAaveMarket, chainId, evmAddress } from "@aave/react";

function HorizonMarketData() {
  // Query Aave Horizon market data
  const {
    data: horizonMarketData,
    loading,
    error,
  } = useAaveMarket({
    address: evmAddress("0xAe05Cd22df81871bc7cC2a04BeCfb516bFe332C8"), // Aave Horizon Pool address
    chainId: chainId(1),
  });

  if (loading) return Loading…;

  if (error) return {error.message};

  return {horizonMarketData?.name};
}
```

</tab>
<tab label="TypeScript">

```ts
import { AaveClient, chainId, evmAddress } from "@aave/client";
import { market } from "@aave/client/actions";

const client = AaveClient.create();

// Query Aave Horizon market data
const horizonMarketData = await market(client, {
  address: evmAddress("0xAe05Cd22df81871bc7cC2a04BeCfb516bFe332C8"), // Aave Horizon Pool address
  chainId: chainId(1),
});
```

</tab>
<tab label="GraphQL">

```graphql
query HorizonMarketData {
  market(
    request: {
      address: "0xAe05Cd22df81871bc7cC2a04BeCfb516bFe332C8" # Aave Horizon Pool address
      chainId: 1
    }
  ) {
    name
    chain {
      name
      chainId
    }
    address
    totalMarketSize
    totalAvailableLiquidity
    reserves {
      underlyingToken {
        symbol
        name
        address
      }
      supplyInfo {
        apy {
          formatted
        }
        canBeCollateral
      }
      borrowInfo {
        apy {
          formatted
        }
      }
    }
  }
}
```

</tab>
</tabgroup>
