Skip to content

Log Querying

Query and filter event logs using the fluent EvmLogs facade powered by LogFilterBuilder. Supports multi-address filtering, topic matching (exact, OR, wildcard), ABI-assisted signature resolution, and decoding static event parameters.

Core Methods

MethodPurpose
fromBlock(block)Start block number or 'latest'
toBlock(block)End block number or 'latest'
address(address|addresses[])Filter by one or many contract addresses
event(signature)Set topic0 = keccak256(signature)
eventByAbi(abi, name)Resolve signature from ABI entries
topic(index, value)Exact indexed topic match
topicAny(index, values[])OR match on several values
topicWildcard(index)Unset a previously set topic filter
get()Execute and return raw logs array

Topic Basics

topic0 always equals keccak256(EventName(type1,type2,...)). Indexed parameters appear in subsequent topics in declaration order.

Address Padding Helper

Addresses in topics are 32-byte left-padded hex. Use helper:

php
$senderTopic = LogFilterBuilder::padAddress('0xSender');

Examples

Single Event, Sender Filter

php
use Farbcode\LaravelEvm\Facades\EvmLogs;
use Farbcode\LaravelEvm\Support\LogFilterBuilder;

$logs = EvmLogs::query()
    ->fromBlock(18_000_000)
    ->toBlock('latest')
    ->address('0xToken')
    ->event('Transfer(address,address,uint256)')
    ->topic(1, LogFilterBuilder::padAddress('0xFrom'))
    ->get();

Multiple Addresses + OR Topic

php
$logs = EvmLogs::query()
    ->address(['0xTokenA','0xTokenB'])
    ->event('Transfer(address,address,uint256)')
    ->topicAny(2, [LogFilterBuilder::padAddress($addrX), LogFilterBuilder::padAddress($addrY)])
    ->get();

Wildcard Second Indexed Param

php
$logs = EvmLogs::query()
    ->event('Approval(address,address,uint256)')
    ->topicWildcard(2) // let spender vary
    ->get();

ABI-Based Signature

php
$abi = json_decode(file_get_contents($path), true);
$logs = EvmLogs::query()->eventByAbi($abi, 'Transfer')->get();

Decoding

Static types decoded via:

php
$decoded = array_map(fn($log) => LogFilterBuilder::decodeEvent($abi, $log), $logs);

Returns associative array including indexed + non-indexed params.

Released under the MIT License.