EVM

Ethereum events have a data structure called "topics". Full nodes will use a bloom filter for accelerated scanning of topics for specific values. This has a number of issues:

  • Topics cannot be scanned by a light client
  • While very space efficient, it is not as efficient to search compared to a dedicated database index
  • Centralized RPC providers are very inconsistent - some will limit scans by number of blocks, others by execution time. Additionally, there is no API to determine these limits.
  • While not as expensive as on-chain indexing, topics are more expensive than simply including data in events for off-chain indexing.

For these reasons Substrate does not provide "topic" functionality.