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

Description

This table contains one row per decoded Solana record, mapping detailed program activity, event types, and instruction arguments as recorded on-chain. It only includes decoded data for programs for which we have the IDL (as listed in core.dim_idls). This table contains all the information in core.fact_decoded_instructions, but with additional extracted fields such as decoded_accounts, decoded_args, and decoding_error. For most analytics use cases, this table is preferred over core.fact_decoded_instructions due to its richer, more accessible structure. Each row represents a decoded event, supporting protocol usage analysis, event tracking, error monitoring, and attribution of accounts and signers.

Key Use Cases

  • Analyze decoded program activity and event types
  • Attribute events to accounts, signers, and protocols
  • Monitor protocol usage, event flows, and error rates
  • Support analytics on composable DeFi, NFT, and governance protocols
  • Enable flexible analytics on Solana program interactions and protocol activity

Important Relationships

  • Closely related to core.fact_decoded_instructions (for raw decoded instruction details), core.fact_events (for event context), and core.fact_events_inner (for inner/CPI events)
  • Use core.fact_decoded_instructions for raw instruction data if needed, but prefer this table for most analytics
  • Use core.fact_events and core.fact_events_inner for event-level context and protocol interactions
  • Joins with core.fact_blocks for block context and core.fact_transactions for transaction context

Commonly-used Fields

  • block_timestamp: For time-series and event sequencing analysis
  • block_id, tx_id, index, inner_index: For unique event identification and joins
  • program_id, event_type: For filtering by program or event type
  • decoded_instruction, decoded_accounts, decoded_args, decoding_error: For detailed event and error analytics
  • signers, succeeded: For user attribution and transaction outcome analysis

Sample Queries

Daily event activity by program

SELECT
    DATE_TRUNC('day', block_timestamp) AS date,
    program_id,
    COUNT(*) AS event_count,
    COUNT(DISTINCT tx_id) AS unique_transactions,
    COUNT(DISTINCT signers[0]::STRING) AS unique_signers,
    COUNT(DISTINCT event_type) AS unique_event_types
FROM solana.core.ez_events_decoded
WHERE block_timestamp >= CURRENT_DATE - 7
GROUP BY 1, 2
ORDER BY 1 DESC, 3 DESC;

Most common event types with decoded data

SELECT
    program_id,
    event_type,
    decoded_instruction:name::STRING AS instruction_name,
    COUNT(*) AS occurrences,
    COUNT(DISTINCT signers[0]::STRING) AS unique_signers
FROM solana.core.ez_events_decoded
WHERE block_timestamp >= CURRENT_DATE - 7
    AND decoded_instruction IS NOT NULL
GROUP BY 1, 2, 3
HAVING occurrences > 100
ORDER BY occurrences DESC;

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.
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.
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.
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.
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.
EVENT_TYPETEXTA string categorizing the type of event or instruction, such as ‘transfer’, ‘mint’, ‘burn’, or protocol-specific actions.
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.
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.
DECODED_ACCOUNTSARRAYAn array of Solana account addresses (base58-encoded) involved in the decoded instruction. Each account may represent a user, program, token account, or system account. Useful for attribution, protocol analysis, and understanding instruction context.
DECODED_ARGSVARIANTA JSON object containing the arguments or parameters passed to the Solana program in the decoded instruction. The structure varies by program and instruction type. Enables granular analysis of protocol usage and on-chain activity.
DECODING_ERRORTEXTA string describing any error encountered while decoding the instruction. If decoding was successful, this field is null. Useful for monitoring data quality and identifying unsupported or malformed instructions.
EZ_EVENTS_DECODED_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.