Skip to content

Releases: NethermindEth/juno

v0.7.4

09 Nov 12:25
6d42611
Compare
Choose a tag to compare

This release focuses on infrastructure scalability through enhanced gRPC integration, allowing for more efficient node deployment strategies.

Added

  • RemoteDB over gRPC: Implement the ability for Juno nodes to connect to a primary node's database over gRPC, serving RPC requests without the need for syncing themselves. This feature is enabled through new flag: --remote-db, streamlining scalability and reducing overhead. (@omerfirmak in #1353)

Changed

  • Error Logging: Reduced noise in logs by preventing the recording of errors not attributable to Juno's own operations. This ensures a clearer logging experience and easier troubleshooting. (@joshklop in #1406)

Usage

To deploy a syncing node that exposes its database over gRPC:

docker run -d \
  --name juno_grpc \
  --network juno-net \
  -p 6064:6064 \
  -v /root/snapshots/juno_mainnet:/var/lib/juno \
  nethermind/juno:v0.7.4 \
  --db-path /var/lib/juno \
  --grpc-host 0.0.0.0 \
  --grpc-port 6064 \
  --grpc

To deploy a node that uses the primary node’s synced database over gRPC:

docker run -d \
  --name juno_from_grpc \
  --network juno-net \
  -p 6065:6065 \
  nethermind/juno:v0.7.4 \
  --http \
  --http-port 6065 \
  --http-host 0.0.0.0 \
  --remote-db juno_grpc:6064

Full Changelog: v0.7.3...v0.7.4

v0.7.3

07 Nov 06:56
Compare
Choose a tag to compare

🎉 Exciting updates have landed in the latest Juno release! Now with support for upcoming Starknet v0.12.3, we've also supercharged RPC performance with a new global class cache, allowing for higher request throughput and optimized resource usage. We've updated blockifier which includes an important wallet integration fix. On top of that, expect new metrics and ongoing enhancements to the P2P layer, among other improvements. Here’s what’s new:

Added

  • Support for Starknet v0.12.3
  • A global class cache to the VM which enhances overall RPC throughput. (PR by @omerfirmak in 1401
  • A new flag, max-vms, to control the maximum number of VM instances for concurrent RPC calls, optimizing resource usage (PR by @omerfirmak in #1378).

Changed

  • The blockifier library has been updated, now supporting the query bit in the version field for transactions (PR by @joshklop in #1401).
  • Subscription handling has been moved to the synchronizer for improved efficiency (PR by @joshklop in #1373).
  • Ongoing enhancements to the P2P layer, including the implementation of a Receipt Handler and Adapter and a new GetBlockBodies feature (PRs by @IronGauntlets in #1352 and by @kirugan in #1359).
  • Prometheus metrics have been expanded to include version information, latency on Transaction.Commit(), and read metrics on blockchain operations (PRs by @omerfirmak in #1394, #1396, and #1395).
  • Kubernetes pods now have a correctly set GOMAXPROCS setting, aligning performance with CPU resources (PR by @omerfirmak in #1397).
  • Fallback to feeder traces for blocks <= 0.12.2 (PR by @omerfirmak in #1405).

Fixed

  • Resolved an issue with event emission on sync step failure for more reliable synchronization (PR by @aminsato in #1387).
  • Refactored websocket error conditions for improved stability and error handling (PR by @joshklop in #1400).

Docker Image

You can pull the Docker image for this release with the following command:

docker pull nethermind/juno:v0.7.3

Full Changelog: v0.7.2...v0.7.3.

v0.7.2

31 Oct 10:56
Compare
Choose a tag to compare

🚀 This release brings significant performance improvements, reducing sync time by approximately 28% (measured on an 8-core machine). We've also added support for tracing legacy blocks (block.Version <=0.12.0), introduced additional metrics, and have ongoing exciting developments in P2P.

Added

Changed

Docker Image

You can pull the Docker image for this release with:

docker pull nethermind/juno:v0.7.2

Full Changelog: (v0.7.1...v0.7.2)

v0.7.1

18 Oct 07:24
d7065fd
Compare
Choose a tag to compare

This is a minor release following v0.7.0, focused on performance improvements and extending transaction support.

Added

  • Cache Generated Traces: A new caching layer for traces, improving performance. @omerfirmak
  • Rejected Transactions Support: Added support for handling rejected transactions. @omerfirmak

Docker Image

You can pull the Docker image for this release with:

docker pull nethermind/juno:v0.7.1

Full Changelog: (v0.7.0...v0.7.1)

v0.7.0

13 Oct 09:23
Compare
Choose a tag to compare

The primary goal of this release is to introduce support for Starknet JSON-RPC v0.5.0. Juno now supports multiple versions via /v0_5 and /v0_4 endpoints. The default version at the root / endpoint has been updated from 0.4.0 to 0.5.0.

Added

  • Starknet v0.5.0 Compatibility:
    • Implemented starknet_specVersion @omerfirmak
    • Renamed juno_getTransactionStatus to starknet_getTransactionStatus. @omerfirmak
    • Removed pendingTransactions endpoint for cleanup. @omerfirmak
    • Added new fields like execution resources and message hash to RPC receipt. @omerfirmak
    • Building and calculating state diffs. @omerfirmak
    • Make starknet_traceBlockTransactions get a block id @kirugan
    • Add txn type to traces
    • Add message_hash field for L1_HANDLER_TXN_RECEIPT
    • Add starknet_getTransactionStatus and remove starknet_pendingTransactions
  • Support multiple RPC versions: v0.4.0 and v0.5.0 @omerfirmak
  • Performance Metrics: Moved metric counting out of various components for cleaner code. @omerfirmak
  • Websocket Enhancements: Full-duplex comms and fixes related to over-reading websocket requests. @joshklop

Changed

  • RPC Optimization: Reduced allocations in RPC requests for better performance. @joshklop
  • Refactored Error Handling: Improved global error usage and better error handling in various components. @omerfirmak

Fixed

  • Websocket Reading: Fixed over-reading issues in Websocket requests.@joshklop
  • Error Handling: Resolved potential nil pointer dereferences and panic issues. @omerfirmak

Deployment and CI/CD

Docker Image

You can pull the Docker image for this release with:

docker pull nethermind/juno:v0.7.0

Full Changelog: (v0.6.6...v0.7.0)

v0.6.6

11 Oct 14:24
Compare
Choose a tag to compare

🌟 Added

  • Added curl, grep, and awk tools to the Docker image

🛠 Fixed

  • Resolved "405 method not allowed" error when calling RPC in the browser by enabling CORS and correctly handling OPTIONS requests. Fixes issue #1329 opened by @cwkang1998 and fixed by @omerfirmak

Full Changelog: v0.6.5...v0.6.6

v0.6.5

09 Oct 10:07
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.6.4...v0.6.5

v0.6.4

04 Oct 09:33
Compare
Choose a tag to compare

🔧 Stability Enhancements:

  • Fix panic when feeder returns mismatched number of txns and receipts #1282

🔗 Full Changelog: v0.6.3...v0.6.4

v0.6.3

20 Sep 13:24
0bfac9d
Compare
Choose a tag to compare

🔧 Stability Enhancements:

  • Immediately acknowledge panicing services #1248
  • Defer state closer #1251
  • Discard database txn if user callback panics #1250
  • Enabled feeder client logs and timeout #1252
  • Move latest block fetch out of store callback #1253

🔗 Full Changelog: v0.6.2...v0.6.3

v0.6.2

18 Sep 10:32
d548f1a
Compare
Choose a tag to compare

🔄 Changed

  • Configurable Host Address:

    • Introduced the ability to customize host addresses with new parameters:
      • --http-host
      • --metrics-host
      • --ws-host
      • --pprof-host
      • --grpc-host
    • By default, these are set to localhost. To make them public, set the address to 0.0.0.0.
  • Pending Block Storage:

    • Adjusted the storage of the pending block to store an empty version instead of deleting its key. This change aims to decrease "block not found" errors during transaction simulations against the pending block.
  • Library Update:

    • Bumped to the latest version of gnark-crypto.

🛠 Fixed

  • Transaction Version Handling:
    • Resolved the handling of the query bit when determining the transaction version for hashing, ensuring precise transaction version identification.

Full Changelog: v0.6.1...v0.6.2