shuttle-spaceGetting started

Insured Vaults provide onchain integration on Ethereum and Base (more chains coming soon), enabling integrators to offer native covered yield by depositing yield‑bearing vault shares. Coverage starts automatically at settlement, with premiums streaming from accrued yield.

Integration overview

circle-info

The contract supports ERC‑7540arrow-up-right's two-step asynchronous lifecycle for deposits and withdrawals, as well as extended single-transaction deposit/withdrawal flows, both preserving non‑custodial ownership. In both cases, coverage activates at deposit settlement and detaches at redemption settlement.

As an example case, we cover Steakhouse Financial's Smokehouse USDC Morpho vaultarrow-up-right and assume the user already holds bbqUSDC shares that they wish to insure through the Insured Vault.

Deposit flow

To start earning insured yield, the user deposits vault shares from the yield-vault (bbqUSDC in case of Morpho Smokehouse USDC) into the Insured Vault.

1

Submit a deposit request

  • Create a transaction calling the requestDeposit(asset, controller, owner) function on the Insured Vault contract to create a deposit request.

  • Use pendingDepositRequest(requestId, controller) to fetch assets pending coverage.

  • Requests can be canceled any time before settlement.

// Request to deposit 10,000 bbqUSDC.
metavault.requestDeposit(10_000e18, msg.sender, msg.sender);

// Fetch assets pending coverage.
uint256 assetsPending = metavault.pendingDepositRequest(0, msg.sender);
2

Settlement & coverage activation

  • Requests are batch‑settled typically within 2 Ethereum blocks (<30 seconds).

  • On settlement, the keeper pushes OC-bbqUSDC directly to the user's wallet via pushDepositShares. Coverage activates and auto-renews while shares remain in the Insured Vault.

See Cover vault shares for alternative claim paths (deposit, mint) and cancellation.

Withdrawal flow

When leaving the Insured Vault, the user redeems OC-bbqUSDC for bbqUSDC.

1

Submit a redemption request

  • Call requestRedeem(shares, controller, owner) with shares specified in covered Insured Vault shares (e.g. OC-bbqUSDC).

  • The Insured Vault records the request and locks the shares.

  • Use pendingRedeemRequest(requestId, controller) to fetch shares pending redemption.

  • Requests can be canceled any time before settlement.

// Redeem all covered shares (OC-bbqUSDC) for the deposited asset (bbqUSDC).
uint256 shares = metavault.balanceOf(msg.sender);
uint256 reqId = metavault.requestRedeem(shares, msg.sender, msg.sender);
2

Settlement & coverage end

  • Pending withdrawal requests settle in FIFO order.

  • On settlement, the keeper pushes bbqUSDC directly to the user's wallet via pushRedeemAssets. Coverage ends for the redeemed portion.

  • Requests typically settle within 2 Ethereum blocks (<30 seconds), pending incoming deposits and underlying policy expiry.

  • If not settled within 24 hours, the onchain exit guarantee enables the user to withdraw bbqUSDC permissionlessly.

// After 24 hours, redemption requests can be user-settled.
metavault.settleMaturedRedemption(reqId);

See Redeem covered shares for alternative claim paths (redeem, withdraw) and cancellation.

Full integration example

For a complete end-to-end code example, see Full integration example.

Last updated