Starkscan

Event decoding

Canonical event payloads, decoding statuses, provenance, and honest coverage claims.

Event decoding

Starkscan returns one canonical decoding result for an indexed event. Contract, global, transaction, and block event surfaces use the API result; the frontend does not independently upgrade raw payloads into a different interpretation.

Raw payload is authoritative

  • keys[] is the canonical indexed event-key array.
  • data[] contains the complete indexed event data words.
  • txHash, blockNumber, and logIndex identify the row.

Legacy rows that lack indexed payload.keys may reconstruct only the compatibility topic0topic3 fields. Those rows do not prove that later keys were absent. Certification reports them as a separate legacy_incomplete_payload cohort; typed fields are an interpretation, never a replacement for raw evidence.

Decoding statuses

StatusMeaning
decodedAn authoritative ABI/schema produced typed fields and the payload passed validation.
name_onlyThe event name is authoritative, but typed fields are unavailable or intentionally absent.
unknownNo authoritative event name is available. Raw keys and data are still returned.

The response separates event-name provenance from decoded-field provenance:

  • eventName, eventNameSource, and eventNameUnavailableReason describe attribution.
  • decodedFields, decodedFieldsSource, and decodedFieldsUnavailableReason describe typed fields.
  • event_time_class_epoch_unavailable is an event-name reason.
  • schema_unavailable, selector_only_attribution, payload_shape_mismatch, and schema_shape_unsupported are decoded-field reasons.
{
  "keys": ["0x...", "0x..."],
  "data": ["0x...", "0x..."],
  "decodingStatus": "decoded",
  "eventName": "Transfer",
  "eventNameSource": "class_abi",
  "decodedFields": [{
    "label": "amount",
    "type": "core::integer::u256",
    "source": "data",
    "status": "decoded",
    "rawValues": ["0x...", "0x..."],
    "originIndexes": [0, 1],
    "displayValue": "1"
  }],
  "decodedFieldsSource": "class_abi"
}

Historical correctness

For upgraded contracts, Starkscan attributes an event to the class and schema active at the event's block when that evidence is materialized. Incomplete or ambiguous class epochs remain unavailable; the service does not silently use the contract's current class.

Event results are served from indexed, materialized facts. Request-time RPC, third-party explorers, ABI fetches, and trace calls are not used to make a response appear more decoded.

Read coverage honestly

Operational certification cohorts are bounded evidence, not a uniform claim about every event-emitting contract. A certification report keeps the event-emitting population, selected sample, upgrade/epoch cases, negative fixtures, and unavailable-reason breakdown separate. Never extrapolate beyond the declared population and row bounds.

Use the API reference for the exact ContractEventItem schema and Advanced utilities for bounded event-search patterns.

On this page