Skip to content

v0.7.0

Choose a tag to compare

@xssnick xssnick released this 01 Aug 13:08
· 1 commit to master since this release
6d30d48

Overview

QUIC-based public broadcast delivery, lower P2P and storage overhead, TVM optimizations and faster liteserver responses.

Changelog

Public broadcasts and P2P

  • Added QUIC-based Plumtree delivery for public broadcasts, with FEC recovery for more reliable block propagation.
  • Improved public broadcast routing to reduce duplicate traffic, bound memory usage, and isolate slow peers.
  • Improved QUIC connectivity with cached routes, protected dialing, retry backoff, and cleanup of stale connections.
  • Added persistent public-peer caching and a broader peer directory, allowing faster recovery after restart without keeping too many active connections.
  • Hardened block broadcast processing: invalid and already-applied blocks are dropped early, while large payloads are decoded in bounded workers.
  • Prioritized masterchain broadcast decoding so shard traffic does not delay the live masterchain head.
  • Improved handling of out-of-order broadcasts by retrying valid payloads once their required predecessor state becomes available.

Synchronization and storage

  • Avoided duplicate masterchain state preparation when several synchronization paths process the same block.
  • Added early shard preparation so shard work can complete before its masterchain block is committed.
  • Improved state-cell caching to keep large updates from blocking readers and other appliers for long periods.
  • Improved archive catch-up by preparing the next archive window while the current one is being applied.
  • Reworked archive import workers to prioritize active synchronization over background prefetch.
  • Kept live block updates responsive when many recent blocks are still waiting to be saved.
  • Reduced work and memory churn when publishing a block together with its state, especially on nodes with long block histories.
  • Reduced temporary allocations while building shard-account state data, lowering memory pressure during large state operations.
  • Improved persistent-state writes, checkpoint preparation, and Pebble batch handling to reduce unnecessary copying and buffer pressure.
  • Improved Pebble compaction scheduling to avoid excessive retries and background work under storage pressure.

Liteserver, API, and operations

  • Moved LiveView prewarming out of the block-apply path, keeping newly applied blocks available without waiting for expensive preparation.
  • Added proactive liteserver warming for common requests at each new masterchain head, reducing cold-request latency.
  • Improved historical block lookup through shard splits and merges, using live data before falling back to storage.
  • Moved recent TPS calculation to a background tracker, reducing work during status and Prometheus collection.
  • Enabled POST requests for all built-in HTTP API routes.
  • Aligned rejected-external estimateFee responses with ton-http-api.
  • Added mutex and block pprof profiles when --pprof-addr is enabled.
  • Added node.Run(...) for custom node binaries using the standard CLI, configuration, and built-in extensions.

Upgrade notes

  • The node now opens QUIC on UDP ADNL port + 1000; expose this port through firewall/NAT.
  • gton_p2p_broadcasts_total gained a delivery label; update Prometheus rules and dashboards.
  • Recent TPS metrics are published only after the live 10-second window is complete.