Skip to main content
Schema: hyperevm.core Table: ez_native_transfers Type: Table

What

This convenience table tracks all native asset transfers (ETH, AVAX, MATIC, etc.) extracted from transaction traces. 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.

Key Use Cases

  • Tracking native asset movements between wallets and contracts
  • Analyzing exchange deposits and withdrawals
  • Monitoring whale movements and large transfers
  • Calculating wallet balances from transfer history
  • Identifying internal transfers within smart contract executions

Important Relationships

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

Commonly-used Fields

  • 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
  • identifier: Trace identifier (0 for external transfers)

Sample queries

Daily Native Asset Transfer Volume
SELECT
    DATE_TRUNC('day', block_timestamp) AS day,
    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 hyperevm.core.ez_native_transfers
WHERE block_timestamp >= CURRENT_DATE - 30
    AND amount > 0
GROUP BY 1
ORDER BY 1 DESC;
Whale Movements (Large Transfers)
SELECT
    block_timestamp,
    tx_hash,
    from_address,
    to_address,
    amount,
    amount_usd,
    origin_from_address,
    origin_to_address,
    identifier
FROM hyperevm.core.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
WITH exchange_addresses AS (
    SELECT DISTINCT address
    FROM dim_labels
    WHERE label_type = 'exchange'
)
SELECT
    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 hyperevm.core.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
ORDER BY 1 DESC;
Internal Transfer Analysis
-- Compare external vs internal transfers
SELECT
    CASE
        WHEN identifier = '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 hyperevm.core.ez_native_transfers
WHERE block_timestamp >= CURRENT_DATE - 1
GROUP BY 1;
Smart Contract Native Asset Holdings
WITH contract_balances AS (
    SELECT
        to_address AS address,
        SUM(amount) AS inflows
    FROM hyperevm.core.ez_native_transfers
    WHERE to_address IN (SELECT address FROM dim_contracts)
    GROUP BY 1
),
outflows AS (
    SELECT
        from_address AS address,
        SUM(amount) AS outflows
    FROM hyperevm.core.ez_native_transfers
    WHERE from_address IN (SELECT address FROM dim_contracts)
    GROUP BY 1
)
SELECT
    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.address = o.address
LEFT JOIN hyperevm.core.dim_contracts dc ON c.address = dc.address
WHERE COALESCE(c.inflows, 0) - COALESCE(o.outflows, 0) > 100  -- Over 100 native tokens
ORDER BY net_balance DESC
LIMIT 50;

Columns

Column NameData TypeDescription
BLOCK_NUMBERNUMBERSequential counter representing the position of a block in the blockchain since genesis (block 0).
BLOCK_TIMESTAMPTIMESTAMP_NTZUTC timestamp when the block was produced by validators/miners.
TX_HASHTEXTUnique 66-character identifier for the transaction.
TX_POSITIONNUMBERZero-indexed position of transaction within its block.
TRACE_INDEXNUMBERSequential index of trace within the transaction’s execution.
TRACE_ADDRESSTEXTArray describing the trace’s position in the execution tree.
TYPETEXTThe type of EVM operation performed.
FROM_ADDRESSTEXTThe from address for the native asset transfer. This may or may not be the same as the origin_from_address.
TO_ADDRESSTEXTThe to address for the native asset transfer. This may or may not be the same as the origin_to_address.
AMOUNTFLOATNative asset amount transferred, adjusted to standard decimal units.
AMOUNT_PRECISE_RAWTEXTNative asset amount transferred, no decimal adjustment, returned as a string to preserve precision.
AMOUNT_PRECISETEXTNative asset amount transferred, decimal adjusted, returned as a string to preserve precision.
AMOUNT_USDFLOATUSD value of the native asset transfer at the time of the transaction.
ORIGIN_FROM_ADDRESSTEXTThe externally-owned account (EOA) or contract address that initiated the transaction.
ORIGIN_TO_ADDRESSTEXTThe destination address for the transaction - either an EOA or contract address.
ORIGIN_FUNCTION_SIGNATURETEXTFunction signature (first 4 bytes) of the called method.
EZ_NATIVE_TRANSFERS_IDTEXTPrimary key - unique identifier for each row ensuring data integrity.
INSERTED_TIMESTAMPTIMESTAMP_NTZUTC timestamp when the record was first added to the Flipside database.
MODIFIED_TIMESTAMPTIMESTAMP_NTZUTC timestamp of the most recent update to this record.