Releases: eqlabs/pathfinder
v0.15.0
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
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
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
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 iffrom_block
is greater than latest_block_number + 1.starknet_getEvents
incorrectly does not return pending events iffrom_block
ispending
andto_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
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 tostarknet_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
This release of Pathfinder adds support for Starknet 0.13.2.
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 to0
. - Pathfinder returns an internal error for
starknet_getTransactionReceipt
requests wheresteps
would be zero in COMPUTATION_RESOURCES.
v0.13.2
This is a hotfix release fixing some JSON-RPC API issues.
Fixed
starknet_getTransactionReceipt
responses are missing thepayload
property inMSG_TO_L1
objects on the JSON-RPC 0.7 interface.starknet_traceTransaction
andstarknet_traceBlockTransactions
returns L2 to L1 messages from inner calls duplicated.
v0.13.1
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
andrevert_reason
properties are missing
v0.13.0
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
andstarknet_getBlockWithTxs
returns the pending block with astatus
property that's not in the JSON-RPC specification. This has been fixed for the JSON-RPC 0.7 API endpoint.starknet_traceBlockTransactions
andstarknet_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
andpathfinder_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
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