Releases: OpenZeppelin/Robust-Provider
Releases · OpenZeppelin/Robust-Provider
v1.0.0
Breaking / Notable
- Dependency/features reshape for Alloy -> smaller build size
tracingbecame an optional dependency gated by thetracingfeatureError::RpcErrorno longer wraps the inner value inArc.Errorno longerClone-able- If
Errorcloneability is needed, it can be wrapped whole inArc.
Added
- HTTP-based subscriptions (polling) behind feature flag
- Adds polling subscription backend that can be enabled via:
features = ["http-subscription"]RobustProviderBuilder::allow_http_subscriptions(true)- configurable
RobustProviderBuilder::poll_interval
- Adds polling subscription backend that can be enabled via:
- Robust
watch_blocksfunction support - Much broader
eth_*RPC method coverage - Added Example:
examples/get_latest_block.rs.
Changed
- Error model expanded and centralized
- Subscription connection being closed by the node is treated as a failover-worthy error.
Fixed
- Certain invalid filter / block errors are treated as non-retryable (reduces pointless retries).
New Contributors
- @smartprogrammer93 made their first contribution in #32
Full Changelog: v0.2.0...v1.0.0
v0.2.0
v0.1.0
Initial release
Highlights
- Automatic retries - Exponential backoff with configurable retry attempts for transient failures
- Transparent failover - Seamlessly switch between primary and multiple fallback RPC endpoints
- Bounded timeouts - Per-call timeouts prevent indefinite hangs on unresponsive nodes
- Resilient subscriptions - WebSocket block subscriptions with automatic reconnection and lag detection
- Fluent builder API - RobustProviderBuilder for easy configuration of timeouts, retries, and fallbacks
- Provider conversion traits - IntoRootProvider and IntoRobustProvider for flexible provider handling
- Extensibility - try_operation_with_failover for wrapping any RPC call with full resilience logic