Skip to content

Releases: eqlabs/pathfinder

v0.15.0

21 Nov 15:24
v0.15.0
e4fb46e
Compare
Choose a tag to compare

This is a major release of Pathfinder with significant changes:

  • Significant improvement in sync performance (making re-sync or catching up significantly faster).
  • Pathfinder now requires a Websocket connection to an Ethereum node (wss:// URL).
  • JSON-RPC 0.4.0 and 0.5.0 API support has been removed.
  • Preliminary support for the JSON-RPC 0.8.0-rc1 API version has been added. Due to some missing under-the-hood changes not all features are currently supported (for example, L2 gas related fields have invalid values but are present in responses).

Upgrading to 0.15.0 from a previous release will perform a quick database migration. Reverting to Pathfinder <0.15.0 will require a backup of the database before the migration has been completed.

Huge thanks to first-time contributors @odesenfans, @apoorvsadana, @whichqua and @mcdee.

Added

  • Pathfinder now fetches data concurrently from the feeder gateway when catching up. The --gateway.fetch-concurrency CLI option can be used to limit how many blocks are fetched concurrently (the default is 8).
  • --disable-version-update-check CLI option has been added to disable the periodic checking for a new version.
  • Add pathfinder_getClassProof endpoint to retrieve the Merkle proof of any class hash in the class trie.
  • add process_start_time_seconds metric showing the unix timestamp when the process started.
  • --log-output-json CLI option has been added to output the Pathfinder log in line-delimited JSON.
  • Preliminary support has been added for the new JSON-RPC 0.8.0-rc1 specification.

Changed

  • Ethereum RPC API now requires Websocket endpoints (prev. HTTP). If an HTTP url is provided instead, Pathfinder will attempt to connect vía Websocket protocol at that same url.
  • JSON-RPC API version 0.4 and 0.5 support have been removed.
  • JSON-RPC API version 0.7 is now served by default on the / path.

Fixed

  • starknet_getBlockWithTxs works with empty blocks`

v0.14.4

03 Oct 11:54
v0.14.4
ac319d0
Compare
Choose a tag to compare

This is a hotfix release addressing an issue that prevents Pathfinder from syncing Sepolia testnet past block 218483.

❗ ❗ Please upgrade to this release if you're running Pathfinder with the Sepolia testnet. ❗ ❗

Fixed

  • Pathfinder stops syncing Sepolia testnet at block 218484 because of a block hash mismatch.

v0.14.3

23 Sep 17:36
v0.14.3
c52eb5d
Compare
Choose a tag to compare

This is a hotfix release addressing an issue that could cause potential Merkle tree corruption during L2 reorgs.

❗ ❗ Please upgrade to this release if you're running Pathfinder in pruned mode. ❗ ❗

Fixed

  • Pathfinder sometimes corrupts its Merkle trie storage during reorgs, leading to later failures with errors like “Node X at height Y is missing” or “Stored node’s hash is missing.

v0.14.2

03 Sep 11:27
v0.14.2
ebe2538
Compare
Choose a tag to compare

This is a hotfix release fixing some JSON-RPC API issues and a configuration issue.

Huge thanks to @lambda-0x for reporting and fixing the starknet_getEvents inconsistencies.

Fixed

  • Pathfinder sometimes returns an INVALID_CONTINUATION_TOKEN error when requesting events from the pending block and providing a continuation token.
  • starknet_getEvents incorrectly returns pending events if from_block is greater than latest_block_number + 1.
  • starknet_getEvents incorrectly does not return pending events if from_block is pending and to_block is missing.

Added

  • --sync.l1-poll-interval CLI option has been added to set the poll interval for L1 state. Defaults to 30s.
  • Support for Starknet 0.13.2.1.

v0.14.1

30 Jul 10:56
v0.14.1
59cd89b
Compare
Choose a tag to compare

This is a hotfix release fixing some JSON-RPC API issues and a configuration issue.

Fixed

  • Pathfinder does not properly limit the number of concurrent executors when using the --rpc.execution-concurrency CLI option.
  • Pathfinder returns non-conforming STRUCT_ABI_ENTRY objects in response to starknet_getClass requests.
  • Pathfinder returns starknet_getStateUpdate responses that are non-conformant with the specification if there are replaced classes in the response.

v0.14.0

22 Jul 08:30
v0.14.0
97ad303
Compare
Choose a tag to compare

This release of Pathfinder adds support for Starknet 0.13.2.

⚠️ You have to upgrade to this release before Starknet 0.13.2 is rolled out on testnet and mainnet, otherwise syncing new (Starknet 0.13.2) blocks will just stop. ⚠️

Added

  • Support for Starknet v0.13.2.
  • Pathfinder now creates a new directory if the database path specified does not exist.
  • Pathfinder now has a CLI option (--rpc.custom-versioned-constants-json-path) to allow loading a custom versioned constants JSON file. When specified the contents of the file is then used instead of the latest constants built into the blockifier crate during execution of Cairo code.

Fixed

  • Pathfinder exits with an error when detecting a one-block reorg if --storage.state-tries is set to 0.
  • Pathfinder returns an internal error for starknet_getTransactionReceipt requests where steps would be zero in COMPUTATION_RESOURCES.

v0.13.2

25 Jun 06:03
v0.13.2
df7e348
Compare
Choose a tag to compare

This is a hotfix release fixing some JSON-RPC API issues.

Fixed

  • starknet_getTransactionReceipt responses are missing the payload property in MSG_TO_L1 objects on the JSON-RPC 0.7 interface.
  • starknet_traceTransaction and starknet_traceBlockTransactions returns L2 to L1 messages from inner calls duplicated.

v0.13.1

19 Jun 08:55
v0.13.1
050bd61
Compare
Choose a tag to compare

This release fixes serialization problems with response objects of starknet_getTransactionReceipt calls.


Fixed

  • starknet_getTransactionReceipt responses are not compliant with the JSON-RPC specification:
    • L1 handler receipts throw an internal error
    • execution_status and revert_reason properties are missing

v0.13.0

18 Jun 13:35
v0.13.0
f6baf79
Compare
Choose a tag to compare

This release adds new features to our Websocket API:

  • The pathfinder_subscribe method can now be used to subscribe to new events and transaction status updates. For more information on the new subscription types please check our OpenRPC API specifications.
  • Starknet JSON-RPC API methods are now accessible via Websocket connections. To support multiple versions of the JSON-RPC API we've added new, versioned Websocket API endpoints.

We've also implemented further improvements to how we store transaction data in our storage implementation, leading to requiring approximately 80 GiB less disk space for an up-to-date mainnet database.

Running this release will perform a few database migration steps upon first startup, which may take a significant amount of time (up to multiple hours for a mainnet database, depending on the hardware you're running on). Reverting to pathfinder 0.12.0 will require a backup of the database before the migration has been completed.


Fixed

  • starknet_getBlockWithTxHashes and starknet_getBlockWithTxs returns the pending block with a status property that's not in the JSON-RPC specification. This has been fixed for the JSON-RPC 0.7 API endpoint.
  • starknet_traceBlockTransactions and starknet_traceTransaction now falls back to fetching the trace from the feeder gateway for all blocks before Starknet 0.13.1.1.

Added

  • /ready/synced endpoint to check if the JSON RPC API is ready and also check if the node is synced. Useful for Docker nodes which only want to be available after syncing.
  • Websocket endpoints now serve all JSON-RPC methods, not just pathfinder_subscribe and pathfinder_unsubscribe. Version-specific endpoints have been added for the 0.6 and 0.7 JSON-RPC API and the Pathfinder extension API.
  • Websocket endpoint for subscribing to events and transaction status changes.

Changed

  • Improved compactness of transaction and nonce data, resulting in noticeable storage savings.

v0.12.0

23 Apr 12:24
d6333df
Compare
Choose a tag to compare

This release dramatically reduces the storage requirements of pathfinder.

This has been achieved by adding support for pruning state trie data, and improving the compactness of transaction and state diff data in storage.

Storage improvements

The following numbers are for a mainnet database at block 635 054

v0.11.6 v0.12.0 (archive) v0.12.0 (pruned)
770 GB 615 GB 170 GB

State trie pruning

Pathfinder has always stored the state trie data for every block ever. This has lead to enormous storage bloat, where the state trie data comprises roughly 80% of total storage in previous pathfinder versions. This can be reduced to just 5% by enabling state pruning.

With this release you can now configure it to store only the latest k blocks, dramatically cutting the storage usage. As an example, storing only the latest block gives a reduction of 75% of total storage used compared to the previous pathfinder version.

Note that pruning and archive are incompatible. You will need to resync if you wish to run a pruned node - however we will provide snapshots for both variants, at least for mainnet.

The state trie is required to verify the state diffs and to provide storage proofs. You can read more about how and when to configure pruning here.


Added

  • Support for pruning state trie data

Changed

  • Improved compactness of transaction and state diff data in storage

Removed

  • Goerli support