Skip to content

v0.16.5-rc.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Jul 14:27
97f5290

We've revamped completely the way we fetch the latest data from the Feeder Gateway, reducing P50 latency from 1 second to a few mili-seconds. The following table compares the latency from an old Juno version versus this new release when tracking a new submitted transaction:

Dimension Juno old Juno new
Tx-inclusion latency — p50 1230ms −87ms*
Tx-inclusion latency — p90 2850ms 349ms
Tx-inclusion latency — p99 4722ms 439ms
Tx-inclusion latency — max 5669ms 1211ms

*negative latency means the observer received the latest data faster from Juno than from the Feeder Gateway

Additionally, this update is packed with security and performance improvements, making the day to day execution of a Juno node safer and cheaper resource wise.

Added

  • New way of fetching the pre-confirmed heads reducing latency from the 1 to 4 second range to below 100 mili-second on average #3723 #3730
  • New RPC HTTP concurrency limit added (#3753), accessed through flags --rpc-max-concurrent-requests and --rpc-max-request-queue. Current default limits are big enough to avoid a breaking change but will be lowered down in Juno's next major version.
  • Every Sequencer responses is now validated. This will protect the Juno node when the Sequencer sends malformed data. #3749

Changed

  • Optimized latest-block state reads by avoiding full block header decoding. Getting a latest block nonce, class hash or storage take 50% less time. #3782
  • Optimized key flattening, an instruction used for most DB accesses, to be twice as fast, reduce heap allocations by 1/3 and use half the memory. #3783
  • Optimized trie access to be lazy. Instead of building the Contract and Class tries every time there is a need to read from the state, they are built on demand, improving the latency for RPC requests that don't need these tries. #3780 #3789
  • Optimized Blake2s hash (used when re-computing CASM hash version) making it twice fast and using 1/3 less memory usage and heap allocations.
  • Sequencer flags are now correctly marked as experimental. #3802
  • Retry getting Chain ID on node startup instead of failing. #3771 #3776

Removed

  • Candidate transactions are no longer part of the public API. #3732
  • Removed pending endpoint querying. #3806

New Contributors

Full Changelog: v0.16.4...v0.16.5-rc.1