Skip to content

Releases: software-mansion/pathfinder

v0.24.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 16:59
Immutable release. Only release title and notes can be modified.

Release highlights

Pathfinder 0.24.0 enables support for Starknet 0.14.4, improves RPC WebSocket reliability and limits, and hardens the feeder-gateway trace fallback against slow or untrusted responses.

⚠️ This is a breaking release: RPC WebSocket clients must respond to server-initiated pings, which are now used to detect inactive connections. ⚠️

Changed

  • The blockifier and starknet_api crates have been upgraded to 0.20.0-rc.0.
  • Class downloads no longer send block_number=latest to the feeder gateway, as required by Starknet 0.14.4.

Added

  • --rpc.gateway-trace-timeout CLI option (default 30s) bounding how long starknet_traceTransaction and starknet_traceBlockTransactions may spend on the feeder gateway fallback path.
  • BREAKING: The RPC server now pings websocket peers that have been quiet for --rpc.websocket.ping-interval and closes connections that leave --rpc.websocket.max-missed-pings pings unanswered. Clients are required to answer pings, which RFC 6455 mandates and which browsers and the mainstream websocket libraries handle for you, but only while the client is reading from the connection. A client that stops reading for longer than the ping interval times the missed ping limit is disconnected. The keepalive cannot be turned off, so --rpc.websocket.ping-interval, --rpc.websocket.initial-frame-timeout and --rpc.websocket.max-missed-pings all reject 0. Raise the ping interval rather than trying to disable it.
  • Concurrently open RPC websocket connections are now limited to 1024 by default, configurable with the --rpc.websocket.max-connections CLI option. Upgrade requests over the limit are rejected with HTTP 503.
  • RPC websocket connections that don't send anything after being established now time out, configurable with the --rpc.websocket.initial-frame-timeout CLI option.
  • New metrics: rpc_websocket_connections (gauge), rpc_websocket_connections_rejected_total and rpc_websocket_connections_closed_total (labelled with reason).

Fixed

  • --max-rpc-connections is now shared across all routes.
  • A batch request could open more subscriptions than --rpc.websocket.max-subscriptions allows, because the requests within a batch are handled concurrently and each of them checked the limit before any of them counted towards it.
  • starknet_traceTransaction and starknet_traceBlockTransactions requests that fall back to the feeder gateway could hang indefinitely on a slow or unresponsive sequencer (the gateway client retries transport errors with an unbounded exponential backoff), holding RPC tasks and letting a public-network client exhaust the RPC concurrency budget. These requests are now bounded by --rpc.gateway-trace-timeout and bail out early on graceful shutdown.
  • Subscriptions are now torn down when their websocket connection closes, instead of when they next try to send.
  • Hardened the feeder-gateway trace fallback path used by starknet_traceTransaction and starknet_traceBlockTransactions for the mainnet block range where local re-execution is impossible. Any public-network caller can force this path for the affected blocks, so a compromised or byzantine gateway response is untrusted authoritative input. The trace deserialiser now bounds internal_calls nesting depth, caps the length of every Vec<Felt>/Vec<Event>/Vec<MsgToL1> field, and rejects unknown fields on FunctionInvocation; the trace mapper walks internal_calls iteratively instead of recursively (preventing a stack-overflow SIGSEGV that escapes the RPC layer's catch_unwind); and the resource counters are summed with checked arithmetic instead of +/.unwrap() (preventing overflow panics). The gateway fallback path is also logged with a trace_source marker.

v0.23.1

Choose a tag to compare

@github-actions github-actions released this 03 Aug 08:50
Immutable release. Only release title and notes can be modified.

Release highlights

This release fixes the Internal error issue on some pre-Starknet 0.14.0 blocks and also includes minor RPC improvements.

Changed

  • RPC WS subscriptions are now limited by the --rpc.websocket.subscription-request-max-size option (instead of --rpc.request-max-size, which is now used only for HTTP requests).

Added

  • RPC HTTP connections that don't start a request now time out. The timeout is configurable with --rpc.header-read-timeout CLI option.

Fixed

  • Retroactive starknet_traceBlockTransactions on some pre-Starknet 0.14.0 blocks failed with Internal error due to Block max capacity reached on fields: proving_gas.

v0.23.0

Choose a tag to compare

@github-actions github-actions released this 20 Jul 09:25
Immutable release. Only release title and notes can be modified.

Release highlights

This is a 0.22.8-beta.1 pre-release, with old JSON-RPC versions removal.

Added

  • RPC metrics now carry a block_target label on rpc_method_calls_total (how a request targeted a block) and an error_kind label on rpc_method_calls_failed_total (the error variant name). The bundled Grafana dashboard (utils/grafana/dashboard.json) gains an expanded JSON-RPC view, and Prometheus recording rules for RPC latency quantiles are provided in utils/prometheus/rpc-recording-rules.yml.

Changed

  • JSON-RPC 0.8, 0.7 and 0.6 API support has been removed.
  • JSON-RPC API version 0.9 is now served by default on the / path.
  • RPC method-call latency is now exported as a Prometheus histogram in seconds, rpc_method_calls_duration_seconds (_bucket/_sum/_count), replacing the summary rpc_method_calls_duration_milliseconds. Update alerts and dashboards to the new name and derive quantiles with histogram_quantile(...) over the _bucket series; see docs/docs/monitoring-and-metrics.md.
  • Preconfirmed blocks are now accumulated from the local commit head to the preconfirmed tip, improving RPC latency.

Fixed

  • The default --rpc.compiler.concurrency-limit now respects the container's cgroup memory limit instead of the host's total RAM, so it no longer over-provisions compiler concurrency (risking OOM) when running in a memory-limited container.
  • starknet_getMessagesStatus now returns failure_reason from the reverted execution status.

v0.22.8-beta.1

v0.22.8-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 13 Jul 07:43
Immutable release. Only release title and notes can be modified.

Release highlights

This is a pre-release version of Pathfinder aimed at improving preconfirmed RPC latency, and metrics.

⚠️ This release is for testing purposes only. Please do not upgrade your node in a production environment. ⚠️

Added

  • RPC metrics now carry a block_target label on rpc_method_calls_total (how a request targeted a block) and an error_kind label on rpc_method_calls_failed_total (the error variant name). The bundled Grafana dashboard (utils/grafana/dashboard.json) gains an expanded JSON-RPC view, and Prometheus recording rules for RPC latency quantiles are provided in utils/prometheus/rpc-recording-rules.yml.

Changed

  • RPC method-call latency is now exported as a Prometheus histogram in seconds, rpc_method_calls_duration_seconds (_bucket/_sum/_count), replacing the summary rpc_method_calls_duration_milliseconds. Update alerts and dashboards to the new name and derive quantiles with histogram_quantile(...) over the _bucket series; see docs/docs/monitoring-and-metrics.md.
  • Preconfirmed blocks are now accumulated from the local commit head to the preconfirmed tip, improving RPC latency.

Fixed

  • The default --rpc.compiler.concurrency-limit now respects the container's cgroup memory limit instead of the host's total RAM, so it no longer over-provisions compiler concurrency (risking OOM) when running in a memory-limited container.
  • starknet_getMessagesStatus now returns failure_reason from the reverted execution status on JSON-RPC v0.9 and later, while preserving the legacy rejected-status failure reason on older RPC versions.

v0.22.7

Choose a tag to compare

@github-actions github-actions released this 23 Jun 11:38
Immutable release. Only release title and notes can be modified.

Fixed

  • Missing versioned constants for 0.14.3 causing some starknet_traceBlockTransactions calls to fail.

v0.22.6

Choose a tag to compare

@github-actions github-actions released this 18 Jun 19:02
Immutable release. Only release title and notes can be modified.
v0.22.6

Added

  • Pre-confirmed polling start threshold is now configurable with the --sync.poll-pre-confirmed-threshold CLI option.

Changed

  • CANDIDATE transaction status is deprecated and will never be returned by gateway or pathfinder. Using it as a filter in subscribeNewTransactions will fall back to PRE_CONFIRMED with a warning.
  • The blockifier and starknet_api crates have been upgraded to 0.19.0-rc.2.

v0.22.5

Choose a tag to compare

@github-actions github-actions released this 08 Jun 18:23
Immutable release. Only release title and notes can be modified.
v0.22.5

Added

  • Parallel Sierra to CASM compilation processes during RPC requests are now limited to the number of CPU cores available by default, configurable with --rpc.compiler.concurrency-limit CLI option.

Fixed

  • Pre-confirmed block polling re-fetching the full block on every poll due to a block_identifier field being deserialized under the wrong name.

v0.22.4

Choose a tag to compare

@github-actions github-actions released this 08 Jun 09:42
Immutable release. Only release title and notes can be modified.

Release Highlights

Pathfinder 0.22.4 enables support for Starknet 0.14.3, among many other fixes and improvements

Changed

  • The limit for bytecode size in compilation is now defaulting to 81920 bytes and configurable with the new --max-bytecode-size CLI option.
  • Committed-block sync now fetches block, state update, and signature in a single feeder-gateway request. Requires a feeder gateway that supports includeSignature on get_state_update.
  • RPC request size and timeout limits are now configurable with --rpc.request-max-size and --rpc.request-timeout CLI options.
  • RPC request batch size is now configurable with --rpc.batch-size-limit CLI option.
  • The blockifier and starknet_api crates have been upgraded to 0.19.0-rc.0.

Added

  • Parallel subscriptions on a single WS connection are now limited to 1024 by default, configurable with --rpc.websocket.max-subscriptions CLI option.

v0.22.3

Choose a tag to compare

@github-actions github-actions released this 21 Apr 09:14
Immutable release. Only release title and notes can be modified.

Release Highlights

Pathfinder 0.22.3 fixes starknet_estimateFee and starknet_simulateTransactions rejecting transactions with a non-zero tip.

Changed

  • starknet_getEvents now returns block_number for events from pre-confirmed and pre-latest blocks.

Fixed

  • starknet_estimateFee and starknet_simulateTransactions rejecting transactions with a non-zero tip when the account balance could cover the fee. The maximum L2 gas bound now accounts for the tip, matching the blockifier's fee calculation (max_amount * (max_price_per_unit + tip)).

v0.22.2

Choose a tag to compare

@github-actions github-actions released this 07 Apr 11:20
Immutable release. Only release title and notes can be modified.

Release Highlights

Pathfinder 0.22.2 upgrades the blockifier and related dependencies to the latest version.

Changed

  • The blockifier and starknet_api crates have been upgraded to 0.18.0-rc.1.

Added

  • Blockifier libfunc list used for compilation verification is now defaulting to audited and configurable with the new --blockifier.libfunc-list CLI option.