# Smart-contract events: logs, indexed fields and their limits

Ethereum contract events are logs emitted during execution. They record an emitting address, topics and data that an ABI can decode. Events help applications index activity, but a log’s name is not proof that its contents are truthful or that the emitter is the asset contract a reader intended to inspect.

Evidence: [Contract ABI Specification](https://docs.soliditylang.org/en/v0.8.30/abi-spec.html); [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/)

Canonical: https://degreesofsatoshi.com/encyclopedia/smart-contract-events/
Published: 2026-10-02
Substantively modified: 2026-10-02
Independently verified by an automated reviewer: 2026-10-02T18:12:41.505Z
Data current through: 2026-10-02

AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied.

## Key facts

- **Emitter:** Each log identifies the address that emitted it. ([Contract ABI Specification](https://docs.soliditylang.org/en/v0.8.30/abi-spec.html))
- **Topics:** Non-anonymous ABI events usually place the event-signature hash in the first topic. ([Contract ABI Specification](https://docs.soliditylang.org/en/v0.8.30/abi-spec.html))
- **Reversion:** Logs from reverted execution are discarded. ([REVERT instruction](https://eips.ethereum.org/EIPS/eip-140))

## Interpret topics and data with the correct ABI

Indexed parameters appear in topics, while non-indexed parameters are encoded in the data field. A dynamic indexed value such as a string is represented by a hash, so its original contents cannot simply be decoded from that topic.

The event declaration defines the interpretation. A generic list of hexadecimal words does not establish which fields represent an amount, token identifier or address.

Evidence: [Contract ABI Specification](https://docs.soliditylang.org/en/v0.8.30/abi-spec.html)

## Check the contract behind a Transfer label

Different contracts can emit events with the same signature. A malicious token can use a familiar Transfer event without being the genuine stablecoin contract a reader expected.

Check the chain and emitting address before interpreting a name or symbol. Then consider the contract’s actual code and balance accounting.

Evidence: [Contract ABI Specification](https://docs.soliditylang.org/en/v0.8.30/abi-spec.html); [ERC-20 Token Standard](https://eips.ethereum.org/EIPS/eip-20)

## Keep a block reference with indexed events

RPC log queries return block and transaction context. Indexers need this context to follow the accepted chain and reconcile changed inclusions.

An event proves that particular code emitted particular data in the observed execution. Its business meaning depends on the contract and the wider transaction.

Evidence: [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/)

## Questions

### Can every indexed event field be decoded back to its original value?

No. Dynamic indexed values can be represented by hashes. Their original contents require other information or a known candidate to compare.

Evidence: [Contract ABI Specification](https://docs.soliditylang.org/en/v0.8.30/abi-spec.html)

## Claims and scope

### smart-contract-events-quick-answer

Ethereum contract events are logs emitted during execution. They record an emitting address, topics and data that an ABI can decode. Events help applications index activity, but a log’s name is not proof that its contents are truthful or that the emitter is the asset contract a reader intended to inspect.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

### smart-contract-events-fact-emitter

Emitter: Each log identifies the address that emitted it.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

### smart-contract-events-fact-topics

Topics: Non-anonymous ABI events usually place the event-signature hash in the first topic.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

### smart-contract-events-fact-reversion

Reversion: Logs from reverted execution are discarded.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

## Sources

- [Contract ABI Specification](https://docs.soliditylang.org/en/v0.8.30/abi-spec.html) — Solidity contributors. ABI encoding, selectors, event topics and event data. Locator: Function Selector; Argument Encoding; Events; Errors; JSON. Retrieved: 2026-10-02T17:03:42.824Z.
- [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/) — ethereum.org contributors. RPC response fields, transaction receipts, call simulation and log filtering. Locator: eth_getTransactionByHash; eth_getTransactionReceipt; eth_call; eth_getLogs; eth_getCode; eth_estimateGas; eth_getBalance; eth_getStorageAt; eth_getTransactionCount; default block parameter. Retrieved: 2026-10-02T17:03:42.060Z.
- [REVERT instruction](https://eips.ethereum.org/EIPS/eip-140) — Ethereum Improvement Proposals. State rollback and remaining gas behavior for a REVERT instruction. Locator: Specification. Retrieved: 2026-10-02T17:03:42.150Z.
- [ERC-20 Token Standard](https://eips.ethereum.org/EIPS/eip-20) — Ethereum Improvement Proposals. Token supply, displayed units and balance accounting. Locator: totalSupply; balanceOf; transfer; decimals; approve; allowance; transferFrom; Transfer. Retrieved: 2026-10-02T17:03:45.826Z.

## Revision history

- 2026-10-02: First publication after primary-source research and independent automated verification.

## Cite this entry

Degrees of Satoshi editorial project. “Smart-contract events: logs, indexed fields and their limits.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/smart-contract-events/
