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

What

This convenience table tracks all native asset transfers (ETH, AVAX, MATIC, etc.) extracted from transaction traces across all supported EVM blockchains. It provides a simplified view of value movements with decimal adjustments and USD conversions, making it easy to analyze fund flows without parsing complex trace data. See evm.dim_chains for a list of all supported EVM chains. Note: This is a unified view that combines native transfer data from multiple EVM blockchains. Each row includes a blockchain identifier and native_token symbol to distinguish between different networks.

Key Use Cases

  • Tracking native asset movements between wallets and contracts across multiple blockchains
  • Analyzing exchange deposits and withdrawals on different networks
  • Monitoring whale movements and large transfers by blockchain
  • Calculating wallet balances from transfer history per network
  • Identifying internal transfers within smart contract executions
  • Cross-chain native asset flow analysis

Important Relationships

  • Join with evm.fact_transactions: Use tx_hash and blockchain for transaction context
  • Join with evm.fact_traces: Use tx_hash, trace_index, and blockchain for trace details
  • Join with core.dim_labels: Use addresses and blockchain for entity identification
  • Complement to evm.ez_token_transfers: This table for native assets, that for tokens

Commonly-used Fields

  • blockchain: The EVM blockchain network (e.g., ‘ethereum’, ‘polygon’, ‘arbitrum’)
  • native_token: The native token symbol for the blockchain (e.g., ‘ETH’, ‘MATIC’, ‘AVAX’)
  • from_address: The sender of the native asset transfer
  • to_address: The recipient of the native asset transfer
  • amount: Decimal-adjusted transfer amount
  • amount_usd: USD value at time of transfer
  • origin_from_address: Original transaction sender
  • origin_to_address: Original transaction recipient
  • trace_index: Trace identifier (0 for external transfers)

Sample queries

Daily Native Asset Transfer Volume by Blockchain
SELECT 
    DATE_TRUNC('day', block_timestamp) AS day,
    blockchain,
    native_token,
    COUNT(*) AS transfer_count,
    COUNT(DISTINCT from_address) AS unique_senders,
    COUNT(DISTINCT to_address) AS unique_receivers,
    SUM(amount) AS total_amount,
    AVG(amount) AS avg_amount,
    SUM(amount_usd) AS total_usd,
    MAX(amount_usd) AS largest_transfer_usd
FROM crosschain.evm.ez_native_transfers
WHERE block_timestamp >= CURRENT_DATE - 30
    AND amount > 0
GROUP BY 1, 2, 3
ORDER BY 1 DESC, 6 DESC;
Whale Movements (Large Transfers) Across All Blockchains
SELECT 
    blockchain,
    native_token,
    block_timestamp,
    tx_hash,
    from_address,
    to_address,
    amount,
    amount_usd,
    origin_from_address,
    origin_to_address,
    trace_index
FROM crosschain.evm.ez_native_transfers
WHERE amount_usd > 1000000  -- Over $1M USD
    AND block_timestamp >= CURRENT_DATE - 7
ORDER BY amount_usd DESC
LIMIT 100;
Exchange Deposit/Withdrawal Patterns by Network
WITH exchange_addresses AS (
    SELECT DISTINCT address 
    FROM crosschain.core.dim_labels 
    WHERE label_type = 'exchange'
)
SELECT 
    blockchain,
    native_token,
    DATE_TRUNC('hour', block_timestamp) AS hour,
    CASE 
        WHEN to_address IN (SELECT address FROM exchange_addresses) THEN 'Deposit'
        WHEN from_address IN (SELECT address FROM exchange_addresses) THEN 'Withdrawal'
    END AS transfer_type,
    COUNT(*) AS transfer_count,
    SUM(amount) AS total_amount,
    SUM(amount_usd) AS total_usd
FROM crosschain.evm.ez_native_transfers
WHERE block_timestamp >= CURRENT_DATE - 1
    AND (to_address IN (SELECT address FROM exchange_addresses)
         OR from_address IN (SELECT address FROM exchange_addresses))
GROUP BY 1, 2, 3, 4
ORDER BY 1, 3 DESC;
Internal Transfer Analysis by Blockchain
-- Compare external vs internal transfers across networks
SELECT 
    blockchain,
    native_token,
    CASE 
        WHEN trace_index = 0 THEN 'External Transfer'
        ELSE 'Internal Transfer'
    END AS transfer_type,
    COUNT(*) AS count,
    SUM(amount) AS total_amount,
    AVG(amount) AS avg_amount,
    SUM(amount_usd) AS total_volume_usd
FROM crosschain.evm.ez_native_transfers
WHERE block_timestamp >= CURRENT_DATE - 1
GROUP BY 1, 2, 3
ORDER BY 1, 2, 4 DESC;
Smart Contract Native Asset Holdings by Network
WITH contract_balances AS (
    SELECT 
        blockchain,
        to_address AS address,
        SUM(amount) AS inflows
    FROM crosschain.evm.ez_native_transfers
    WHERE to_address IN (SELECT address FROM crosschain.evm.dim_contracts)
    GROUP BY 1, 2
),
outflows AS (
    SELECT 
        blockchain,
        from_address AS address,
        SUM(amount) AS outflows
    FROM crosschain.evm.ez_native_transfers
    WHERE from_address IN (SELECT address FROM crosschain.evm.dim_contracts)
    GROUP BY 1, 2
)
SELECT 
    c.blockchain,
    c.address,
    dc.name AS contract_name,
    COALESCE(c.inflows, 0) - COALESCE(o.outflows, 0) AS net_balance,
    c.inflows,
    o.outflows
FROM contract_balances c
LEFT JOIN outflows o ON c.blockchain = o.blockchain AND c.address = o.address
LEFT JOIN crosschain.evm.dim_contracts dc ON c.address = dc.address
WHERE COALESCE(c.inflows, 0) - COALESCE(o.outflows, 0) > 100  -- Over 100 native tokens
ORDER BY c.blockchain, net_balance DESC
LIMIT 50;
Cross-Chain Native Asset Transfer Comparison
SELECT 
    blockchain,
    native_token,
    DATE_TRUNC('day', block_timestamp) AS day,
    COUNT(*) AS daily_transfers,
    SUM(amount) AS daily_volume_native,
    SUM(amount_usd) AS daily_volume_usd,
    AVG(amount_usd) AS avg_transfer_usd,
    PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY amount_usd) AS p95_transfer_usd
FROM crosschain.evm.ez_native_transfers
WHERE block_timestamp >= CURRENT_DATE - 30
    AND amount > 0
GROUP BY 1, 2, 3
ORDER BY 1, 2, 3 DESC;

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
NATIVE_TOKENTEXTThe native token symbol for the blockchain. See evm.dim_chains for a list of all EVM chains. Format: VARCHAR Example: ‘ETH’
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
TRACE_INDEXNUMBERSequential index of trace within the transaction’s execution. Example: 3
TRACE_ADDRESSTEXTArray describing the trace’s position in the execution tree. Example: [0, 1, 2]
TYPETEXTThe type of EVM operation performed. Example: ‘CALL’
FROM_ADDRESSTEXTThe from address for the native asset transfer. This may or may not be the same as the originfromaddress. Example: ‘0x1234567890123456789012345678901234567890’
TO_ADDRESSTEXTThe to address for the native asset transfer. This may or may not be the same as the origintoaddress. Example: ‘0xabcdefabcdefabcdefabcdefabcdefabcdefabcd’
AMOUNTFLOATNative asset amount transferred, adjusted to standard decimal units. Example: 1.5
AMOUNT_USDFLOATUSD value of the native asset transfer at the time of the transaction. Example: 2500.50
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
EZ_NATIVE_TRANSFERS_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: