Skip to content

Releases: eqlabs/pathfinder

v0.5.0

21 Mar 08:53
6077d69
Compare
Choose a tag to compare

Highlights

  • starknet v0.11.0 support
  • RPC API v0.3 partial support
  • removed several deprecated config options
  • requires python 3.9 or 3.10 (no longer 3.8)

Changelog

Here is a quick overview of what's changed. More detail can be found in sections underneath.

Added

  • support for state commitment and class commitment in pathfinder_getProof
  • support for starknet v0.11
  • partial support for RPC specification v0.3
    • exposed on /rpc/v0.3/ route
    • missing support for starknet_estimateFee and starknet_simulate

Changed

  • starknet_call and starknet_estimateFee JSON-RPC methods return more detailed error messages
  • python version requirement has changed to 3.9 or 3.10 (was 3.8 or 3.9 previously)

Fixed

  • RPC accepts hex inputs for Felt without '0x' prefix. This led to confusion especially when passing in a decimal string which would get silently interpretted as hex.
  • using a Nethermind Ethereum endpoint occasionally causes errors such as <block-number> could not be found to be logged.
  • sync can miss new block events by getting stuck waiting for pending data.

Removed

  • --config configuration option (deprecated in v0.4.1)
  • --integration configuration option (deprecated in v0.4.1)
  • --sequencer-url configuration option (deprecated in v0.4.1)
  • --testnet2 configuration option (deprecated in v0.4.1)
  • starknet_addDeployTransaction as this is no longer an allowed transaction since starknet v0.10.3
  • RPC api version 0.1, which used to be served on path /rpc/v0.1

RPC API

We added support for v0.3 and removed v0.1. We still support v0.2 at both /rpc/v0.2 and /rpc (default) routes. In summary:

/                     # serves v0.2
/rpc/v0.2/            # serves v0.2
/rpc/v0.3/            # serves v0.3

We are missing starknet_estimateFee and starknet_simulate support for v0.3, which will be added in an upcoming release.

Python requirement

Note: this only applies if you are building from source. This does not impact docker users.

Pathfinder requires python to support the starknet VM used to simulate starknet transactions and function calls. Previous versions of the VM only worked with python 3.8 or 3.9 which was a hassle because most operating systems no longer directly support it. The new version of the VM bundled with starknet v0.11 now requires python version 3.9 or 3.10.

Configuration changes

Several configuration options are now removed, after they were deprecated in pathfinder v0.4.1. Here is a migration guide:

  • --testnet2: use --network testnet2 instead
  • --integration: use --network integration instead
  • --sequencer-url: use --network custom in combination with --feeder-gateway-url and gateway-url
  • --config: use environment variables or env files as an alternative

v0.4.5

21 Dec 13:55
a8fe957
Compare
Choose a tag to compare

Hotfix for a bug introduced in the previous version v0.4.4, which prevented a new node from syncing on blocks near genesis.

Added

  • added Newton FAQ links to readme (thanks @SecurityQQ)

Fixed

  • node fails to sync really old blocks

New Contributors

Full Changelog: v0.4.4...v0.4.5

v0.4.4

20 Dec 14:41
2e5f713
Compare
Choose a tag to compare

This minor release contains some nice performance improvements for starknet_call and starknet_estimateFee; as well as some minor bug fixes.

Also included is a major new feature: storage proofs - big thanks @pscott for his hard work on this feature! This is available via the pathfinder_getProof method which is served from both the pathfinder and starknet endpoints for convenience:

  • <node-url>/rpc/pathfinder/v0.1/pathfinder_getProof
  • <node-url>/rpc/v0.2/pathfinder_getProof

The method is specified here. Its results can be used to formally verify what a contract's storage values are without trusting the pathfinder node. This is achieved by validating the merkle-proof that pathfinder returns and confirming that it correctly matches the known StarkNet state root.

Added

  • storage proofs via pathfinder_getProof by @pscott

Fixed

  • starknet_getEvents returns all events when from_block="latest"
  • v0.1 starknet_getStateUpdate does not contain nonces

Changed

  • improved performance for starknet_call and starknet_estimateFee by caching classes
  • improved performance for starknet_call and starknet_estimateFee by using Rust for hashing

New Contributors

Full Changelog: v0.4.3...v0.4.4

v0.4.3

07 Dec 11:21
bac1a59
Compare
Choose a tag to compare

The primary purpose of this release is to properly support testnet2 after the StarkNet v0.10.3 update. The v0.10.3 update changed the testnet2 chain ID which impacts transaction signatures which in turn meant that starknet_estimateFee would fail for any signed transaction. This release updates pathfinder to use the correct chain ID.

Fixed

  • testnet2 and integration flags are ignored
  • starknet_estimateFee uses wrong chain ID for testnet2

Changed

  • updated to cairo-lang 0.10.3

Full Changelog: v0.4.2...v0.4.3

v0.4.2

02 Dec 10:22
6bf06be
Compare
Choose a tag to compare

Contains several bug fixes, mostly hotfixes for bugs introduced in v0.4.1.

Added

  • document that --chain-id expects text as input

Fixed

  • testnet2 and integration L1 addresses are swopped (bug introduced in v0.4.1)
  • proxy network setups can't sync historical blocks (bug introduced in v0.4.1)
  • ABI serialization for starknet_estimateFee for declare transactions

Full Changelog: v0.4.1...v0.4.2

v0.4.1

30 Nov 18:41
079a570
Compare
Choose a tag to compare

Highlights

  • soft deprecation of some configuration options
  • support custom StarkNet gateways
  • pathfinder RPC extensions at /rpc/pathfinder/ with pathfinder_version method
  • starknet_events optimisations
  • fix block timestamp in pending calls

Custom StarkNet gateway support

This release introduces support for custom StarkNets. You can select this network by setting --network custom and specifying the --gateway-url and --feeder-gateway-url options.

Configuration option deprecation

Several configuration options have been soft deprecated. This means using them will continue to work as before (no breaking change), but they will emit a warning when used. They will be removed in a future version, so please migrate to the newer options.

To re-emphasize: your current configuration setup will continue to work as is.

Network selection

--testnet2 and --integration have been deprecated in favor of --network testnet2 and --network integration.

Gateway proxy

--sequencer-url has been deprecated in favor of --network custom along with --gateway-url, --feeder-gateway-url and --chain-id. In addition, you will need to rename your existing database file to custom.sqlite as this will be the expected filename for custom networks.

Configuration file

--config has been deprecated and will not be supported in the future. The utility this provided was valuable. Unfortunately it is starting to severely hinder how fast we can implement configuration changes and we decided to remove it.

We suggest using environment variable along with environment files to configure pathfinder in a similar fashion.

Changed

  • The following configuration options are now marked as deprecated: --testnet2, --integration, --config, --sequencer-url
  • Optimised starknet_events for queries with both a block range and a from address

Fixed

  • block timestamps for pending in starknet_call and starknet_estimateFee were using the latest timestamp instead of the pending one. This meant contracts relying on accurate timestamps could sometimes fail unexpectedly.

Added

  • custom StarkNet support (see above for details)
  • pathfinder specific RPC extensions hosted at <rpc-url>/rpc/pathfinder/v0.1. Currently this only contains pathfinder_version which returns the pathfinder version of the node. The API specification can be found here

Full Changelog: v0.4.0...v0.4.1

v0.4.0

14 Nov 10:30
830afd9
Compare
Choose a tag to compare

⚠️ v0.4.0 (breaking release) ⚠️

This release contains a breaking change, and also adds support for StarkNet v0.10.2.

The changes themselves are quite simple, but please read through each section as there are some caveats which might impact you when you apply this update.

Default RPC version change

This release changes the version of the RPC that is served at the root route, from v0.1 to v0.2 of the RPC specification. Version v0.1 is still available at the /rpc/v0.1/ endpoint. This is the only breaking change in this release.

Here is a summary of what routes are currently available, and what's changed:

/                <---- serves v0.2 (changed from v0.1)
/rpc/v0.1        <---- serves v0.1 (no change)
/rpc/v0.2        <---- serves v0.2 (no change)

If possible, we recommend that you use the version specific routes as this will prevent such breaking changes from impacting you.

Starknet v0.10.2 support

This release includes an update to the cairo-vm embedded in pathfinder in order to support the upcoming v0.10.2 StarkNet release. This bundled vm is a pre-release and may therefore contain differences to the final version used once StarkNet updates testnet and mainnet. We will of course issue a new release if / when there is a new vm.

⚠️ Please take note of the following ⚠️

Since these changes are not yet live on testnet nor mainnet, this means upgrading to this release will cause deviations between what pathfinder outputs and what can be expected on the network. More specifically, starknet_estimateFee will compute different fees until the network has upgraded to StarkNet v0.10.2.

If you don't need the RPC route changes, it may be pertinent to delay updating until closer to the v0.10.2 release dates on testnet and mainnet. The expected timeline for these upgrades is ~17/11 for testnets and ~24/11 for mainnet.

Full Changelog: v0.3.8...v0.4.0

v0.3.8

28 Oct 13:58
02217d7
Compare
Choose a tag to compare

This release adds support for the second Starknet testnet running on top of Ethereum Goerli. It also contains some fixes and improvements for various JSON-RPC methods and an internal change in how we set up and start Python subprocesses.

Fixes

  • JSON-RPC 0.1: starknet_getStateUpdate now supports fetching the pending state update.
  • JSON-RPC 0.2: starknet_getBlockWithTxHashes and starknet_getBlockWithTxs returns block not found when requesting the pending block and no pending block is currently available. Previously these methods were falling back to returning the latest block instead.
  • JSON-RPC 0.1 and 0.2: starknet_getTransactionReceipt now has improved performance.

Added

  • --testnet2 command line flag can be specified to use the second Starknet testnet.

Full Changelog: v0.3.7...v0.3.8

v0.3.7

21 Oct 11:30
47e7e9c
Compare
Choose a tag to compare

This release adds support for estimating DEPLOY_ACCOUNT transactions and fixes an issue with the starknet_estimateFee and starknet_call calls.

Changed

  • We have internally upgraded to using the latest cairo-lang package available, version 0.10.1.

Fixes

  • starknet_estimateFee and starknet_call now works with the block_id parameter specified as a block number.

Added

  • starknet_estimateFee now supports estimating DEPLOY_ACCOUNT transactions introduced in Starknet 0.10.1.

Full Changelog: v0.3.6...v0.3.7

v0.3.6

14 Oct 16:20
d9a1925
Compare
Choose a tag to compare

Starknet 0.10.1 support

This release enables support for Starknet 0.10.1. Starknet 0.10.1 introduces a new transaction type: DEPLOY_ACCOUNT. The addition of the new transaction type is a backward incompatible change. We strongly urge you to upgrade before Starknet 0.10.1 is released.

Previous versions of pathfinder will no longer be able to sync on blocks from Starknet version 0.10.1 and onwards.

JSON-RPC API

To keep backward compatibility with existing JSON-RPC clients we have decided to expose multiple versions of the JSON-RPC specification. We're keeping our implementation of the 0.1.0 specification while adding support for the upcoming 0.2.1 release.

The path of the URL used to access the JSON-RPC server determines which version of the API is served:

  • the 0.1.0 API is exposed on the / and /rpc/v0.1 paths
  • the 0.2.1-rc1 API is exposed on the /rpc/v0.2 path

Support for version 0.2.1-rc1 of the Starknet JSON-RPC API

We have added an implementation for this new release of the specification. This is still a work in progress: we continue working on adding missing functionality. Known deviations from the specification are:

  • starknet_estimateFee does not support estimating DEPLOY_ACCOUNT transactions.

JSON-RPC API v0.1.0 changes

DEPLOY_ACCOUNT transactions

To be able to represent DEPLOY_ACCOUNT transactions we're deviating from 0.1.0 JSON-RPC specification. We represent the DEPLOY_ACCOUNT transaction type as the DEPLOY_ACCOUNT_TXN type as defined in version 0.2.1-rc1 of the specification.

starknet_addInvokeTransaction can now submit version 1 transactions

Version 1 invoke transactions cannot be submitted without a nonce so we have added an optional nonce parameter to the method. This is a deviation from the 0.1.0 specification but it's a compatible change. See issue #632 for more details.

More metrics

Pathfinder already provided some metrics to get better insight into the performance of the JSON-RPC interface. This release adds metrics that provide information about the communication with the Starknet gateway. Please check our documentation for more information.

Full Changelog: v0.3.5...v0.3.6