Skip to main content
Vault protocols enable users to deposit assets into strategies that dynamically allocate capital across lending markets, staking, and yield opportunities. Dune provides access to decoded on-chain event data for vault-level activity including deposits, withdrawals, interest accrual, reallocation, and liquidations.

Get This Data

Access decoded vault tables via SQL in the Dune App, API, or Datashare.
ProtocolsMorpho, Euler (v1 & v2), Aave v3, Fluid, Kamino (Solana), Lido (liquid staking)
ChainsEthereum, Base, Arbitrum, Polygon, BNB, Solana, and others (coverage varies by protocol)
Data availableDeposits & withdrawals · Interest accrual & yield signals · Liquidations & risk events · Vault reallocation / strategy activity · User-level interactions
Data formatABI-decoded event & call tables (protocol-specific schemas) · Accessible via SQL, API, or Datashare
Best forVault flows & TVL estimation · Yield strategy analysis · Cross-protocol comparisons (with custom logic) · Risk / liquidation monitoring
No unified dataset yet. Vault analysis currently requires protocol-specific logic using decoded event tables. A curated vaults.* dataset is on the roadmap. Contact our enterprise team to request priority access or share your use case.
For curated lending data (supply, borrow, flash loans, liquidations) that covers Aave and other lending protocols in a normalized schema, see the Lending section.

Protocol Coverage

Morpho

MetaMorpho Vaults (Vault-Level Activity)

Primary dataset for vault-level analysis. MetaMorpho vaults are curated lending strategies that allocate deposits across Morpho Blue markets. Namespace: metamorpho_vaults_multichain.* Chains: Ethereum, Base Chain-specific tables also available: metamorpho_vaults_ethereum.*, metamorpho_vaults_base.*
TableDescription
metamorpho_vaults_multichain.metamorpho_evt_depositDeposit events (assets deposited, shares minted)
metamorpho_vaults_multichain.metamorpho_evt_withdrawWithdrawal events (shares burned, assets returned)
metamorpho_vaults_multichain.metamorpho_evt_transferVault share transfers between addresses
metamorpho_vaults_multichain.metamorpho_evt_accrueinterestInterest accrual events for yield tracking
metamorpho_vaults_multichain.metamorpho_evt_reallocatesupplySupply reallocation across underlying markets
metamorpho_vaults_multichain.metamorpho_evt_setwithdrawqueueWithdraw queue configuration updates
metamorpho_vaults_multichain.metamorpho_evt_setcapMarket cap limit updates
Example — Daily Deposits by Vault:
SELECT
    block_date,
    contract_address AS vault_address,
    COUNT(*) AS num_deposits,
    COUNT(DISTINCT sender) AS unique_depositors
FROM metamorpho_vaults_ethereum.metamorpho_evt_deposit
WHERE block_date >= CURRENT_DATE - INTERVAL '30' DAY
GROUP BY 1, 2
ORDER BY 1 DESC

Morpho Core (Market-Level Activity)

Underlying lending market activity used by MetaMorpho vaults. Useful for understanding where vault capital is deployed. Namespace: morpho_multichain.* Chains: Arbitrum, Corn, Sonic, Unichain, Flare, Plume
TableDescription
morpho_multichain.morpho_evt_supplySupply events to lending markets
morpho_multichain.morpho_evt_borrowBorrow events from lending markets
morpho_multichain.morpho_evt_repayLoan repayment events
morpho_multichain.morpho_evt_withdrawWithdrawal events from lending markets
morpho_multichain.morpho_evt_supplycollateralCollateral supply events
morpho_multichain.morpho_evt_withdrawcollateralCollateral withdrawal events
morpho_multichain.morpho_evt_liquidateLiquidation events
morpho_multichain.morpho_evt_createmarketNew market creation events
morpho_multichain.morpho_evt_accrueinterestInterest accrual at the market level

Euler

Euler v2 (EVaults)

Primary dataset for Euler’s vault-style lending markets across multiple chains. Namespace: euler_v2_<chain>.* (e.g., euler_v2_ethereum.*, euler_v2_base.*) Chains: Ethereum, Arbitrum, Base, Berachain, Unichain, Bob, TAC Event Tables:
TableDescription
euler_v2_<chain>.evault_evt_depositVault deposit events
euler_v2_<chain>.evault_evt_liquidateLiquidation events
Call Tables:
TableDescription
euler_v2_<chain>.evault_call_depositDeposit function calls
euler_v2_<chain>.evault_call_withdrawWithdrawal function calls
euler_v2_<chain>.evault_call_liquidateLiquidation function calls
Example — Euler v2 Deposits Across Chains (30d):
SELECT
    'ethereum' AS chain,
    date_trunc('day', evt_block_time) AS day,
    COUNT(*) AS num_deposits
FROM euler_v2_ethereum.evault_evt_deposit
WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
GROUP BY 1, 2

UNION ALL

SELECT
    'base' AS chain,
    date_trunc('day', evt_block_time) AS day,
    COUNT(*) AS num_deposits
FROM euler_v2_base.evault_evt_deposit
WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
GROUP BY 1, 2

UNION ALL

SELECT
    'arbitrum' AS chain,
    date_trunc('day', evt_block_time) AS day,
    COUNT(*) AS num_deposits
FROM euler_v2_arbitrum.evault_evt_deposit
WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
GROUP BY 1, 2

ORDER BY day DESC, chain

Euler v1 (Legacy — Ethereum Only)

Namespace: euler_ethereum.*

Euler Plasma (Vault Framework)

Advanced vault infrastructure with ~20+ tables covering controller status, account checks, operator management, and batch operations. Namespace: euler_plasma.* Key Event Tables:
TableDescription
euler_plasma.vault_evt_controllerstatusController status changes
euler_plasma.vault_evt_accountstatuscheckAccount status verification events
euler_plasma.vault_evt_vaultstatuscheckVault status verification events
euler_plasma.vault_evt_operatorstatusOperator permission changes
euler_plasma.vault_evt_ownerregisteredOwner registration events
Key Call Tables:

Aave v3

Aave v3 is a lending protocol where each reserve acts as a pool accepting deposits and issuing borrows. While not a “vault” protocol in the MetaMorpho sense, Aave pools function similarly for deposit/withdraw tracking and are commonly analyzed alongside vault protocols. Namespace: aave_v3_multichain.* Chains: Ethereum, Base, Arbitrum, Avalanche, BNB, Celo, Fantom, Gnosis, Mantle, MegaETH, Optimism, Polygon, Sonic, zkSync L2-specific tables: aave_v3_multichain.l2pool_* for Arbitrum, Base, Ink, Linea, Mantle, Scroll Example — Supply Events by Chain (30d):
SELECT
    chain,
    COUNT(*) AS num_supplies,
    COUNT(DISTINCT "user") AS unique_suppliers
FROM aave_v3_multichain.pool_evt_supply
WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
GROUP BY 1
ORDER BY num_supplies DESC
For normalized lending data across Aave and other protocols, see the Lending curated tables which provide a unified schema.

Fluid

Fluid uses a tiered vault architecture (T1–T4) for borrowing with different collateral and debt configurations. Namespace: fluid_multichain.* Chains: Arbitrum, Base, BNB, Ethereum, Plasma, Polygon

Vault Operations

TableDescription
fluid_multichain.fluidvaultt1_evt_logoperateT1 vault operations (single collateral, single debt)
fluid_multichain.fluidvaultt2_evt_logoperateT2 vault operations (single collateral, multi debt)
fluid_multichain.fluidvaultt3_evt_logoperateT3 vault operations (multi collateral, single debt)
fluid_multichain.fluidvaultt4_evt_logoperateT4 vault operations (multi collateral, multi debt)

Liquidations

Other Events

Example — Vault Operations by Type (30d):
SELECT
    'T1' AS vault_type,
    date_trunc('day', evt_block_time) AS day,
    COUNT(*) AS num_operations
FROM fluid_multichain.fluidvaultt1_evt_logoperate
WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
GROUP BY 1, 2

UNION ALL

SELECT
    'T2' AS vault_type,
    date_trunc('day', evt_block_time) AS day,
    COUNT(*) AS num_operations
FROM fluid_multichain.fluidvaultt2_evt_logoperate
WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
GROUP BY 1, 2

UNION ALL

SELECT
    'T3' AS vault_type,
    date_trunc('day', evt_block_time) AS day,
    COUNT(*) AS num_operations
FROM fluid_multichain.fluidvaultt3_evt_logoperate
WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
GROUP BY 1, 2

UNION ALL

SELECT
    'T4' AS vault_type,
    date_trunc('day', evt_block_time) AS day,
    COUNT(*) AS num_operations
FROM fluid_multichain.fluidvaultt4_evt_logoperate
WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
GROUP BY 1, 2

ORDER BY day DESC, vault_type

Kamino (Solana)

Kamino vaults on Solana allocate deposits into lending reserves with automated strategy management. Namespace: kamino_vault_solana.* Chain: Solana

Event Tables

TableDescription
kamino_vault_solana.kamino_vault_evt_depositresulteventDeposit results (shares minted, tokens deposited)
kamino_vault_solana.kamino_vault_evt_withdrawresulteventWithdraw results (shares burned, tokens returned)
kamino_vault_solana.kamino_vault_evt_deposituseratabalanceeventUser ATA balance after deposit
kamino_vault_solana.kamino_vault_evt_sharestowithdraweventShares available for withdrawal

Call Tables

Example — Kamino Vault Deposits on Solana (30d):
SELECT
    date_trunc('day', call_block_time) AS day,
    COUNT(*) AS num_deposits,
    COUNT(DISTINCT tx_signer) AS unique_depositors
FROM kamino_vault_solana.kamino_vault_call_deposit
WHERE call_block_time >= NOW() - INTERVAL '30' DAY
    AND call_success = true
GROUP BY 1
ORDER BY 1 DESC

Lido (Liquid Staking)

Lido provides liquid staking for ETH via stETH. While primarily a staking protocol, Lido’s architecture includes vault-related components (VaultFactory, VaultHub, StakingVault) under the lido_ethereum namespace. Namespace: lido_ethereum.* Chain: Ethereum

stETH Core (Staking Activity)

TableDescription
lido_ethereum.steth_evt_submittedETH staking deposits (stETH minted)
lido_ethereum.steth_evt_transferstETH token transfers
lido_ethereum.steth_evt_transfersharesShare-based transfers
lido_ethereum.steth_evt_ethdistributedETH rewards distribution
lido_ethereum.steth_evt_tokenrebasedRebase events (balance updates)
lido_ethereum.steth_evt_elrewardsreceivedExecution layer rewards

Withdrawal Queue

Vault Infrastructure

Example — Lido stETH Deposits vs Withdrawal Requests (30d):
WITH deposits AS (
    SELECT
        date_trunc('day', evt_block_time) AS day,
        SUM(CAST(amount AS DOUBLE)) / 1e18 AS eth_deposited
    FROM lido_ethereum.steth_evt_submitted
    WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
    GROUP BY 1
),
withdrawals AS (
    SELECT
        date_trunc('day', evt_block_time) AS day,
        SUM(CAST(amountOfStETH AS DOUBLE)) / 1e18 AS steth_withdrawal_requested
    FROM lido_ethereum.withdrawalqueueerc721_evt_withdrawalrequested
    WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
    GROUP BY 1
)

SELECT
    COALESCE(d.day, w.day) AS day,
    COALESCE(d.eth_deposited, 0) AS eth_deposited,
    COALESCE(w.steth_withdrawal_requested, 0) AS steth_withdrawal_requested,
    COALESCE(d.eth_deposited, 0) - COALESCE(w.steth_withdrawal_requested, 0) AS net_flow
FROM deposits d
FULL OUTER JOIN withdrawals w ON d.day = w.day
ORDER BY day DESC

Common Analysis Patterns

Deposits & Withdrawals

Track capital inflows and outflows per vault or protocol. Most protocols emit separate deposit and withdraw events with amount fields.

TVL Estimation

Aggregate deposits minus withdrawals over time. For USD denomination, join with prices.day, prices.hour, or prices.minute depending on the granularity needed. Accurate point-in-time TVL will improve once the Balances tables are fully available.

Volume Tracking

Sum deposit and withdrawal amounts over time intervals to measure vault activity and capital velocity.

Unique Depositors

Count distinct wallet addresses interacting with vault deposit events to track user adoption.

Reallocation Analysis

For protocols like Morpho (MetaMorpho), track how vaults shift capital across underlying markets using reallocation events.

Liquidations

Monitor liquidation events across protocols to assess vault health and risk.

Cross-Protocol Starter Query

Daily Deposit Events Across Protocols (30d):
WITH morpho AS (
    SELECT date_trunc('day', evt_block_time) AS day, 'Morpho (MetaMorpho)' AS protocol, COUNT(*) AS deposit_events
    FROM metamorpho_vaults_multichain.metamorpho_evt_deposit
    WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
    GROUP BY 1
),
aave AS (
    SELECT date_trunc('day', evt_block_time) AS day, 'Aave v3' AS protocol, COUNT(*) AS deposit_events
    FROM aave_v3_multichain.pool_evt_supply
    WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
    GROUP BY 1
),
lido AS (
    SELECT date_trunc('day', evt_block_time) AS day, 'Lido' AS protocol, COUNT(*) AS deposit_events
    FROM lido_ethereum.steth_evt_submitted
    WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
    GROUP BY 1
),
fluid AS (
    SELECT date_trunc('day', evt_block_time) AS day, 'Fluid' AS protocol, COUNT(*) AS deposit_events
    FROM fluid_multichain.fluidvaultt1_evt_logoperate
    WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
    GROUP BY 1
),
euler AS (
    SELECT date_trunc('day', evt_block_time) AS day, 'Euler v2' AS protocol, COUNT(*) AS deposit_events
    FROM euler_v2_ethereum.evault_evt_deposit
    WHERE evt_block_time >= NOW() - INTERVAL '30' DAY
    GROUP BY 1
)

SELECT * FROM morpho
UNION ALL SELECT * FROM aave
UNION ALL SELECT * FROM lido
UNION ALL SELECT * FROM fluid
UNION ALL SELECT * FROM euler
ORDER BY day DESC, protocol

Notes & Limitations

  • No unified dataset: Analysis requires protocol-specific logic. Each protocol has its own event schema and naming conventions.
  • Coverage varies: Not all protocols are decoded on all chains. Check the data explorer for the latest availability.
  • TVL is approximate: Deposit-minus-withdrawal tracking provides a proxy. For precise TVL, combine with balance snapshots and pricing data from prices.day or prices.hour.
  • APY data not available: On-chain yield/APY calculation requires combining interest accrual events with token pricing and time-weighted math. This is complex and protocol-specific.
  • Holder counts deferred: Accurate holder tracking requires the Balances tables, which are in open beta.
  • Some protocols overlap with Lending: Aave v3 data is also covered in the Lending curated tables in a normalized schema. Use the curated lending tables for cross-protocol comparisons, and decoded tables here for vault-specific or protocol-specific analysis.
  • Token decimals vary per vault: MetaMorpho vault assets values are denominated in the underlying token’s smallest unit (e.g., 6 decimals for USDC, 18 for WETH). Always join with tokens.erc20 for decimal normalization before computing USD values via prices.day.
  • Event counts ≠ volume: Cross-protocol event count comparisons are directional only. Some protocols (e.g., Fluid) emit a single event per operation that covers supply + borrow + repay, while others have separate events.
  • Automated activity: Some chains (e.g., Gnosis on Aave v3) show high event counts driven by automated/bot activity rather than organic user deposits.

Lending

Curated supply, borrow, flash loan, and liquidation data across lending protocols

Balances

Token balance snapshots for holder analysis

Prices

Token pricing for USD denomination

Token Transfers

Raw transfer events for flow analysis

DEX Trades

DEX activity for vault token trading

Enterprise Data Solutions

Need a unified vaults dataset, custom vault analytics, or dedicated support? Talk to our enterprise team.