Skip to content

Releases: xssnick/gton

v0.7.1

Choose a tag to compare

@xssnick xssnick released this 26 Aug 12:49
  • Fixed custom overlay msg sender

v0.7.0

Choose a tag to compare

@xssnick xssnick released this 01 Aug 13:08
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.

v0.6.0

Choose a tag to compare

@xssnick xssnick released this 15 Jul 08:05
f45a1d5

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/v2 GET, POST, and JSON-RPC support.
  • Added tonNode.blockFinalityBroadcast support 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_ip to limit parked waitMasterchainSeqno requests.
  • 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

Choose a tag to compare

@xssnick xssnick released this 01 Jul 12:51
  • No cell prewarm for archival live view publish

v0.5.1

Choose a tag to compare

@xssnick xssnick released this 01 Jul 10:56
  • Support old global config without network id for DHT server

v0.5.0

Choose a tag to compare

@xssnick xssnick released this 01 Jul 10:45
8bfaac9

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, and service/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_extension with apply logger and live transaction replay checker examples.
  • Refactored liteserver into api/liteserver and wired the default liteserver as a static extension.
  • Moved shared live liteserver storage/query logic into service/liveview for reuse by extensions.
  • Added ton.sync_until to sync up to a UNIX block-time cutoff, then switch p2p offline while keeping local liteserver data available.
  • Added liteserver.send_message_broadcast_fanout to tune local external-message broadcast fanout.
  • Added TVM-based external message admission before local and overlay rebroadcast.
  • Improved local sendMessage rebroadcasting 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-zero and --liteserver-send-message-tvm-trace CLI flags.
  • Changed archive-from-zero configuration to use ton.sync_before = -1.
  • Updated tonutils-go.

v0.4.1

Choose a tag to compare

@xssnick xssnick released this 22 Jun 15:40
  • Fixed block id copy in hot cache

v0.4.0

Choose a tag to compare

@xssnick xssnick released this 22 Jun 10:54
fc2ea34

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

Choose a tag to compare

@xssnick xssnick released this 17 Jun 12:30
  • Fixed celldb migration state hole
  • Optimized broadcast signatures verification
  • Small refactor

v0.3.2

Choose a tag to compare

@xssnick xssnick released this 16 Jun 10:42
  • 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