# Architecture

RWA Clear consists of two smart contract components that work together:

#### The Vault (Atomic Vault)

The vault is the LP-facing component. It accepts USDC deposits, mints vault shares, and manages the overall asset pool. When LPs want to withdraw, the vault handles instant redemptions of shares back to USDC.

The vault automatically routes deposited USDC to the Instant Redeem Subaccount for liquidity provisioning and yield generation. If the vault needs USDC for an LP withdrawal and its own balance is insufficient, it pulls the deficit from the subaccount automatically.

Key properties:

* Standard Upshift tokenized vault with ERC-4626-compatible share mechanics
* Instant atomic redemptions (no T+32 hour waiting period)
* Auto-routes capital to the subaccount for yield optimization
* Share price reflects total vault assets, including subaccount holdings and accrued fees

<figure><img src="/files/A5t2Wj4DDwEviSH1ksvs" alt=""><figcaption></figcaption></figure>

#### The Instant Redeem Subaccount

The subaccount is the RWA-holder-facing component. It is a standalone contract that holds USDC liquidity and processes instant swaps of RWA tokens to USDC using oracle pricing.

Key properties:

* Holds idle USDC and auto-deploys it to a yield vault (e.g., Morpho) for passive lending returns
* Accepts RWA tokens and swaps them for USDC at oracle-derived prices minus a configurable spread
* Fees remain in the subaccount, increasing the net asset value for all vault depositors
* Non-upgradeable — the contract cannot be modified after deployment
* Bound to a single vault — permissions and governance are inherited from the parent vault

#### How They Connect

The subaccount has no independent admin keys. All access control — owner, operator, whitelist — is read from the parent vault at call time. If the vault's owner changes, the subaccount's permissions change immediately.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.upshift.finance/core-products/upshift-rwa-clear/architecture.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
