Skip to content

Releases: NethermindEth/juno

v0.16.3

19 Jun 10:35
36f19b6

Choose a tag to compare

⚠️ After the postponement of Starknet 0.14.3, this update is now required to support Starknet 0.14.3

This updates bring a security fix as well as a bug fix causing the node to crash on rare instances. Additionally, both performance and UX has been improved. Docs have been revamped to make the information they present much clearer.

Added

Bound compilation requests

Compilation tasks performed by Juno have now CPU and Memory limits. #3722

New Juno flags have been updated to allow user to control this new bounds:

  • --max-concurrent-compilations default updated from fixed 8 to the total number of CPU cores divided by 2.
  • --max-compilation-cpu-time added with a 10s default. Any compilation needing more CPU time than that will be automatically killed.
  • --max-compilation-memory added with 4GBs default. Any compilation trying to reserve more memory than that will fail.

Friendlier JSON responses

Malformed JSON requests have a much more human-friendly response. They now indicate which part of the JSON is wrong and what the expected value is. This is achieved with no performance regression. #3702

Before

json: cannot unmarshal number into Go struct field Request.jsonrpc of type string

After

{"jsonrpc": 5, "method": "x", "id": 1}
            ^
field "jsonrpc" should be string, got number [line 1, column 13]

Changed

  • Blockifier version updated to v0.19.0-rc.2 #3733

Fixed

  • Juno no longer crashes when the sequencer sends a transaction with a nil StateDiff. #3740
  • An open request for L1 subscription doesn't stop Juno from shutting down immediately. #3708

Full Changelog: v0.16.2...v0.16.3

v0.16.2

09 Jun 10:43
e79267f

Choose a tag to compare

Hot Fix

  • Bump blockifier and starknet_api to the next rc (now v0.19.0-rc.1) due to a bug in the previous one.

Full Changelog: v0.16.1...v0.16.2

v0.16.1

08 Jun 12:27
131256c

Choose a tag to compare

⚠️ This update is required to support Starknet 0.14.3.

Additionally, it brings considerable performance improvements as well as a more streamlined user experience when interacting with the node.

Added

  • Feeder client improvements to heavily reduce network bandwidth reducing the cost for all of Starknet users.
  • Reduced heap allocations when encoding/decoding field elements (i.e. felts) making RPC requests response parsing 50% cheaper. #3565

  • Improved UX by grouping flags when --help is used. #3620
    • Additionally, the --help message is no longer displayed when there is an error on node startup. #3613 -

New --help preview:

Network & L1 Flags:
      --disable-l1-verification   Disables L1 verification since an Ethereum node is not provided.
      --eth-node string           WebSocket endpoint of the Ethereum node. To verify the correctness of the L2 chain, Juno must connect to an Ethereum node and parse events in the Starknet contract.
     ...

Sync & Polling Flags:
      --preconfirmed-poll-interval duration   Sets how frequently pre_confirmed block will be updated(0s will disable fetching of pre_confirmed block). (default 500ms)
      --prelatest-poll-interval duration      Sets polling interval for pre-latest block updates. (0s will disable polling). (default 1s)
      ...

Gateway Flags:
      --gw-api-key string    API key for gateway endpoints to avoid throttling
      --gw-timeouts string   Timeouts for requests made to the gateway. Can be specified in three ways:
...

Changed

  • L1 head is updated on startup, allowing RPC consumers to see a consistent L1/L2 heads immediately, instead of after a short while. #3594
    • Additionally, when the L1 head is ahead of the L2 chain height (during node sync), an RPC request for the L1 head will return the current chain height to avoid inconsistent responses. #3644
  • Removed a core Rust dependency by rewriting the Cairo Zero class hash calculation in pure Go, getting a performance improvement and memory cost reduction of 20%. #3648
  • Bump RPC spec version to 0.10.2. #3573

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. #3562
  • Startup RPC calls are now bounded by per-call timeouts so a slow or unresponsive L1 endpoint cannot hang node startup indefinitely. #3676

New Contributors

Full Changelog: v0.16.0...v0.16.1

v0.16.0

22 Apr 15:38
4030235

Choose a tag to compare

This update comes with a migration which was optional since v0.15.18. Small updates may be necessary to your command line configuration when updating from Juno v0.15.x.

⚠️ Warning: This update applies a migration that rewrites the entire database and compresses it to half the size. If you are using a decent SSD and minimum requirements, expected migration time is 40 minutes. Lower SSDs or Disks will experience a longer migration time. This migration was optional since [v0.15.18], if you've already applied it, no migration will trigger.

NOTE: Since the new DB layout is now the default, the db info and db revert commands will fail when run against a database that hasn't been migrated yet. Run the migration first, then these commands will work as expected.

Breaking changes

  • Long running migration will kick in after the update. Check Warning note on top for details.
    • The flag--transaction-combined-layout used to trigger the migration has been removed since it is the new default.
  • Default Database compression has changed from snappy to zstd.
  • The default RPC endpoint of Juno has changed from v0_8 to v0_10. If you're application interacts with a Juno node and doesn't specify the version in the URL this might break it. Add /v0_8 at the end of your URL to fix it.
  • RPC versions v6 and v7 are no longer supported.
  • RPC field elements can only be specified as hexadecimals (0x1234abcd) and not decimals. A changed designed to follow the Starknet JSON RPC spec more strictly.
  • The pending-poll-interval flag is now called prelatest-poll-interval reflecting its actual usage better.

Added

  • --disable-received-txn-stream flag which disables RECEIVED alerts, users subscribed to these will no longer get a notification when the nodes receives a transaction.

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)).

Full Changelog: v0.15.22...v0.16.0

v0.15.22

06 Apr 17:33
b2edeaf

Choose a tag to compare

This update objective is to reduce the amount of data Juno downloads from the sequencer. It will reduce bandwidth cost for everyone.

Changed

  • Blockifier updated to version v0.18.0-rc.1.
  • Reduced data downloaded from the Sequencer every time we poll the latest block. From 40 to 500kbs to just a few bytes.
  • Reduced data downloaded from the Sequencer when querying a transaction status. Before, we would get the full transaction and discard the rest of the fields. Now, we correctly get only the data we need.

Fixed

  • v0.15.21 would sent compress requests to mainnet causing the Gateway to not be able to parse it. This is now disabled until Mainnet hits Starknet version 0.14.2.
    Full Changelog: v0.15.21...v0.15.22

v0.15.21

27 Mar 12:23
1bcfc83

Choose a tag to compare

Added

  • Added gzip compression to requests to the feeder gateway when they exceed 1 kilobyte of size. #3505

Changed

  • Updated Starknet execution libraries to their latest version. #3507

Fixed

  • Fix an issue where Felt values returned in the RPC would be incorrectly serialize as [a, b, c, d] instead of the hexadecimal representation. #3504

Full Changelog: v0.15.20...v0.15.21

v0.15.20

20 Mar 19:24
fd6227d

Choose a tag to compare

Added

  • Support for a new RPC v0.10.1 spec.
  • There is now an option to output logs in json format. To do so, pass --log-json into your juno command.
  • Kubernetes support for Juno officially out. Read more about it in our docs!

Fixed

  • Fixed a bug in get_storage_proof in which we were returning an incorrect storage proof hash.

Changed

  • Update to the latest Go version (1.26)
  • Small performance optimizations here and there.

New Contributors

Full Changelog: v0.15.19...v0.15.20

v0.15.20-rc.0

16 Mar 10:59
e5095a5

Choose a tag to compare

v0.15.20-rc.0 Pre-release
Pre-release

Added

  • Added support for a new RPC v0.10.1 spec.
  • Added an option to output logs in json format. To do so, pass --log-json into your juno command.

Changed

  • various improvements for the internal state and DB structure.
  • Fixed a bug in get_storage_proof in which we were returning an incorrect storage proof hash.
  • Various small quality of life improvements and refactors.

New Contributors

Full Changelog: v0.15.19-rc.0...v0.15.20-rc.0

v0.15.19

03 Mar 20:32
9177ddf

Choose a tag to compare

Hot fix recommended for everyone!

Fixed

  • Fix a possible state corruption that could happen when reverting migrated Classes to old CASM hashes.

Full Changelog: v0.15.18...v0.15.19

v0.15.19-rc.0

19 Feb 17:00
221bc34

Choose a tag to compare

v0.15.19-rc.0 Pre-release
Pre-release

Juno is now compiled with Go 1.26 which brings new benefits by default. Check the release notes for info!

Added

Support for RPC v0.10.0-rc.2

  • New flags and capabilities for proof submissions when invoking a transactions.
  • Event filtering using multiple contract addresses
  • Full change log here

Consensus

  • Juno is now be able to participate and communicate with itself when executing consensus. Still experimental!!
  • Not compatible with latest specs released from SW which now require a different message protocol ("propeller" instead of gossipsub)

New tuning option

  • --db-memtable-count determines the number of memory tables (memtable) the database can queue before stalling writes.

Changed

  • Change all Juno logging instances for a more performant one reducing memory allocations.
  • Make contract compilation start on a separate process instead of a thread of Juno
  • Add extra validation to incoming RPC request fields.

Full Changelog: v0.15.18...v0.15.19-rc.0