Skip to main content
Schema: solana.defi Table: ez_lending_deposits Type: Base Table

What

Description

This table captures deposit events across Solana DeFi lending protocols including Kamino and MarginFi. Each row represents a single deposit transaction where users supply assets to lending pools to earn passive income and provide collateral for potential borrowing. The data includes enriched transaction details with USD pricing, token metadata, and protocol identification, supporting comprehensive analytics on lending market supply-side activity and user behavior.

Key Use Cases

  • Track deposit flows and liquidity provision patterns across lending protocols
  • Analyze user deposit behavior and capital allocation strategies
  • Monitor total value locked (TVL) growth and composition in lending markets
  • Study protocol adoption and user preferences in the lending ecosystem
  • Calculate interest accrual and yield analysis for deposited assets
  • Support risk assessment and collateralization analysis

Important Relationships

  • Related to defi.ez_lending_borrows for analyzing borrowing against deposits
  • Related to defi.ez_lending_withdraws for tracking deposit lifecycle completion
  • Connects to core.ez_transfers for underlying asset movement verification
  • Links to price.ez_prices_hourly for USD valuation and pricing analysis
  • Joins with core.fact_transactions for complete transaction context

Commonly-used Fields

  • block_timestamp: For time-series analysis and deposit timing patterns
  • platform, protocol: For protocol-specific analysis and market share tracking
  • depositor: For user behavior analysis and whale deposit tracking
  • token_address, token_symbol: For asset-specific deposit analysis
  • amount, amount_usd: For volume analysis and value-based metrics
  • protocol_market: For market-specific utilization and performance analysis

Sample Queries

Daily deposit volume by protocol

-- Daily lending deposits by protocol
SELECT 
    DATE_TRUNC('day', block_timestamp) AS date,
    platform,
    COUNT(DISTINCT tx_id) AS deposit_txns,
    COUNT(DISTINCT depositor) AS unique_depositors,
    SUM(amount) AS tokens_deposited,
    SUM(amount_usd) AS usd_deposited,
    AVG(amount_usd) AS avg_deposit_size
FROM solana.defi.ez_lending_deposits
WHERE block_timestamp >= CURRENT_DATE - 30
    AND amount_usd IS NOT NULL
GROUP BY 1, 2
ORDER BY 1 DESC, 6 DESC;

Protocol market share analysis

-- Protocol market share analysis
WITH protocol_totals AS (
    SELECT 
        platform,
        SUM(amount_usd) AS total_usd_deposited,
        COUNT(DISTINCT depositor) AS unique_depositors,
        COUNT(*) AS total_deposits
    FROM solana.defi.ez_lending_deposits
    WHERE block_timestamp >= CURRENT_DATE - 90
        AND amount_usd IS NOT NULL
    GROUP BY platform
)
SELECT 
    platform,
    total_usd_deposited,
    total_usd_deposited * 100.0 / SUM(total_usd_deposited) OVER () AS market_share_pct,
    unique_depositors,
    total_deposits,
    total_usd_deposited / total_deposits AS avg_deposit_size
FROM protocol_totals
ORDER BY total_usd_deposited DESC;

Depositor behavior patterns

-- Depositor behavior patterns
WITH depositor_activity AS (
    SELECT 
        depositor,
        COUNT(DISTINCT platform) AS protocols_used,
        COUNT(*) AS total_deposits,
        SUM(amount_usd) AS total_usd_deposited,
        MIN(block_timestamp) AS first_deposit,
        MAX(block_timestamp) AS last_deposit,
        COUNT(DISTINCT DATE_TRUNC('month', block_timestamp)) AS active_months
    FROM solana.defi.ez_lending_deposits
    WHERE amount_usd IS NOT NULL
    GROUP BY depositor
)
SELECT 
    CASE 
        WHEN total_usd_deposited < 1000 THEN '< $1K'
        WHEN total_usd_deposited < 10000 THEN '$1K-$10K'
        WHEN total_usd_deposited < 100000 THEN '$10K-$100K'
        ELSE '$100K+'
    END AS depositor_tier,
    COUNT(*) AS depositor_count,
    AVG(total_deposits) AS avg_deposits_per_user,
    AVG(protocols_used) AS avg_protocols_used,
    SUM(total_usd_deposited) AS tier_total_usd
FROM depositor_activity
GROUP BY depositor_tier
ORDER BY MIN(total_usd_deposited);

Large deposits monitoring (whale activity)

-- Large deposits monitoring (whale activity)
SELECT 
    block_timestamp,
    tx_id,
    platform,
    depositor,
    token_symbol,
    amount,
    amount_usd,
    protocol_market
FROM solana.defi.ez_lending_deposits
WHERE amount_usd >= 100000
    AND block_timestamp >= CURRENT_DATE - 7
ORDER BY amount_usd DESC;

Weekly deposit momentum

-- Weekly deposit momentum
WITH weekly_deposits AS (
    SELECT 
        DATE_TRUNC('week', block_timestamp) AS week,
        platform,
        SUM(amount_usd) AS weekly_usd_deposited,
        COUNT(DISTINCT depositor) AS unique_depositors
    FROM solana.defi.ez_lending_deposits
    WHERE block_timestamp >= CURRENT_DATE - 84
        AND amount_usd IS NOT NULL
    GROUP BY 1, 2
)
SELECT 
    week,
    platform,
    weekly_usd_deposited,
    LAG(weekly_usd_deposited) OVER (PARTITION BY platform ORDER BY week) AS prev_week_usd,
    (weekly_usd_deposited / NULLIF(LAG(weekly_usd_deposited) OVER (PARTITION BY platform ORDER BY week), 0) - 1) * 100 AS week_over_week_pct,
    unique_depositors
FROM weekly_deposits
ORDER BY week DESC, weekly_usd_deposited DESC;

Columns

Column NameData TypeDescription
PLATFORMTEXTThe name of the lending platform or protocol where the transaction occurred. This identifies the specific DeFi lending service provider. Data type: STRING Business context: Used to categorize lending activity by platform, analyze platform-specific metrics, and compare lending volumes across different protocols. Analytics use cases: Platform performance analysis, market share tracking, and cross-platform lending behavior studies. Example: ‘kamino’, ‘marginfi v2’
PROTOCOLTEXTThe core protocol name that powers the lending platform. This provides a standardized identifier for the underlying lending technology. Data type: STRING Business context: Used to group related platforms by their underlying protocol technology, enabling analysis of protocol adoption and usage. Analytics use cases: Protocol ecosystem analysis, technology adoption tracking, and protocol performance comparisons. Example: ‘kamino’, ‘marginfi’
VERSIONTEXTThe version identifier of the lending protocol being used. This helps track different iterations and upgrades of lending protocols. Data type: STRING Business context: Used to analyze adoption of protocol upgrades, compare performance across versions, and track protocol evolution. Analytics use cases: Version adoption analysis, upgrade impact assessment, and historical protocol development tracking. Example: ‘v1’, ‘v2’
BLOCK_TIMESTAMPTIMESTAMP_NTZThe timestamp (UTC) at which the block was produced on the Solana blockchain. This field is recorded as a TIMESTAMP data type and represents the precise moment the block was finalized and added to the chain. It is essential for time-series analysis, block production monitoring, and aligning transaction and event data to specific points in time. Used extensively for analytics involving block intervals, network activity trends, and historical lookups. Format: YYYY-MM-DD HH:MI:SS (UTC).
BLOCK_IDNUMBERA unique identifier for the block in which this transaction was included on the Solana blockchain. Typically a sequential integer or hash, depending on the data source. Used to group transactions by block and analyze block-level activity. Example: 123456789 Business Context: Supports block-level analytics, such as block production rate and transaction throughput. Useful for tracing transaction inclusion and block explorer integrations. Relationships: All transactions with the same ‘blockid’ s…
TX_IDTEXTThe unique transaction signature (hash) for each transaction on the Solana blockchain. This field is a base58-encoded string, typically 88 characters in length, and serves as the primary identifier for transactions across all Solana data models. Used to join transaction data with related tables (blocks, events, transfers, logs, decoded instructions) and to trace the full lifecycle and effects of a transaction. Essential for transaction-level analytics, debugging, and cross-referencing with bl…
INDEXNUMBERThe position of the transfer event within the list of events for a given Solana transaction. Used to order and reference transfers within a transaction. Indexing starts at 0 for the first event. Data type: Integer Example: 0 (first transfer in the transaction) 2 (third transfer in the transaction) Business Context: Enables reconstruction of transfer order and analysis of intra-transaction asset movement. Used to join, filter, or segment data for protocol analytics, error tracing, and event se…
INNER_INDEXNUMBERThe position of the inner instruction or event within the list of inner instructions for a given Solana transaction. Used to order and reference nested (CPI) instructions. Indexing starts at 0 for the first inner instruction. Example: 0 2 Business Context: Enables precise identification and ordering of nested program calls (Cross-Program Invocations) within a transaction. Critical for analyzing composability, protocol integrations, and the full execution path of complex transactions.
PROGRAM_IDTEXTThe unique public key (base58-encoded address) of a Solana program. This field identifies the on-chain program (smart contract) responsible for processing instructions, emitting events, or managing accounts. Used throughout Solana analytics models—including events, transactions, IDLs, and program activity tables—to join, filter, and analyze program-level data. Example: “4Nd1mY…” “TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA” Business Context: Used as a join key for program activity, deployme…
EVENT_TYPETEXTA string categorizing the type of event or instruction, such as ‘transfer’, ‘mint’, ‘burn’, or protocol-specific actions. Example: ‘transfer’ ‘mint’ ‘burn’ Business Context: Enables segmentation and filtering of on-chain activity for analytics and dashboards. Used to group and analyze protocol-specific actions and user behaviors. Relationships: May be derived from decoded instruction data or protocol-specific logic.
DEPOSITORTEXTThe wallet address of the user who is depositing assets into the lending protocol. This is the lender who supplies liquidity to earn interest and potentially use their deposits as collateral for borrowing. Data type: STRING (base58 Solana address) Business context: Used to track deposit behavior, analyze liquidity provision patterns, and identify active lenders in the lending ecosystem. Analytics use cases: Depositor behavior analysis, liquidity tracking, yield farming analysis, and lender us…
PROTOCOL_MARKETTEXTThe protocol-specific token or market identifier that represents the lending pool or reserve. This is typically a wrapped version of the underlying asset used by the protocol for accounting. Data type: STRING (base58 Solana address) Business context: Used to identify specific lending markets within protocols, track market-specific metrics, and analyze asset utilization rates. Analytics use cases: Market performance analysis, asset utilization tracking, and protocol-specific lending pool analy…
TOKEN_ADDRESSTEXTUnique address representing a specific token
TOKEN_SYMBOLTEXTThe symbol of the token involved in the action (e.g., SOL, USDC, RAY). Used to identify the asset type in analytics and reporting. Data type: String Example: SOL USDC Business Context: Enables grouping and filtering of transfers by token. Supports analytics on asset flows, protocol usage, and user preferences.
TOKEN_IS_VERIFIEDBOOLEANA flag indicating if the asset has been verified by the Flipside team.
AMOUNT_RAWNUMBERUnadjusted amount of tokens as it appears on-chain before decimal precision adjustments are applied. This preserves the exact on-chain representation of the token amount for precise calculations and verification. Data type: NUMBER Business context: Used for precise calculations, audit trails, and verification against on-chain data. Essential for maintaining data integrity and performing exact mathematical operations without rounding errors. Analytics use cases: Precision calculations, data va…
AMOUNTFLOATThe amount of the asset transferred in the event. For native SOL, this is decimal adjusted and is not in Lamports. For SPL tokens, this is decimal adjusted according to the token’s mint. Represents the value moved from sender to recipient in a single transfer event. Data type: Numeric (integer for lamports, decimal for tokens) Example: USDC: 50.00 (represents 50 USDC tokens) Business Context: Used to analyze transaction volumes, user activity, and protocol flows. Supports aggregation of asset…
AMOUNT_USDFLOATThe USD value of the transferred amount, calculated using the token price at the time of the transfer. This field enables value-based analytics and comparisons across different tokens. Data type: Numeric (decimal) Example: 123.45 (represents $123.45 USD) Business Context: Used for tracking transaction volumes, wallet activity, and payment flows in USD terms. Supports analytics on large value transfers, protocol revenue, and user behavior.
EZ_LENDING_DEPOSITS_IDTEXTA unique, stable identifier for each record in this table. The primary key (PK) ensures that every row is uniquely identifiable and supports efficient joins, lookups, and data integrity across models. The PK may be a natural key (such as a blockchain transaction hash) or a surrogate key generated from one or more fields, depending on the table’s structure and requirements.
INSERTED_TIMESTAMPTIMESTAMP_NTZThe timestamp when this transaction record was first inserted into the analytics database. Used for data freshness tracking and incremental model logic. Format: YYYY-MM-DD HH:MI:SS. Not derived from the blockchain, but from the ETL process.
MODIFIED_TIMESTAMPTIMESTAMP_NTZThe timestamp when this transaction record was last updated in the analytics database. Used for tracking updates and supporting incremental model logic. Format: YYYY-MM-DD HH:MI:SS. Not derived from the blockchain, but from the ETL process.