RPC workload behavior
Routing guarantees depend on the operation. Classify the workload before choosing a rollout and recovery plan.Stateless reads
Methods such aseth_chainId, eth_blockNumber, current balances, transaction
receipts, and many contract calls are the cleanest failover candidates. Lasso
can try another eligible provider when a failure is safe to retry. Applications
must still tolerate ordinary chain reorganization and provider freshness
differences.
Historical state and logs
Historical block, state, and log coverage varies independently across provider plans. Lasso analyzes block references and provider capabilities, but a probe is evidence from selected depths and representative calls—not proof of unlimited history.eth_getLogs also has provider-specific block-range and result-size limits.
Split large ranges, paginate with an overlap appropriate for reorg handling,
and verify the exact range used by an indexer. A provider that serves old logs
may still lack old state, and the reverse is also possible.
Trace and debug methods
Trace namespaces are often plan-gated or client-specific. Include only providers that support the exact trace method and parameters your application sends. Treat a successful representative probe as a starting point, then test real payload shapes and timeouts.Transaction broadcast
eth_sendRawTransaction sends the signed bytes to one selected upstream under
one deadline. Lasso does not automatically retry or fan out after dispatch
because a lost response may still mean the transaction was applied. Production
senders should own signing, nonce allocation, idempotency, reconciliation by
transaction hash, rebroadcast policy, and receipt/finality tracking.
Stateful HTTP filters
Lasso currently rejectseth_newFilter, eth_newBlockFilter,
eth_newPendingTransactionFilter, eth_getFilterChanges,
eth_getFilterLogs, and eth_uninstallFilter locally with -32601. Their IDs
are provider-local, and Lasso does not yet have an accepted affinity lifecycle
for creation, follow-up calls, owner loss, and expiry. Use eth_getLogs for
historical scans and WebSocket subscriptions for real-time delivery.
WebSocket subscriptions
Lasso multiplexes compatible upstream subscriptions and can fail over within a profile. On provider changes it can gap-fillnewHeads and log subscriptions
with bounded HTTP backfill and duplicate suppression. The launch subset accepts
only newHeads and logs; pending-transaction subscriptions are not included.
Recovery that exceeds its time, replay, buffer, or ancestry bounds closes the
affected client explicitly. Lasso does not continue after a silent partial
backfill.
Within-profile subscription failover should not be confused with system-profile
HTTP fallback. Cross-profile subscription fallback is not part of the current
guarantee. Clients must reconnect after network interruption, handle duplicate
or delayed events, and keep their own durable checkpoint for indexer-grade
processing.