Filter by log emitter & event signature
A log filter keeps the whole transaction containing a matching log. Its other logs and execution context remain in the block. Read transaction_traces[].receipt.logs[] and select the desired logs locally.
log_filters[].addresses- 20-byte addresses of contracts that emit logs, including events emitted during internal calls. This is not the transaction recipient or a token holder address.
log_filters[].event_signatures- 32-byte topic[0] hashes. Any signature in the list can match. Omit for all event types from the specified emitters.
send_all_block_headers- true keeps every block header, including blocks with no matching transactions. false allows indexed historical blocks without matches to be skipped; live blocks can still arrive empty.
Each list uses OR. Within one filter, the address and signature conditions both apply to the same log (AND). Multiple log filters use OR. At least one list in each filter must be nonempty.
Only Transfer events emitted by Ethereum USDC or USDT: the address and signature must match the same log.
1{2 "final_blocks_only": false,3 "start_block_num": "-1",4 "transforms": [5 {6 "@type": "type.googleapis.com/sf.ethereum.transform.v1.CombinedFilter",7 "log_filters": [8 {9 "addresses": [10 "oLhpkcYhizbB0Z1KLp6wzjYG60g=",11 "2sF/lY0u5SOiIGIGmUWXwT2DHsc="12 ],13 "event_signatures": [14 "3fJSrRviyJtpwrBo/DeNqpUrp/FjxKEWKPVaTfUjs+8="15 ]16 }17 ],18 "send_all_block_headers": true19 }20 ]21}
CombinedFilter protobuf definition
1syntax = "proto3";2package sf.ethereum.transform.v1;34message CombinedFilter {5 repeated LogFilter log_filters = 1;6 repeated CallToFilter call_filters = 2;7 bool send_all_block_headers = 3;8}910message LogFilter {11 repeated bytes addresses = 1;12 repeated bytes event_signatures = 2;13}