Skip to main content
Schema: crosschain.evm Table: ez_decoded_event_logs Type: View

What

This table provides human-readable decoded event data for smart contracts where ABIs are available. It transforms raw hex-encoded logs into structured JSON with named parameters and values, making blockchain data immediately queryable without manual decoding. It contains a column for the blockchain the event occurred on, which is an important filter and join key. See evm.dim_chains for a list of all supported EVM chains.

Key Use Cases

  • Analyzing token transfers and approvals without manual decoding
  • Tracking DEX swaps and liquidity events with named parameters
  • Monitoring NFT transfers and marketplace activity
  • Querying DeFi protocol interactions (lending, staking, governance)
  • Building analytics on any smart contract with available ABIs

Important Relationships

  • Join with evm.fact_event_logs: Use tx_hash, event_index, and blockchain for raw event data
  • Join with evm.dim_contracts: Use contract_address and blockchain for contract metadata
  • Join with evm.fact_transactions: Use tx_hash and blockchain for transaction context
  • Cross-reference evm.ez_token_transfers: For simplified token movement data

Commonly-used Fields

  • contract_address: The smart contract that emitted the event
  • event_name: The event name from the contract ABI (e.g., Transfer, Swap)
  • decoded_log: JSON object with decoded parameter names and values
  • contract_name: Human-readable name of the contract
  • block_timestamp: When the event occurred
  • tx_hash: Transaction hash containing this event
  • blockchain: The blockchain the event occurred on

Sample queries

ERC-20 Transfer Events with Proper Types
SELECT 
    block_timestamp,
    tx_hash,
    contract_address,
    contract_name,
    event_name,
    decoded_log:from::string AS from_address,
    decoded_log:to::string AS to_address,
    decoded_log:value::numeric AS amount,
    -- Convert to decimal (assuming 18 decimals)
    decoded_log:value::numeric / POW(10, 18) AS amount_decimal
FROM crosschain.evm.ez_decoded_event_logs
WHERE contract_address = LOWER('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48') -- USDC
    AND event_name = 'Transfer'
    AND block_timestamp >= CURRENT_DATE - 7
    AND decoded_log:value::numeric > 1000000000 -- Over 1000 USDC
ORDER BY block_timestamp DESC;
Uniswap V3 Swap Events
SELECT 
    block_timestamp,
    tx_hash,
    contract_address AS pool_address,
    event_name,
    decoded_log:sender::string AS sender,
    decoded_log:recipient::string AS recipient,
    decoded_log:amount0::numeric AS amount0,
    decoded_log:amount1::numeric AS amount1,
    decoded_log:sqrtPriceX96::numeric AS sqrt_price,
    decoded_log:liquidity::numeric AS liquidity,
    decoded_log:tick::integer AS tick
FROM crosschain.evm.ez_decoded_event_logs
WHERE event_name = 'Swap'
    AND contract_address IN (
        SELECT address FROM crosschain.evm.dim_contracts 
        WHERE contract_name ILIKE '%Uniswap V3%'
    )
    AND block_timestamp >= CURRENT_DATE - 1
    AND blockchain = 'ethereum'
LIMIT 100;
NFT Transfer Events (ERC-721)
SELECT 
    block_timestamp,
    tx_hash,
    contract_address,
    contract_name AS collection_name,
    decoded_log:from::string AS from_address,
    decoded_log:to::string AS to_address,
    decoded_log:tokenId::string AS token_id
FROM crosschain.evm.ez_decoded_event_logs
WHERE event_name = 'Transfer'
    AND decoded_log:tokenId IS NOT NULL  -- Indicates ERC-721
    AND block_timestamp >= CURRENT_DATE - 1
    AND blockchain = 'ethereum'
ORDER BY block_timestamp DESC;
DeFi Protocol Events - Compound Finance
SELECT 
    DATE_TRUNC('day', block_timestamp) AS day,
    event_name,
    COUNT(*) AS event_count,
    COUNT(DISTINCT decoded_log:minter::string) AS unique_users
FROM crosschain.evm.ez_decoded_event_logs
WHERE contract_name ILIKE '%compound%'
    AND event_name IN ('Mint', 'Redeem', 'Borrow', 'RepayBorrow')
    AND block_timestamp >= CURRENT_DATE - 30
    AND blockchain = 'ethereum'
GROUP BY 1, 2
ORDER BY 1 DESC, 3 DESC;
Complex Event Analysis - DEX Aggregator Routes
SELECT 
    block_timestamp,
    tx_hash,
    event_name,
    decoded_log,
    ARRAY_SIZE(decoded_log:path) AS swap_hops,
    decoded_log:amountIn::numeric AS amount_in,
    decoded_log:amountOutMin::numeric AS min_amount_out
FROM crosschain.evm.ez_decoded_event_logs
WHERE contract_address = LOWER('0x1111111254fb6c44bAC0beD2854e76F90643097d') -- 1inch
    AND event_name ILIKE '%swap%'
    AND block_timestamp >= CURRENT_DATE - 1
    AND blockchain = 'ethereum';

Columns

Column NameData TypeDescription
BLOCKCHAINTEXTThe blockchain the record occurred on. See evm.dim_chains for a list of all EVM chains. Format: VARCHAR Example: ‘ethereum’ Usage: Filtering by blockchain Joining across tables Analyzing chain-specific patterns
BLOCK_NUMBERNUMBERSequential counter representing the position of a block in the blockchain since genesis (block 0). Key Facts: Immutable once finalized Primary ordering mechanism for blockchain data Increments by 1 for each new block Used as a proxy for time in many analyses Usage in Queries: Important: Block numbers are chain-specific. Block 15000000 on Ethereum ≠ block 15000000 on Polygon.
BLOCK_TIMESTAMPTIMESTAMP_NTZUTC timestamp when the block was produced by validators/miners. Format: TIMESTAMP_NTZ (no timezone) Precision: Second-level accuracy Reliability: Set by block producer Can have minor variations (±15 seconds) Always increasing (newer blocks = later timestamps) Best Practices: Note: Use for time-series analysis, but be aware that block production rates vary by chain.
TX_HASHTEXTUnique 66-character identifier for the transaction. Format: 0x + 64 hexadecimal characters Usage: Primary key for transaction lookups Join key for traces, logs, and token transfers Immutable once confirmed Example: 0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060
TX_POSITIONNUMBERZero-indexed position of transaction within its block. Insights: Position 0: First transaction in block MEV bots often target early positions Bundle transactions appear consecutively Useful for analyzing transaction ordering
EVENT_INDEXNUMBERZero-based sequential position of the event within a transaction’s execution. Key Facts: Starts at 0 for first event Increments across all contracts in transaction Preserves execution order Essential for deterministic event ordering Usage Example:
CONTRACT_ADDRESSTEXTSmart contract address that emitted this event or received the transaction. Key Points: Always the immediate event emitter for logs May differ from transaction to_address Lowercase normalized format Never NULL for valid events
TOPICSVARIANTArray containing all indexed parameters of the event. Example: [‘0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef’, ‘0x0000000000000000000000001234567890123456789012345678901234567890’]
TOPIC_0TEXTEvent signature hash - keccak256 of the event declaration. Example: ‘0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef’
TOPIC_1TEXTFirst indexed parameter of the event (if exists). Example: ‘0x0000000000000000000000001234567890123456789012345678901234567890’
TOPIC_2TEXTSecond indexed parameter of the event (if exists). Example: ‘0x000000000000000000000000abcdefabcdefabcdefabcdefabcdefabcdefabcd’
TOPIC_3TEXTThird indexed parameter of the event (if exists). Example: ‘0x0000000000000000000000000000000000000000000000000000000000000001’
DATATEXTHex-encoded non-indexed event parameters. Example: ‘0x0000000000000000000000000000000000000000000000000de0b6b3a7640000’
EVENT_REMOVEDBOOLEANBoolean flag indicating if the event was removed due to chain reorganization. Example: false
ORIGIN_FROM_ADDRESSTEXTThe externally-owned account (EOA) or contract address that initiated the transaction. Key Points: Always 42 characters (0x + 40 hex chars) Lowercase normalized in all tables Cannot be NULL for valid transactions For contract creation: sender of creation transaction Common Patterns: EOA → EOA: Simple transfer EOA → Contract: User interaction Contract → Contract: Internal calls (see evm_facttraces) Known addresses: Exchange hot wallets, protocol deployers Query Examples:
ORIGIN_TO_ADDRESSTEXTThe destination address for the transaction - either an EOA or contract address. Special Cases: NULL: Contract creation transaction Contract address: Interacting with smart contract EOA address: Simple transfer or receiving funds Important Patterns: Note: For token transfers, this is the token contract, not the recipient. See evm_eztoken_transfers tables for recipient.
ORIGIN_FUNCTION_SIGNATURETEXTFunction signature (first 4 bytes) of the called method. Format: 0x + 8 hex characters Common Signatures: 0xa9059cbb: transfer(address,uint256) 0x095ea7b3: approve(address,uint256) 0x23b872dd: transferFrom(address,address,uint256) Note: NULL for simple transfers or invalid calls
TX_SUCCEEDEDBOOLEANBoolean indicator of transaction success. Values: TRUE: Transaction executed successfully FALSE: Transaction failed/reverted
EVENT_NAMETEXTThe event name as defined in the contract’s ABI. Format: PascalCase event identifier Examples: Transfer - Token transfers Swap - DEX trades OwnershipTransferred - Admin changes Approval - Token approvals Usage Pattern:
FULL_DECODED_LOGVARIANTComplete decoded event data including parameter names, values, types, and metadata. Example: ‘{"event_name": "Transfer", "parameters": [{"name": "from", "type": "address", "value": "0x123...", "indexed": true}]}‘
DECODED_LOGOBJECTFlattened JSON object containing decoded event parameters with their values. Example: ‘{"from": "0x123...", "to": "0x456...", "value": "1000000000000000000"}
CONTRACT_NAMETEXTHuman-readable name of the smart contract emitting the event, joined from evm.dim_contracts. Example: ‘USD Coin’
EZ_DECODED_EVENT_LOGS_IDTEXTPrimary key - unique identifier for each row ensuring data integrity. Format: Usually VARCHAR containing composite key generated using MD5 hash of the relevant columns. Example: MD5(blocknumber, txhash, trace_index) Usage: Deduplication in incremental loads Join operations for data quality checks Troubleshooting specific records Important: Implementation varies by table - check table-specific documentation.
INSERTED_TIMESTAMPTIMESTAMP_NTZUTC timestamp when the record was first added to the Flipside database. Format: TIMESTAMP_NTZ Use Cases: Data freshness monitoring Incremental processing markers Debugging data pipeline issues SLA tracking Query Example:
MODIFIED_TIMESTAMPTIMESTAMP_NTZUTC timestamp of the most recent update to this record. Format: TIMESTAMP_NTZ Triggers for Updates: Data corrections Enrichment additions Reprocessing for accuracy Schema migrations Monitoring Usage: