Skip to main content
Schema: solana.core Table: fact_sol_balances Type: Base Table

View DBT Documentation

View the complete technical documentation and data lineage for this table

Description

This table contains one row per account and transaction where a native SOL (Solana) balance changes on the Solana blockchain. It tracks pre- and post-transaction balances for each account, including block, transaction, mint, and owner information. Balances are adjusted for SOL’s 9 decimal places. Each row represents a unique account-transaction balance change event, enabling analysis of SOL balance changes, account activity, and ownership attribution at the transaction level.

Key Use Cases

  • Analyze SOL balance changes and account activity
  • Attribute SOL balances and transfers to the correct owner at any point in time
  • Support analytics on SOL flows, DeFi protocol activity, and wallet histories
  • Study SOL distribution, holder analysis, and whale tracking
  • Enable time-series and event-based analytics on SOL balances

Important Relationships

  • Closely related to core.fact_token_account_owners (for historical ownership), core.fact_events (for event context), and core.ez_transfers (for transfer events)
  • Use core.fact_token_account_owners to attribute balances to the correct owner
  • Use core.fact_events for event-level context and protocol interactions
  • Use core.ez_transfers for asset movement and transfer analytics
  • Joins with core.fact_blocks for block context and core.fact_transactions for transaction context

Commonly-used Fields

  • block_timestamp: For time-series and balance change analysis
  • block_id, tx_id, tx_index: For unique identification and joins
  • account_address, mint, owner: For account, token, and ownership analytics
  • pre_balance, balance: For before/after balance analysis

Columns

Column NameData TypeDescription
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.
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 block explorers or Solana APIs.
SUCCEEDEDBOOLEANBoolean flag indicating whether the transaction was successfully executed and confirmed on the Solana blockchain. A value of TRUE means the transaction was processed without errors; FALSE indicates failure due to program errors, insufficient funds, or other issues.
ACCOUNT_ADDRESSTEXTThe base58-encoded address of the account holding the asset. For native SOL, this is the wallet address. For SPL tokens, this is the token account address. Used to attribute balances and transfers to specific accounts.
MINTTEXTUnique address representing a specific token
OWNERTEXTThe wallet address holding the native SOL. For native SOL, the owner is always the same as the account address, since SOL is not held in a separate token account.
PRE_BALANCEFLOATThe account’s balance before the transaction, decimal-adjusted. For SOL, this is in units of SOL (not lamports); for tokens, this is in the token’s native units (adjusted for mint decimals).
BALANCEFLOATThe account’s balance after the transaction, decimal-adjusted. For SOL, this is in units of SOL (not lamports); for tokens, this is in the token’s native units (adjusted for mint decimals).
FACT_SOL_BALANCES_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.
TX_INDEXNUMBERThe position of this transaction within its containing block, starting from zero. Used to order transactions within a block and analyze intra-block activity.

Column Details

BLOCK_ID

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 block_id share the same block_timestamp.

TX_ID

Example:
  • 5Nf6Q2k6v1Qw2k3v4Qw5Nf6Q2k6v1Qw2k3v4Qw5Nf6Q2k6v1Qw2k3v4Qw5Nf6Q2k6v1Qw2k3v4Qw
Business Context:
  • Enables precise tracking, auditing, and attribution of on-chain activity
  • Used for linking transactions to events, logs, and protocol actions
  • Critical for compliance, monitoring, and analytics workflows

SUCCEEDED

Example:
  • true
  • false
Business Context:
  • Used to filter for successful transactions in analytics and reporting.
  • Important for error analysis, user experience, and program debugging.

ACCOUNT_ADDRESS

Example:
  • Native SOL: 7GgkQ2... (wallet address)
  • SPL Token: 9xQeWv... (token account address)

OWNER

Example:
  • 7GgkQ2...

PRE_BALANCE

Example:
  • SOL: 1.23456789 (represents 1.23456789 SOL)
  • USDC: 100.00 (represents 100 USDC tokens)

BALANCE

Example:
  • SOL: 0.23456789 (represents 0.23456789 SOL after a transfer)
  • USDC: 50.00 (represents 50 USDC tokens after a transfer)

TX_INDEX

Example:
  • 0
  • 15
Business Context:
  • Useful for reconstructing block order and analyzing transaction sequencing.
  • Can be used to identify priority transactions or block congestion.
Relationships:
  • Used with block_id and block_timestamp for full ordering.