solana.core Table: fact_transactions Type: View
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. |
- 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_idâ share the same âblock_timestampâ. | | 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.
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 | 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. For more details, see the Solana documentation on transaction structure: https://docs.solana.com/developing/clients/jsonrpc-api#sendtransaction | | 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.
- true
- false
- Used to filter for successful transactions in analytics and reporting.
- Important for error analysis, user experience, and program debugging. | | 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. See: https://docs.solana.com/developing/programming-model/accounts | | 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.
[{'mint': 'TokenMintAddress', 'amount': 1000}, {'mint': 'AnotherToken', 'amount': 500}] | |
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.
Data type: ARRAY (token balance objects) Business context: Used to track token balance
changes, analyze token movements, and measure token transaction impact. Analytics use cases:
Token balance change analysis, token movement tracking, and token transaction impact measurement.
Example: [{âmintâ: âTokenMintAddressâ, âamountâ: 900}, {âmintâ: âAnotherTokenâ, âamountâ:
600}] | | 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. See:
https://docs.solana.com/developing/programming-model/transactions#instructions | |
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. See:
https://docs.solana.com/developing/programming-model/calling-between-programs | | 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. See:
https://docs.solana.com/developing/programming-model/runtime#logging | | 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. For more information, see:
https://docs.solana.com/developing/runtime-facilities/programs#compute-budget | | 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. For more information, see:
https://docs.solana.com/developing/runtime-facilities/programs#compute-budget | | 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. See:
https://docs.solana.com/developing/clients/jsonrpc-api#sendtransaction | | 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.
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_idâ and âblock_timestampâ for full ordering. | | 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. |