The declaration decides which values become topics.
LET’S PICTURE IT
A record can put searchable labels on its cover and other information inside.
SEE IT FOR YOURSELF
From an emitted Transfer event to a receipt logStep 1 / 4
A token implementation may update balances and emit its standard Transfer event. State and the emitted record are related but distinct.
A token implementation may update balances and emit its standard Transfer event. State and the emitted record are related but distinct.A non-anonymous Transfer event uses the full thirty-two-byte Keccak-256 signature digest as topic zero, not a four-byte function selector.In the common ERC-20 shape, from and to occupy topics one and two. The raw value is a thirty-two-byte data word. Other standards can index fields differently.An application can decode receipt logs under the correct ABI. A matching signature does not establish that an unknown emitter is an honest token.
Animated local teaching model. No wallet, RPC or live blockchain data. Some labels and hashes are abbreviated for readability.
Read indexed in the declaration
An indexed parameter is assigned a topic under event encoding rules. For a non-anonymous event, the signature already occupies topic zero, leaving at most three indexed fields.
Encode ordinary values appropriately
An indexed address fits in one topic and is left-padded to thirty-two bytes. Complex and dynamic indexed values use hashing rules instead of an ordinary recoverable topic value.
Decode the data tuple
Non-indexed fields are encoded together in the log data region. Their ABI offsets, when needed, use that data tuple as the base, without an event signature prefix.
Do not infer indexing from names
Two declarations can share a canonical event signature while indexing fields differently. Names like from and value do not replace the full declaration.
Inspect the example
event Transfer(address indexed from, address indexed to, uint256 value)
topic 0: 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
topic 1: 0x0000000000000000000000000000000000000000000000000000000000000001
topic 2: 0x0000000000000000000000000000000000000000000000000000000000000002
data: 0x0000000000000000000000000000000000000000000000000000000000000064
Toy emitter; from address 1; to address 2; raw amount 100.
No token decimals or verified token identity are implied.
This declaration indexes from and to, while value remains in data.