solana.lending.withdrawals table contains Solana lending withdrawal events. This table tracks all liquidity-removal activity across supported lending protocols on Solana (Kamino, MarginFi, Jupiter Lend, and Save).
Use this table to analyze withdrawal patterns, track capital outflows, and understand liquidity dynamics in lending protocols.
Table Details
| Property | Value |
|---|---|
| Table Name | solana.lending.withdrawals |
| Table Status | Production-Ready |
| Unique Key | block_timestamp, unique_id |
| Clustering Key(s) | block_timestamp::date |
Table Columns
| Column Name | Data Type | Description |
|---|---|---|
| project | VARCHAR(16777216) | Business name of the protocol being used (e.g. kamino, marginfi, jupiter). |
| protocol | VARCHAR(16777216) | Specific version or variant of the protocol (e.g. klend, marginfi, juplend). |
| lending_event | VARCHAR(16777216) | Category of lending event. One of: deposits, withdrawals, borrows, repayments, liquidations. |
| event_name | VARCHAR(16777216) | Name of the decoded instruction or event that produced this record (e.g. redeem_reserve_collateral, lending_account_withdraw). |
| program_id | VARCHAR(16777216) | Program-owned market PDA (reserve / bank / vault), not the Solana program ID. |
| withdrawer_address | VARCHAR(16777216) | Address of the withdrawer. |
| target_address | VARCHAR(16777216) | Address of the target recipient of the withdrawn tokens. |
| mint | VARCHAR(16777216) | Base58-encoded mint address of the SPL token being withdrawn. |
| token_name | VARCHAR(16777216) | Full name of the token being withdrawn. |
| token_symbol | VARCHAR(16777216) | Ticker symbol of the token being withdrawn. |
| token_decimals | NUMBER(38,0) | Number of decimal places used to represent the token’s smallest unit. |
| raw_amount_str | VARCHAR(16777216) | Token amount in the smallest unit, as a string, to retain precision. Null when a protocol’s “withdraw all” instruction parameter is used. |
| amount_str | VARCHAR(16777216) | Normalized token amount, as a string, to retain precision. |
| amount | FLOAT | Token amount normalized by the token’s decimal precision. |
| usd_amount | FLOAT | USD value of the tokens withdrawn at the time of the transaction. |
| usd_exchange_rate | FLOAT | USD price per unit of the token at the time of the event. |
| extra_fields | VARIANT | JSON object containing additional fields from the onchain event that are not part of the standard schema. |
| txn_id | VARCHAR(16777216) | Base58-encoded transaction signature on Solana. |
| txn_index | NUMBER(38,0) | Zero-based position of this transaction within its slot. |
| signer | VARCHAR(16777216) | Primary signing account (fee payer) of the transaction. |
| instruction_index | NUMBER(38,0) | Zero-based position of this instruction within the transaction’s top-level instructions array. |
| inner_instruction_index | NUMBER(38,0) | Zero-based position of this inner instruction within its parent instruction’s inner instructions array. -1 for top-level instructions. |
| pseudo_instruction_order | NUMBER(38,0) | Internal ordering key for instructions within a transaction that may lack an explicit index. |
| block_slot | NUMBER(38,0) | Solana slot number in which this transaction was confirmed. |
| block_height | NUMBER(38,0) | Number of confirmed blocks between this block and the genesis block (inclusive). |
| block_timestamp | TIMESTAMP_NTZ(9) | Timestamp (UTC) of the block in which this event was confirmed. |
| block_hash | VARCHAR(16777216) | Cryptographic hash of the block header that contains this record. |
| unique_id | VARCHAR(16777216) | Allium’s deterministic unique identifier for this row. |
| _created_at | TIMESTAMP_NTZ(9) | Timestamp (UTC) when this row was first written to the Allium platform. |
| _updated_at | TIMESTAMP_NTZ(9) | Timestamp (UTC) of the most recent update to this row. |
Sample Query
- Recent Withdrawals
- Daily Withdrawal Volume
Get recent withdrawal events with essential details:
select
project,
protocol,
token_symbol,
amount,
usd_amount,
withdrawer_address,
block_timestamp
from solana.lending.withdrawals
where block_timestamp >= current_timestamp - interval '7 days'
order by block_timestamp desc
limit 100
Calculate daily withdrawal volume by protocol:
select
date(block_timestamp) as day,
project,
protocol,
count(*) as withdrawal_count,
sum(usd_amount) as total_volume_usd
from solana.lending.withdrawals
where block_timestamp >= current_timestamp - interval '30 days'
group by day, project, protocol
order by day desc, total_volume_usd desc