# Zircuit Finance Vaults

Zircuit Finance Vaults lets you deposit funds into a single, universal vault. This vault automatically finds and invests in the best yield-generating strategies across multiple blockchains, handling all the complex cross-chain logic for you. It's designed to be highly modular, making it easy to add new strategies and bridging technologies.

#### Key Features

* **Single-Chain UX, Multi-Chain Execution**: For example, deposit on one chain, earn on another, withdraw to Ethereum
* **Unified Accounting**: One source of truth for vault valuation and share pricing
* **Modular Strategy System**: Easy to add new yield strategies without modifying core vault logic
* **Multi-Bridge Support**: Pluggable bridge adapters (LayerZero, native L2 bridges, etc.)
* **Security-First Design**: Role-based access control, replay protection, queue-based withdrawals

### Architecture Overview

<table><thead><tr><th width="172.07421875">Term</th><th>Definition</th></tr></thead><tbody><tr><td>Accounting Chain</td><td>The single chain that hosts the canonical Vault and maintains price-per-share. Acts as source of truth. </td></tr><tr><td>Strategy Chain</td><td>Any chain where yield strategies are deployed. Has <code>StrategyManager</code> and actual strategy contracts.</td></tr><tr><td>Entrypoint Chain</td><td>Any chain where users can deposit/withdraw. Has <code>VaultToken</code> (shares) and UnderlyingOFTAdapter (asset wrapper).</td></tr><tr><td>VaultToken (e.g. zvUSDC)</td><td>The omnichain-enabled share token representing ownership in the vault (exists on entrypoint chains)</td></tr></tbody></table>

### User Flows

#### Flow 1: Deposit from Entrypoint Chain

{% @mermaid/diagram content="sequenceDiagram
participant User
participant Frontend
participant EC as Entrypoint Chain
participant Zircuit as Accounting Chain<br/>(Zircuit)

```
User->>Frontend: Initiate deposit (1000 USDC)
Frontend->>Frontend: Calculate LayerZero fee
Frontend->>EC: Approve USDC to UnderlyingOFTAdapter
User->>EC: Confirm transaction
Frontend->>EC: UnderlyingOFTAdapter.send(...)
User->>EC: Confirm transaction (with LZ fee)

EC->>Zircuit: LayerZero message
Zircuit->>Zircuit: Mint zvUSDC shares
Zircuit->>EC: Send shares to user

Frontend->>Frontend: Poll for shares balance
Frontend->>User: Show success (950 zvUSDC)" %}
```

#### Flow 2: Withdrawal to Destination Chain

{% @mermaid/diagram content="sequenceDiagram
participant User
participant Frontend
participant EC as Entrypoint Chain
participant Zircuit as Accounting Chain<br/>(Zircuit)

```
User->>Frontend: Initiate withdrawal (500 zvUSDC)
Frontend->>Frontend: Calculate LayerZero fee
Frontend->>EC: VaultToken.send(...)
User->>EC: Confirm transaction

EC->>Zircuit: Send shares to Zircuit
Note over Zircuit: Withdrawal queued<br/>Requires keeper processing

Frontend->>Frontend: Poll withdrawal status
Note over Frontend: May take minutes to hours

Zircuit->>EC: Keeper processes, sends USDC
EC->>User: Receive 526 USDC

Frontend->>User: Show success" %}
```

{% hint style="info" %}
The use of Zircuit as the accounting chain on this page is just as example; the actual accounting chain will differ.
{% endhint %}


---

# 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.zircuit.com/zircuit-finance/zircuit-finance-vaults.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.
