Releases: xssnick/gton
Release list
v0.7.1
v0.7.0
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
estimateFeeresponses with ton-http-api. - Added mutex and block pprof profiles when
--pprof-addris 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_totalgained adeliverylabel; update Prometheus rules and dashboards.- Recent TPS metrics are published only after the live 10-second window is complete.
v0.6.0
Overview
Built-in ton-http-api compatible HTTP API, simplex block-finality broadcast support, TVM v15, optimized liteserver query execution, and major sync, P2P, cache, proof generation, and storage performance and reliability improvements.
Changelog
- Added an optional built-in HTTP API extension with
/api/v2GET, POST, and JSON-RPC support. - Added
tonNode.blockFinalityBroadcastsupport with simplex validator signature verification. - Added independent caching and assembly of block candidates and finality broadcasts, regardless of arrival order.
- Added a bounded concurrent liteserver query dispatcher with fast paths, backlog shedding, cancellation handling, and larger per-connection response queues.
- Added
liteserver.limits.max_waits_per_ipto limit parkedwaitMasterchainSeqnorequests. - Added full-block-identity response caching and shared in-flight computation for deterministic liteserver proofs, configuration, and shard data.
- Expanded shared block-proof construction and validation logic for reuse by liteserver, HTTP API, and broadcast processing.
- Added TVM v15 support and exposed the shared TVM instance to static extensions.
- Prioritized masterchain broadcasts in live-head sync
- Improved get-method execution, fee estimation, and external-message checking and broadcasting.
- Offloaded broadcast decompression and decoding to bounded workers with decoded-result caching.
- Added early rejection of already applied masterchain broadcasts and improved broadcast deduplication, payload reuse, and stale-message handling.
- Added active health probes and recovery for fixed custom overlays.
- Hardened peer endpoint identity, connection replacement, and stale peer cleanup.
- Reworked archive peer discovery and scouting with evidence-based admission, bounded DHT probing, per-demand health, retry backoff, and valuable peer reserves.
- Improved archive download sessions with shard-local peer selection, bounded retries, comparative hedging, subscription leases, cancellation, and idle pool cleanup.
- Improved archive import throughput with masterchain prefetching, zero-copy pack parsing, asynchronous artifact prewriting, and bounded buffering and backpressure.
- Added bounded streaming persistent-state downloads with advertised-size validation and disk-budget reservation.
- Parallelized state-cell imports and writes and optimized cell encoding, master-state caches, shard-state resolution, and transaction traversal.
- Hardened Pebble durability and recovery around artifact metadata, cell-generation rotation, persistent-state deletion, and archive pruning.
- Improved persistent-state retention for multiple records and masterchain groups while preserving compatibility with existing metadata.
- Hardened block identity validation across live caches, liteserver responses, state downloads, and stored artifacts.
- Improved non-final live-view publication with predecessor readiness checks, state-update validation reuse, and cheaper candidate-to-signed promotion.
- Optimized stored block replay by reusing verified artifacts and avoiding redundant file-hash checks and metadata rewrites.
- Updated the minimum Go version to 1.26 and bumped
tonutils-go, RaptorQ,x/sys, CIRCL, and related dependencies.
v0.5.2
v0.5.1
v0.5.0
Overview
Static node extensions and hooks support, liteserver refactored as a built-in extension, shared live-view store for liteserver and extensions, optional sync cutoff mode, checked external message flow, configurable local sendMessage fanout, storage/index migration, and multiple p2p, metrics, and storage reliability improvements.
Changelog
- Added static extension support through
gton.RunNode,NodeOptions.Extension, andservice/hooks. - Added extension hooks for applied blocks, received blocks, and accepted external messages.
- Added extension capabilities for read-only live state access, checked external message sending, logging, and metrics.
- Added
example_extensionwith apply logger and live transaction replay checker examples. - Refactored liteserver into
api/liteserverand wired the default liteserver as a static extension. - Moved shared live liteserver storage/query logic into
service/liveviewfor reuse by extensions. - Added
ton.sync_untilto sync up to a UNIX block-time cutoff, then switch p2p offline while keeping local liteserver data available. - Added
liteserver.send_message_broadcast_fanoutto tune local external-message broadcast fanout. - Added TVM-based external message admission before local and overlay rebroadcast.
- Improved local
sendMessagerebroadcasting with dedicated queues, configurable fanout and dedup, lag-aware fanout reduction. - Added lazy state cell load metrics split by state window, decoded cache, and Pebble.
- Added incremental storage artifact metrics for archive packages and persistent state files.
- Improved p2p peer maintenance, peer warmup, pending peer promotion, and public-shard peer advertisement.
- Improved custom fixed overlay handling with lighter warmup and stricter advertised peer validation.
- Hardened archive package pruning to avoid deleting packages still pending sync.
- Hardened block metadata and block history indexes with full block-id hash validation.
- Added metadb v3 migration that rebuilds block history indexes from stored block metadata.
- Improved storage shutdown logging and close sequencing.
- Removed
cmd/tvm-replay; replay checking is now provided as an extension example. - Removed
--from-zeroand--liteserver-send-message-tvm-traceCLI flags. - Changed archive-from-zero configuration to use
ton.sync_before = -1. - Updated
tonutils-go.
v0.4.1
v0.4.0
Overview
Archival node sync form zero state support, reduced block broadcasts apply latency (faster new blocks availability), faster archival blocks download, configurable liteserver rate limits, multiple performance optimizations.
Changelog
- Added archive node sync from zero support
- Improved archive downloads: peer pinning, cooldowns, retries, hedged downloads, and checkpoint backpressure.
- Improved broadcast flow: hot masterchain/shard caches, delayed compressed decode, and multi-block pending queues per chain.
- Added liteserver configurable rate limits: per-IP request limits, connection limits, keep-alive timeout.
- Improved live sync latency with priority masterchain broadcasts and faster catch-up from cached full blocks.
- Hardened state checkpoints: non-zero states now must be saved together with full block and proof artifacts.
- State snapshots no longer persist state-only checkpoints without block artifacts.
- Block history lookups now return only blocks with served-full artifacts.
- Hardened block metadata validation against forged served-full flags and direct next refs.
- Fixed checkpoint completion so older flushes do not drop newer applied states.
- Optimized liteserver
sendMessage, account proof cache, block data loading, and non-final state cell lookup. - Added configurable large-BOC read workers and persistent-state BOC batch size.
- Reduced Pebble cell-store allocations by reusing write batches.
- Improved liteserver errors parity with the C++ node.
- Metrics now expose applied masterchain progress separately from persisted state.
- Changed several defaults in config.
- Updated
tonutils-go.
v0.3.3
v0.3.2
- Added --version flag for cmd/node, prints build GitCommit
- Improved live block sync responsiveness, pick up newly queued masterchain blocks faster.
- Reduced shard catch-up retry latency & broadcast event wake up
- Optimized archive catch-up memory usage: checkpointed applied states now keep metadata/root hash instead of retaining full cell graphs and parsed state.
- Improved archive checkpoint backpressure: pending checkpoint byte accounting now includes block/proof artifact payloads, not only state cell records.
- Reduced copying in archive state cell handling