Motivation
Many managed RPC plans and restrictive environments are HTTP-only -- no WebSocket, so WsClient/log_watcher are unavailable. The polling filter API is the standard fallback and the last missing piece of the core eth_* read surface.
Scope
On Provider:
newFilter(LogFilter) !u128, newBlockFilter() !u128, newPendingTransactionFilter() !u128 (filter IDs are opaque hex quantities)
getFilterChanges(id) -- polymorphic result: logs for log filters, hashes for block/pending filters
getFilterLogs(id), uninstallFilter(id) !bool
- Optional follow-up: an HTTP polling variant of
log_watcher built on these
Pointers
Reuse parseLogsResponse/parseHash in provider.zig; filter IDs expire server-side (~5min idle) -- document re-creation on error.RpcError.
Motivation
Many managed RPC plans and restrictive environments are HTTP-only -- no WebSocket, so
WsClient/log_watcherare unavailable. The polling filter API is the standard fallback and the last missing piece of the core eth_* read surface.Scope
On
Provider:newFilter(LogFilter) !u128,newBlockFilter() !u128,newPendingTransactionFilter() !u128(filter IDs are opaque hex quantities)getFilterChanges(id)-- polymorphic result: logs for log filters, hashes for block/pending filtersgetFilterLogs(id),uninstallFilter(id) !boollog_watcherbuilt on thesePointers
Reuse
parseLogsResponse/parseHashinprovider.zig; filter IDs expire server-side (~5min idle) -- document re-creation onerror.RpcError.