Releases: NethermindEth/juno
v0.16.3
⚠️ 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-compilationsdefault updated from fixed8to the total number of CPU cores divided by 2.--max-compilation-cpu-timeadded with a 10s default. Any compilation needing more CPU time than that will be automatically killed.--max-compilation-memoryadded 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
Hot Fix
- Bump
blockifierandstarknet_apito the next rc (nowv0.19.0-rc.1) due to a bug in the previous one.
Full Changelog: v0.16.1...v0.16.2
v0.16.1
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
--helpis used. #3620- Additionally, the
--helpmessage is no longer displayed when there is an error on node startup. #3613 -
- Additionally, the
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_estimateFeeandstarknet_simulateTransactionsrejecting 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
- @AvivYossef-starkware made their first contribution in #3562
- @RafaelGranza made their first contribution in #3602
- @ongyimeng made their first contribution in #3648
Full Changelog: v0.16.0...v0.16.1
v0.16.0
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 infoanddb revertcommands 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-layoutused to trigger the migration has been removed since it is the new default.
- The flag
- Default Database compression has changed from
snappytozstd. - The default RPC endpoint of Juno has changed from
v0_8tov0_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_8at the end of your URL to fix it. - RPC versions
v6andv7are 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-intervalflag is now calledprelatest-poll-intervalreflecting its actual usage better.
Added
--disable-received-txn-streamflag which disablesRECEIVEDalerts, users subscribed to these will no longer get a notification when the nodes receives a transaction.
Fixed
starknet_estimateFeeandstarknet_simulateTransactionsrejecting 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
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
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
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-jsoninto your juno command. - Kubernetes support for Juno officially out. Read more about it in our docs!
Fixed
- Fixed a bug in
get_storage_proofin 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
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-jsoninto your juno command.
Changed
- various improvements for the internal state and DB structure.
- Fixed a bug in
get_storage_proofin 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
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
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-countdetermines 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