Skip to main content
Schema: solana.core Table: fact_decoded_instructions Type: View

What

Description

This table contains one row per decoded instruction on the Solana blockchain, including program ID, event type, and detailed instruction metadata as recorded on-chain. It only includes decoded data for programs for which we have the IDL (as listed in core.dim_idls). For most analytics use cases, core.ez_events_decoded is preferred, as it contains all the information in this table plus additional extracted fields (such as decoded_accounts, decoded_args, decoding_error) for easier analysis. Each row represents a decoded instruction, supporting detailed analysis of protocol interactions, program calls, and event flows.

Key Use Cases

  • Analyze decoded instructions and program calls
  • Segment and classify protocol interactions by event type
  • Study program usage and protocol adoption
  • Support analytics on composable DeFi, NFT, and governance protocols
  • Enable detailed event and instruction-level analytics

Important Relationships

  • Closely related to core.ez_events_decoded (preferred for most analytics), core.fact_events (for event context), core.fact_events_inner (for inner/CPI events), and core.ez_transfers (for transfer events)
  • Use core.ez_events_decoded for most analytics use cases
  • Use core.fact_events for event-level context and protocol interactions
  • Use core.fact_events_inner for nested program calls and composability analysis
  • 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 instruction sequencing analysis
  • block_id, tx_id, index, inner_index: For unique instruction identification and joins
  • program_id, event_type: For filtering by program or event type
  • decoded_instruction: For detailed instruction analytics
  • signers: For user attribution and protocol usage 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. 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…
SIGNERSARRAYList 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. Data type: ARRAY (list of Solana addresses) Business context: Used to track transaction signers, analyze multi-signature patterns, and identify transaction authorities. Analytics use cases: Multi-signature analysis, transaction authority tracking, and signer pattern studies. Example:…
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.
DECODED_INSTRUCTIONVARIANTA JSON object representing the decoded Solana instruction, including the program being called, the accounts involved, and any arguments or data passed to the program. Enables detailed analysis of protocol interactions and instruction-level behavior. Example: {"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", "accounts": [...], "args": {...}}.
FACT_DECODED_INSTRUCTIONS_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.