{
  "$schema": "https://degreesofsatoshi.com/encyclopedia/schemas/article-v1.json",
  "schemaVersion": "1.0.0",
  "id": "smart-contract-events",
  "canonical": "https://degreesofsatoshi.com/encyclopedia/smart-contract-events/",
  "collection": "ethereum",
  "title": "Smart-contract events: logs, indexed fields and their limits",
  "description": "Read Ethereum events as contract-emitted logs, including indexed topics, decoding limits and why a familiar event name does not authenticate a token.",
  "aliases": [],
  "dates": {
    "published": "2026-10-02",
    "modified": "2026-10-02",
    "verified": "2026-10-02T18:12:41.505Z",
    "dataAsOf": "2026-10-02"
  },
  "authorship": {
    "publisher": "Degrees of Satoshi editorial project",
    "process": "AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied."
  },
  "quickAnswer": {
    "text": "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.",
    "claimId": "smart-contract-events-quick-answer",
    "sourceIds": [
      "solidity-abi",
      "eth-jsonrpc"
    ]
  },
  "keyFacts": [
    {
      "label": "Emitter",
      "value": "Each log identifies the address that emitted it.",
      "sourceIds": [
        "solidity-abi"
      ],
      "id": "emitter",
      "claimId": "smart-contract-events-fact-emitter"
    },
    {
      "label": "Topics",
      "value": "Non-anonymous ABI events usually place the event-signature hash in the first topic.",
      "sourceIds": [
        "solidity-abi"
      ],
      "id": "topics",
      "claimId": "smart-contract-events-fact-topics"
    },
    {
      "label": "Reversion",
      "value": "Logs from reverted execution are discarded.",
      "sourceIds": [
        "eip140"
      ],
      "id": "reversion",
      "claimId": "smart-contract-events-fact-reversion"
    }
  ],
  "prerequisites": [
    "ethereum-contract-abis"
  ],
  "sections": [
    {
      "id": "decode",
      "heading": "Interpret topics and data with the correct ABI",
      "sourceIds": [
        "solidity-abi"
      ],
      "paragraphs": [
        "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."
      ]
    },
    {
      "id": "authenticate",
      "heading": "Check the contract behind a Transfer label",
      "sourceIds": [
        "solidity-abi",
        "erc20"
      ],
      "paragraphs": [
        "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."
      ]
    },
    {
      "id": "indexing",
      "heading": "Keep a block reference with indexed events",
      "sourceIds": [
        "eth-jsonrpc"
      ],
      "paragraphs": [
        "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."
      ]
    }
  ],
  "faq": [
    {
      "question": "Can every indexed event field be decoded back to its original value?",
      "answer": "No. Dynamic indexed values can be represented by hashes. Their original contents require other information or a known candidate to compare.",
      "sourceIds": [
        "solidity-abi"
      ]
    }
  ],
  "claims": [
    {
      "id": "smart-contract-events-quick-answer",
      "articleSlug": "smart-contract-events",
      "statement": "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.",
      "sourceIds": [
        "source-6219cf92582a012d",
        "source-a5154b4118a3d15f"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-6219cf92582a012d",
          "locator": "Function Selector; Argument Encoding; Events; Errors; JSON"
        },
        {
          "sourceId": "source-a5154b4118a3d15f",
          "locator": "eth_getTransactionByHash; eth_getTransactionReceipt; eth_call; eth_getLogs; eth_getCode; eth_estimateGas; eth_getBalance; eth_getStorageAt; eth_getTransactionCount; default block parameter"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Checked emitter address, topic zero for non-anonymous events, indexed-value hashes, unindexed data and arbitrary event emission against Solidity ABI.",
          "EIP-140 confirms logs from reverted execution are discarded; RPC log block context and removed flag support reorg-aware indexing. Familiar Transfer names do not authenticate an emitting address."
        ]
      }
    },
    {
      "id": "smart-contract-events-fact-emitter",
      "articleSlug": "smart-contract-events",
      "statement": "Emitter: Each log identifies the address that emitted it.",
      "sourceIds": [
        "source-6219cf92582a012d"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-6219cf92582a012d",
          "locator": "Function Selector; Argument Encoding; Events; Errors; JSON"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Checked emitter address, topic zero for non-anonymous events, indexed-value hashes, unindexed data and arbitrary event emission against Solidity ABI.",
          "EIP-140 confirms logs from reverted execution are discarded; RPC log block context and removed flag support reorg-aware indexing. Familiar Transfer names do not authenticate an emitting address."
        ]
      }
    },
    {
      "id": "smart-contract-events-fact-topics",
      "articleSlug": "smart-contract-events",
      "statement": "Topics: Non-anonymous ABI events usually place the event-signature hash in the first topic.",
      "sourceIds": [
        "source-6219cf92582a012d"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-6219cf92582a012d",
          "locator": "Function Selector; Argument Encoding; Events; Errors; JSON"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Checked emitter address, topic zero for non-anonymous events, indexed-value hashes, unindexed data and arbitrary event emission against Solidity ABI.",
          "EIP-140 confirms logs from reverted execution are discarded; RPC log block context and removed flag support reorg-aware indexing. Familiar Transfer names do not authenticate an emitting address."
        ]
      }
    },
    {
      "id": "smart-contract-events-fact-reversion",
      "articleSlug": "smart-contract-events",
      "statement": "Reversion: Logs from reverted execution are discarded.",
      "sourceIds": [
        "source-ccab9c4be966af8f"
      ],
      "sourceLocators": [
        {
          "sourceId": "source-ccab9c4be966af8f",
          "locator": "Specification"
        }
      ],
      "scope": {
        "collection": "ethereum",
        "dataAsOf": "2026-10-02",
        "blockHeight": null
      },
      "qualification": "",
      "evidenceStatus": "documented",
      "verification": {
        "status": "verified",
        "method": "independent automated source review",
        "checkedAt": "2026-10-02T18:12:41.505Z",
        "reviewer": "Codex independent automated reviewer /root/verify_ethereum_100",
        "notes": [
          "Checked emitter address, topic zero for non-anonymous events, indexed-value hashes, unindexed data and arbitrary event emission against Solidity ABI.",
          "EIP-140 confirms logs from reverted execution are discarded; RPC log block context and removed flag support reorg-aware indexing. Familiar Transfer names do not authenticate an emitting address."
        ]
      }
    }
  ],
  "sources": [
    {
      "id": "solidity-abi",
      "label": "Contract ABI Specification",
      "publisher": "Solidity contributors",
      "url": "https://docs.soliditylang.org/en/v0.8.30/abi-spec.html",
      "locator": "Function Selector; Argument Encoding; Events; Errors; JSON",
      "note": "ABI encoding, selectors, event topics and event data.",
      "version": "Solidity 0.8.30 documentation",
      "checkedAt": "2026-10-02T17:03:42.824Z",
      "contentSha256": "f5889011070e9e83487b6fd899f56ccecd0c08382c998cd2f8860daafd27dc7b",
      "recordId": "source-6219cf92582a012d"
    },
    {
      "id": "eth-jsonrpc",
      "label": "Ethereum JSON-RPC",
      "publisher": "ethereum.org contributors",
      "url": "https://ethereum.org/en/developers/docs/apis/json-rpc/",
      "locator": "eth_getTransactionByHash; eth_getTransactionReceipt; eth_call; eth_getLogs; eth_getCode; eth_estimateGas; eth_getBalance; eth_getStorageAt; eth_getTransactionCount; default block parameter",
      "note": "RPC response fields, transaction receipts, call simulation and log filtering.",
      "version": null,
      "checkedAt": "2026-10-02T17:03:42.060Z",
      "contentSha256": "ed13997ec4f415dff80883add0730d4e64bcc8c17b95dd4f6c27aed0241a4073",
      "recordId": "source-a5154b4118a3d15f"
    },
    {
      "id": "eip140",
      "label": "REVERT instruction",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-140",
      "locator": "Specification",
      "note": "State rollback and remaining gas behavior for a REVERT instruction.",
      "version": "EIP/ERC-140; retrieved document hash recorded",
      "checkedAt": "2026-10-02T17:03:42.150Z",
      "contentSha256": "e6f49a3606194ec36158182489ede14ccc81b5d44b2450ea15f40d568e912345",
      "recordId": "source-ccab9c4be966af8f"
    },
    {
      "id": "erc20",
      "label": "ERC-20 Token Standard",
      "publisher": "Ethereum Improvement Proposals",
      "url": "https://eips.ethereum.org/EIPS/eip-20",
      "locator": "totalSupply; balanceOf; transfer; decimals; approve; allowance; transferFrom; Transfer",
      "note": "Token supply, displayed units and balance accounting.",
      "version": "ERC-20",
      "checkedAt": "2026-10-02T17:03:45.826Z",
      "contentSha256": "98bda5e4707841a68684879878c4c165fdaa47d89ed69ebf232ab9be06ff050e",
      "recordId": "source-ac4ad503a55127bb"
    }
  ],
  "related": {
    "articles": [
      "ethereum-transaction-receipts",
      "internal-transactions",
      "stablecoin-contract-addresses"
    ],
    "dossiers": [],
    "wallets": []
  },
  "revisionHistory": [
    {
      "date": "2026-10-02",
      "kind": "published",
      "summary": "First publication after primary-source research and independent automated verification."
    }
  ],
  "citation": "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/"
}
