# System Components

The protocol consists of five primary components:

#### Canonical ERC-4626 Vault

The canonical vault contract holds user assets, mints and burns shares, computes `totalAssets()`, enforces exposure limits, and coordinates strategy rebalancing. It serves as the authoritative state machine for the entire protocol and the sole source of truth for user accounting and settlement.

#### Execution Environments

Multiple heterogeneous execution environments run yield strategies across supported blockchains. Each environment provides distinct execution characteristics optimized for different strategy profiles, such as:

* Deterministic, low-cost execution for baseline or fallback strategies.
* High/compiler throughput and parallel execution for multi-hop or liquidity-intensive strategies.
* Low-latency execution suitable for real-time or market-reactive strategies.

Execution environments are isolated and cannot directly modify vault supply, share pricing, or net asset value (NAV).

#### Verification Layer

A trust-minimized validation layer verifies all state reported from execution environments, including underlying balances, auxiliary assets, realized PnL, and reward accrual. Only validated state updates are incorporated into vault accounting and NAV computation.

#### Rebalancing Router

A routing module within the vault dynamically allocates capital across execution environments based on configured strategy weights, risk constraints, liquidity availability, and execution suitability. It also coordinates capital unwinds when withdrawals require liquidity.

#### Cross-Domain Messaging and Asset Transport

Cross-domain messaging and asset transport infrastructure enables assets and verified state to move between the canonical vault and execution environments. This layer facilitates interoperability and settlement while remaining strictly non-authoritative with respect to vault accounting.


---

# 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://multistake-1.gitbook.io/multistake-docs/documentation/system-overview/multistake-systems/system-components.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.
