addLog(options)
Get event logs emitted by some or all contracts in the network. options has the following structure:
Item filters (where):
address: the set of addresses of contracts emitting the logs. Omit to subscribe to events from all contracts in the network.
topicN: the set of accepted values of topicN.
Filter values are matched as exact strings by the Portal — always pass addresses and topics as lowercase hex strings. @subsquid/evm-stream does not normalize the case for you.
Related data retrieval (include):
transaction = true: retrieve the parent transaction of each matching log and add it to the transactions iterable within the block data.
transactionLogs = true: retrieve all “sibling” logs, that is, all logs emitted by transactions that emitted at least one matching log. The logs are added to the regular logs iterable.
transactionTraces = true: retrieve the traces of all transactions that emitted at least one matching log. The traces are added to the regular traces iterable.
transactionStateDiffs = true: retrieve state diffs of all transactions that emitted at least one matching log. They are added to the regular stateDiffs iterable.
All related items arrive in the flat per-block iterables. To navigate between them conveniently (e.g. log.transaction, transaction.logs), call augmentBlock() from @subsquid/evm-objects on the block data — see Block data.
range overrides the global setBlockRange() for this particular request.
Note that logs can also be requested by the addTransaction() and addTrace() methods as related data.
Selection of the exact fields to be retrieved for each log and its optional parent transaction is done with the setFields() method documented on the Field selection page. There are no default fields — request everything your handler reads. Some examples are available below.
Examples
- Fetch
NewGravatar(uint256,address,string,string) and UpdateGravatar(uint256,address,string,string) event logs emitted by 0x2E645469f354BB4F5c8a05B3b30A929361cf77eC. For each log, fetch the topic set and log data. Fetch parent transactions with their inputs.
Typescript ABI modules generated by squid-evm-typegen provide event signatures/topic0 values as constants, e.g.
- Fetch every
Transfer(address,address,uint256) event on Ethereum mainnet where topic2 is set to the destination address (a common but non-standard practice) and the destination is vitalik.eth a.k.a. 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. For each log, fetch the transaction hash.
As you may observe, the address in the topic2 is a bit longer than usual (0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045, 42 chars).
This is caused by the fact that Squid SDK expects Bytes32[]; therefore, the length has to be 66 chars long.
The possible quick fix is to pad the original address with zeros and prepend 0x.