solana.core Table: fact_transactions Type: View
View DBT Documentation
View the complete technical documentation and data lineage for this table
Description
This table contains one record per transaction on the Solana blockchain, capturing high-level transaction metadata as recorded on-chain. Each record includes block timestamp, transaction identifiers, account and token balance changes, program instructions, and execution metadata for every transaction processed on Solana mainnet. The table covers all finalized transactions, both successful and failed, and is updated as new blocks are processed. Data is sourced from on-chain transaction logs and normalized for analytics. IMPORTANT: This is raw transaction data. For most analytics, use the specialized curated tables instead of querying this large table directly. Transaction components are broken down and extracted into purpose-built tables that are optimized for specific analytical use cases and much easier to work with.Key Use Cases
For most of these use cases, prefer the specialized curated tables listed in âImportant Relationshipsâ below:- Transaction-level metadata and high-level transaction analytics
- Fee analysis and cost monitoring for Solana transactions (use
feeandsucceededfields) - Success/failure rate analysis for transactions
- Basic wallet and signer analysis (for detailed analysis, use
core.ez_signers) - Building time-series dashboards for network activity at the transaction level
- Token and asset movement: Use
core.ez_transfers(includes USD values, token symbols) - Program and instruction analysis: Use
core.fact_eventsandcore.fact_events_inner - Decoded instruction details: Use
core.ez_events_decoded - Token balance changes: Use
core.fact_token_balances
Important Relationships
STRONGLY PREFER these curated tables over raw transaction data: For instruction and program analysis:core.fact_events- Parsed instruction events and program interactionscore.fact_events_inner- Inner/CPI instruction events for composability analysiscore.ez_events_decoded- Human-readable decoded instruction details with arguments
core.ez_transfers- Token transfers with USD values, symbols, and verification statuscore.fact_token_balances- Token balance changes over time
core.ez_signers- Signer addresses extracted and enriched
- Each transaction links to
core.fact_blocksviablock_idfor block context - All curated tables use
tx_idto link back to transaction context when needed - Raw fields like
instructions,inner_instructions, andprogram_idsare parsed into the specialized tables above
- DO NOT parse
instructionsorinner_instructionsarrays directly - usecore.fact_eventsandcore.fact_events_inner - DO NOT analyze program IDs from raw data - use the events tables for program interaction analysis
- DO NOT extract transfer data manually - use
core.ez_transfersfor all transfer analytics - DO NOT query this large table for routine analytics - itâs optimized as a source table, not for direct analysis
Commonly-used Fields
When using this table directly (discouraged for most use cases):tx_id: Unique identifier for joins with curated tables and traceabilityblock_idandblock_timestamp: For time-series and block-level contextfee: For transaction cost analysissucceeded: For transaction success/failure rate analysissigners: For basic signer analysis (prefercore.ez_signersfor detailed analysis)
instructions,inner_instructions: Usecore.fact_eventsandcore.fact_events_innerinsteadaccount_keys,pre_balances,post_balances: Usecore.ez_transfersorcore.fact_token_balancesinsteadlog_messages: Usecore.ez_events_decodedfor parsed program logs
Columns
| Column Name | Data Type | Description |
|---|---|---|
| BLOCK_TIMESTAMP | TIMESTAMP_NTZ | The 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_ID | NUMBER | A 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_ID | TEXT | The 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. |
| RECENT_BLOCK_HASH | TEXT | The hash of the most recent block prior to this transaction, as recorded on the Solana blockchain. Used to prevent transaction replay and ensure transaction freshness. This value is a base58-encoded string representing the block hash at the time the transaction was submitted. |
| SIGNERS | ARRAY | List of accounts that signed the transaction. This field captures all wallet addresses that provided signatures for the transaction, enabling multi-signature analysis and transaction authority tracking. |
| FEE | NUMBER | The transaction fee paid for processing this transaction, denominated in lamports (the smallest unit of SOL). This fee is deducted from the payerâs account and is determined by the compute resources consumed and the current network fee rate. |
| SUCCEEDED | BOOLEAN | Boolean 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_KEYS | ARRAY | An array of all account addresses referenced by this transaction, including signers, writable, and read-only accounts. Each entry is a base58-encoded Solana address. This list is used to resolve account balances and permissions for transaction execution. |
| PRE_BALANCES | ARRAY | List of pre-transaction balances for different accounts. This field captures the SOL balances of all accounts involved in the transaction before execution, enabling balance change analysis and transaction impact measurement. |
| POST_BALANCES | ARRAY | List of post-transaction balances for different accounts. This field captures the SOL balances of all accounts involved in the transaction after execution, enabling balance change analysis and transaction impact measurement. |
| PRE_TOKEN_BALANCES | ARRAY | List of pre-transaction token balances for different token accounts. This field captures the token balances of all token accounts involved in the transaction before execution, enabling token balance change analysis. |
| POST_TOKEN_BALANCES | ARRAY | List of post-transaction token balances for different token accounts. This field captures the token balances of all token accounts involved in the transaction after execution, enabling token balance change analysis. |
| INSTRUCTIONS | ARRAY | An array of program instructions executed as part of this transaction. Each instruction includes the program ID, accounts involved, and input data. Instructions define the actions performed by the transaction. |
| INNER_INSTRUCTIONS | ARRAY | An array of instructions invoked by programs during the execution of the main transaction instructions. Inner instructions are generated by CPI (cross-program invocation) and provide details on program-to-program calls. |
| LOG_MESSAGES | ARRAY | An array of log messages emitted by programs during transaction execution. Useful for debugging, tracing program logic, and analyzing transaction outcomes. Each entry is a string message as output by the Solana runtime. |
| UNITS_CONSUMED | NUMBER | The number of compute units consumed by this transaction. Compute units measure the computational resources used and are used to calculate transaction fees. |
| UNITS_LIMIT | NUMBER | The maximum number of compute units allowed for this transaction, as set by the compute budget instruction. Transactions exceeding this limit will fail. |
| TX_SIZE | NUMBER | The size of the transaction in bytes, including all instructions, signatures, and account references. Used to analyze transaction complexity and network resource usage. |
| TX_INDEX | NUMBER | The position of this transaction within its containing block, starting from zero. Used to order transactions within a block and analyze intra-block activity. |
| FACT_TRANSACTIONS_ID | TEXT | A 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_TIMESTAMP | TIMESTAMP_NTZ | The 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_TIMESTAMP | TIMESTAMP_NTZ | The 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. |
Column Details
BLOCK_ID
Example:- 123456789
- Supports block-level analytics, such as block production rate and transaction throughput.
- Useful for tracing transaction inclusion and block explorer integrations.
- All transactions with the same
block_idshare the sameblock_timestamp.
TX_ID
Example:5Nf6Q2k6v1Qw2k3v4Qw5Nf6Q2k6v1Qw2k3v4Qw5Nf6Q2k6v1Qw2k3v4Qw5Nf6Q2k6v1Qw2k3v4Qw
- 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
RECENT_BLOCK_HASH
Business Context:- Used to prevent transaction replay and ensure transaction freshness
- Solana documentation on transaction structure: https://docs.solana.com/developing/clients/jsonrpc-api#sendtransaction
SIGNERS
Example:['9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM', 'AnotherAddress...']
- Used to track transaction signers, analyze multi-signature patterns, and identify transaction authorities
- Multi-signature analysis, transaction authority tracking, and signer pattern studies
FEE
References:- Solana documentation on transaction fees: https://docs.solana.com/implemented-proposals/transaction-fees
SUCCEEDED
Example:- true
- false
- Used to filter for successful transactions in analytics and reporting.
- Important for error analysis, user experience, and program debugging.
ACCOUNT_KEYS
References:- Solana documentation on accounts: https://docs.solana.com/developing/programming-model/accounts
PRE_BALANCES
Example:[100.0, 50.0, 25.0]
- Used to track balance changes, analyze transaction impact, and measure SOL movement between accounts
- Balance change analysis, transaction impact measurement, and SOL movement tracking
POST_BALANCES
Example:[95.0, 55.0, 25.0]
- Used to track balance changes, analyze transaction impact, and measure SOL movement between accounts
- Balance change analysis, transaction impact measurement, and SOL movement tracking
PRE_TOKEN_BALANCES
Example:[{'mint': 'TokenMintAddress', 'amount': 1000}, {'mint': 'AnotherToken', 'amount': 500}]
- Used to track token balance changes, analyze token movements, and measure token transaction impact
- Token balance change analysis, token movement tracking, and token transaction impact measurement
POST_TOKEN_BALANCES
Example:[{'mint': 'TokenMintAddress', 'amount': 900}, {'mint': 'AnotherToken', 'amount': 600}]
- Used to track token balance changes, analyze token movements, and measure token transaction impact
- Token balance change analysis, token movement tracking, and token transaction impact measurement
INSTRUCTIONS
References:- Solana documentation on transactions: https://docs.solana.com/developing/programming-model/transactions#instructions
INNER_INSTRUCTIONS
References:- Solana documentation on cross-program invocation: https://docs.solana.com/developing/programming-model/calling-between-programs
LOG_MESSAGES
References:- Solana documentation on runtime logging: https://docs.solana.com/developing/programming-model/runtime#logging
UNITS_CONSUMED
References:- Solana documentation on compute budget: https://docs.solana.com/developing/runtime-facilities/programs#compute-budget
UNITS_LIMIT
References:- Solana documentation on compute budget: https://docs.solana.com/developing/runtime-facilities/programs#compute-budget
TX_SIZE
References:- Solana documentation on transaction structure: https://docs.solana.com/developing/clients/jsonrpc-api#sendtransaction
TX_INDEX
Example:- 0
- 15
- Useful for reconstructing block order and analyzing transaction sequencing.
- Can be used to identify priority transactions or block congestion.
- Used with
block_idandblock_timestampfor full ordering.