Transaction Events — Transactions, Logs, Calls

Subscribe

{"subscribe": ["TxnHeaderStart", "TxnLog", "TxnEvmOutput"]}

Available types: TxnHeaderStart, TxnEvmOutput, TxnLog, TxnCallFrame, NativeTransfer, TxnEnd, TxnReject.

Message Format

All events are delivered inside an Events batch:

{
  "seq": 50,
  "Events": [
    {
      "event_name": "TxnLog",
      "block_number": 56147820,
      "txn_idx": 5,
      "txn_hash": "0xabc...",
      "commit_stage": "Proposed",
      "payload": {
        "type": "TxnLog",
        "txn_index": 5,
        "log_index": 0,
        "address": "0x0000000000000000000000000000000000001000",
        "topics": "0xe4d4df1e...",
        "data": "0x..."
      },
      "seqno": 9876543250,
      "timestamp_ns": 1708345678100000000
    }
  ]
}

Event Types

TxnHeaderStart

Transaction execution begins. Full transaction header.

Payload FieldTypeDescription
txn_indexnumberIndex within block
txn_hashstringTransaction hash
senderstringSender address
txn_typenumberType (0=legacy, 2=EIP-1559)
chain_idstringChain ID (hex U256)
noncenumberNonce
gas_limitnumberGas limit
max_fee_per_gasstringMax fee (hex U256)
max_priority_fee_per_gasstringMax priority fee (hex U256)
valuestringTransfer value (hex U256)
datastringCalldata (hex bytes)
tostringRecipient address
is_contract_creationbooleanContract creation flag
r, sstringECDSA signature
y_paritybooleanSignature y-parity
access_list_countnumberEIP-2930 entries
auth_list_countnumberEIP-7702 entries

TxnEvmOutput

EVM execution result.

Payload FieldTypeDescription
txn_indexnumberTransaction index
log_countnumberNumber of logs
statusbooleantrue = success, false = revert
gas_usednumberGas consumed

TxnLog

EVM log (Solidity emit). Real-time equivalent of eth_getLogs.

Payload FieldTypeDescription
txn_indexnumberTransaction index
log_indexnumberLog index within transaction
addressstringEmitting contract address
topicsstringConcatenated 32-byte topics (hex)
datastringLog data (hex bytes)

topics is a concatenated string, not an array. Each topic = 64 hex characters (32 bytes). topic[0] = first 64 characters after 0x.

TxnCallFrame

Internal call (CALL, DELEGATECALL, STATICCALL, CREATE).

Payload FieldTypeDescription
txn_indexnumberTransaction index
depthnumberCall stack depth
callerstringCaller address
call_targetstringTarget address
valuestringValue transferred (hex U256)
inputstringCall input data (hex)
outputstringCall return data (hex)

NativeTransfer

Virtual event, a subscription filter alias for TxnCallFrame where value > 0. Useful for tracking ETH transfers.

{"subscribe": ["NativeTransfer"]}

Delivers TxnCallFrame events with non-zero value.

TxnEnd

Transaction processing complete. No payload fields.

TxnReject

Transaction rejected before execution.

Payload FieldTypeDescription
txn_indexnumberIndex
reasonnumberReason code

Blocked Events (available with --unrestricted)

  • TxnHeaderEnd: end of header processing
  • TxnAccessListEntry: EIP-2930 access list entry
  • TxnAuthListEntry: EIP-7702 authorization entry
  • TxnPerfEvmEnter / TxnPerfEvmExit: EVM profiling markers

Filtering

By Contract Address (TxnLog)

{
  "subscribe": {
    "events": ["TxnLog"],
    "filters": [{
      "event_name": "TxnLog",
      "field_filters": [
        {"field": "address", "filter": {"values": ["0xTOKEN_ADDRESS"]}}
      ]
    }]
  }
}

By Topics (Event Signature)

{
  "subscribe": {
    "events": ["TxnLog"],
    "filters": [{
      "event_name": "TxnLog",
      "field_filters": [
        {"field": "topics", "filter": {"values": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}}
      ]
    }]
  }
}

0xddf252ad... = keccak256("Transfer(address,address,uint256)").

By Sender (TxnHeaderStart)

{
  "subscribe": {
    "events": ["TxnHeaderStart"],
    "filters": [{
      "event_name": "TxnHeaderStart",
      "field_filters": [
        {"field": "sender", "filter": {"values": ["0xYOUR_WALLET"]}}
      ]
    }],
    "correlate": true
  }
}

With correlate: true, the server auto-delivers all events for matching transactions (TxnLog, TxnCallFrame, TxnEvmOutput, TxnEnd).

By Function Selector (TxnHeaderStart)

{
  "subscribe": {
    "events": ["TxnHeaderStart"],
    "filters": [{
      "event_name": "TxnHeaderStart",
      "field_filters": [
        {"field": "to", "filter": {"values": ["0x0000000000000000000000000000000000001000"]}},
        {"field": "function_selector", "filter": {"values": ["0x84994fec"]}}
      ]
    }],
    "correlate": true
  }
}

0x84994fec = delegate(uint64).

Event Ordering Within a Transaction

TxnHeaderStart
  TxnAccessListEntry*
  TxnAuthListEntry*
TxnHeaderEnd
  TxnPerfEvmEnter
    AccountAccess* / StorageAccess*
    TxnLog*
    TxnCallFrame*
  TxnPerfEvmExit
TxnEvmOutput
TxnEnd

Optional events (*) may appear 0 or more times.

Transaction Correlation

With "correlate": true, if TxnHeaderStart passes the filter, the server automatically delivers all subsequent events for that transaction:

EventAction
BlockStart / BlockEndClear correlation set
TxnHeaderStart (match)Add txn_idx to set
Any event with txn_idx in setAuto-deliver
TxnEndDeliver, remove from set

Frequency

Depends on network load. At 2000 TPS with a TxnLog subscription, expect thousands of events per second. Use filters to reduce the stream.