All notable changes to this project will be documented in this file.
- Cells db performance optimization. Added new 6th version of node database, migration performs automatically on startup.
- New commands in console: getblock, getaccountstate_byblock
- Utility print can print account from boc and config params if account is config
- SMFT: block sync awake
- Added
ResetExternalDb
console command which sets external db block pointer to last applied block
- Fix compiler warnings
- SMFT configuration parameters
- Cleanup fast_finality for SMFT. Add default parameters for workchain delivery
- Block version up
- SMFT: configure timeout for delivery of shard blocks status to MC validator
- Fix for issue with shard merge
- SMFT configuration parameters
- Fast finality: added new roles mechanism
- Fix for broken shard merge
- SMFT fixes:
- lifetime and sync time of smft status block are separated: status lives much more than synced to avoid empty blocks syncs after deletion
- messages size dump was added
- broadcast hops is set to 3
- CapUndeletableAccounts supported
- Avoid repeated block validations
- Add broadcast candidate hops configuration
- Preparation for future updates
- Restore T-Node force_update behaviour (bugfix)
- Fixed AllowStateGcSmartResolver::allow_state_gc which caused memoty leak (no one shard state was deleted from cache)
- Removed extra logging in validate query
- Fixes for verificator
- Added possibility to proxy external messages from outer TCP conneciton to node using console
- Use modern crates anyhow and thiserror instead of failure
- Some issues logged as errors in remp client are now warnings
- Fixed top shard blocks resend - now it retries sending when master block was updated. It logged a error before
- SMFT stability updates (fixes, increase sync periods), extra per-block statistics
- Support TL vector interface changes
- Patch for REMP load reduction
- REMP performance and stability improvements
- Send external messages as an overlay broadcast when REMP capability is set, but REMP-client is disabled
- Adjust build with external DB
- Reduced strictness of block id fields checking. In case of a mismatch, logging is performed instead of returning an error
- Attempt to load lost cell from storing cells cache by id
- Fix build warnings
- Refactor overlay consumer interface
- Send SMFT messages to random workchain nodes to improve delivery across workchain
- Support Mesh networks
- Added support for due payment fix
- Bump block version
- Minor fixes related to renaming
- Repo ever_types merged into repo ever_block
- The crate was renamed from
ton_node
toever-node
- Supported renaming of other crates
- Shadow SMFT is prepared for first deployment
./configs/ton-global.config.json
renamed to./configs/ton-global-config-sample.json
because it is not an actual mainnet config. You can get the actual mainnet config here: https://github.com/tonlabs/main.ton.dev/blob/master/configs/ton-global.config.json.- Removed
low_memory_mode
flag from node's config.json. It is always enabled now. The false value of this flag is not actual anymore because the size of the shard states has become too big to process it in memory.
- Logging was a bit refactored. Added neighbor's stat to telemetry.
- Added new parameter to node config
sync_by_archives
which allows to synchronize node by archives instead of single blocks. It may be useful in some conditions, for example, long ping to other nodes.
- Estimate block size using pruned cells estimation
- Supported new multi-networks API of DHT
- United crate for protocols
- Fixed UNREGISTERED_CHAIN_MAX_LEN const for Venom blockchain
- Fixed bug in storing cells mechanism.
- Fix unstable sync (key blocks mismatch)
- Get rid of ton::bytes type
- Deleted messages from outbound queue which were left after split are taken into estimation of block size
- Improved mechanism of storing cells.
- Fixed mint of extra currencies. A bug in the validator was caused while minting the second and next currencies. The result was a validation failure.
- Improved alforithm for ping of bad peers
- Tools repo merged into node repo (see tools changelog in the end of this file)
- Fix script to run test network locally
- Revert using all peers for requesting key block ids
- Fix compiler warnings
- Add REMP settings to default configs
- Added ability not to split out message queues during shard split
- Try to use old persistent states in cold boot if newest one is not ready yet
- Backport from public
- Switch to rocksdb from crates.io
- Implement initial_sync_disabled node run parameter allowing node to sync from zero state
- Decrease test memory usage
- Fixed compile warnings
- Updates in REMP protocol
- Optimizations on external messages processing
- Front node functionality isolation
- Fixed accept block when block data already saved
- Fixed persistent shard states GC
- Cells cache with improved performance
- Added REMP broadcast message delayer
- Removed delay for direct REMP messages
- Added node tests
- Updates in REMP protocol
- More support for BLS TL structures
- Support BLS TL structures
- Catchain low-level receiver configuration options
- Added command line option
--process-conf-and-exit
.
- Run TVM control requests
- Remove deprecated level_mask_mut() call
- Fixed the blocks parser for newly synchronized nodes
- Move cleaning outdated Catchain caches on node startup into separate thread
- Cleaning outdated Catchain caches on node startup
- FIX: breaking compat in ever-block-json
- Correct cleanup of catchain DBs
- Added EngineTraits::load_and_pin_state method to work with states which may be deleted by GC.
- Fixed bug when ShardStatesKeeper tried to restore already deleted (by GC) shard state.
- Use tcmalloc without debug functionality (stability+)
- Sending blocks to Kafka was moved to separate worker
- Write
last_trans_lt
to account's json for deleted accounts.
- Fixed a possible hang-up while saving a shard state
- Refactor processing of external messages
- Support hardforking in node
- Remove time limit for boot
- Support hops check for old-fashioned broadcasts
- Fix build for front node
- Fixed loop to request peers from queue (add_overlay_peers)
- Save persistent state with BocWriterStack
- Update for fast finality
- Bugfixes for states cache optimisations
- Added control queries
GetAccountByBlock
,GetShardAccountMeta
,GetShardAccountMetaByBlock
,GetAppliedShardsInfo
- Produce applied shard hashes and raw block proofs to Kafka
- Bump cc crate version
- Supported ton_block library without fast-finality feature
- Speed up node shutdown
- Improved previous sessions calculation
- Improved sessions validator info logging
- Added parameter to default_config to limit maximal REMP queue length
- Added shard states cache modes ("states_cache_mode" param in config.json)
- "Off" - states are saved synchronously and not cached.
- "Moderate" - recommended - states are saved asiynchronously. Number of cached cells (in the state's BOCs) is minimal.
- "Full" - states saved asynchronously. The number of cells in memory is continuously growing.
- Added "cache_cells_counters" param in config.json. If it is set to true, then cell counters are cached in memory. It speeds up cells' DB but takes more memory. This cache was always enabled before.
- Added limit for cells DB cache size ("cells_lru_size" param in config.json). Zero value means default limit - 1000000.
- Fixed stopping of node (in part of a cells GC)
- Limit for rocksdb log file: max 3 files, 100MB each
- Refactor boot procedure
- Simplify procedure to get next key blocks
- Fixed migration of DB from v4 to v5
- Adjusted the total WAL size limit for RocksDB
- Validation fixes for single-node sessions
- Fixed shard states GC stopping
- New cleaning algorithm for shard states cache. Now it lives less in case of a persistent state saving.
- Pretty logging for major workers' positions
- Skip validations for single node sessions
- Validator manager fix for single-node sessions
- Update session creation for single node sessions
- Fix for deep recursion on catchain blocks dropping
- Increase package version
- Now message REMP history before session start is properly collected
- Different fixes
- Fix of SystemTime::elapsed() unwrap call
- Prohibited big cells in ext messages
- Peristent state heuristics
- Remove ever-crypto crate
- Fast finality prototype
- Stabilization of fast finality feature
- Supported new version of BocWriter::with_params with fixed cell lifetime
- Filled gen_utime_ms for block and state
- Remp collation check for uid duplicates added
- Limited the number of attempts in accept block routine (was infinite)
- Fixed setup of special settings for the "cells" column family in RocksDB
- Fix got GetStats during boot
- Optimistic consensus: supported key blocks
- Improve node requests logging
- Process lost collator
- Support for different formats of validator statistics
- Disable debug symbols in release
- Improve log messages about neighbours
- Stopping validation in validator_group after all blocks in range are generated
- Increase package version
- Preliminary changes for status merge
- Refactored REMP message forwarding criteria: now a forwarded message is collated if it has at least one non-reject status from previous sessions
- Test for status merges in REMP
- Fixes in check_message_duplicates: now same-block duplicate checks are properly performed
- log::error to log::trace for no validator_group
- Updated version number in Cargo.toml
- Merge shards MVP
- Add script to restart specific node
- Optimistic consensus: fixed cc rotating
- Update restart_nodes.sh
- Added 'validation_countdown_mode' option
- Printing valIdation_countdown_mode
- Changed default config for test_run_net - no countdown for zerostate
- Increase package version
- Disable timeout for catchain processing after restart
- Increase package version
- Added precalculation of out message queues for split
- Refactored limits and timeout in collator
- Skiped collator phases for after_split block
- Added processed_count_limit into clean_out_msg_queue
- Speeded up cleanup of huge output queue
- Added GlobalCapabilities::CapSuspendedList to supported_capabilities
- Supported new rocksdb interface
- Some changes for better test
- Added more statistic metrics
- Fix build errors
- Increase package version
- Fix boot wrong next key block sequence
- Fix boot from init block
- Optimistic consensus - part one
- No new validator lists for Remp; message rerouting in Remp fixed; less load when Remp caps is off
- Message duplicate checks using message unique ids (body hashes) in Remp
- Fixed compilation for build without telemetry feature
- Stabilize internal DB tests
- Increase package version
- Fixed bug in ShardStateKeeper: 'is_queue_update_for' had been called wrong way.
- Prototype flexible build process
- Add ever-types to flexible build
- Increase package version
- Mokup package version for flex build
- Open catchain tests
- Open archive tests
- Open storage tests
- Open node tests
- Increase node version
- Fast validator session configuration
- Ready to use fast single session code
- SessionFactory::create_single_node_session has been added
- Move shardstate DB performance test to becnhes
- Fix script to run local test network
- Increase node version
- Fixed bug in DB restore: LAST_ROTATION_MC_BLOCK pointer is not truncated.
- Added ability to send the validator status to the console
- Fixed compilation after auto bumped rocks_db version
- Supported ever-types version 2.0
- Fixed bug in external messages storage. It was not properly cleaned up when node collated blocks only in workchain or masterchain.
- Fixed bug in archives GC. Now it checks if shard state related to block is allowed to be deleted.
- Made Jaeger tracing optional
- Bumped block version to 37
- Supported CapFeeInGasUnits capability
- New version of cells DB with separated values for cells counters. New version works faster.
By-default old version is used (no need to refill DB). To migrate to new version it is need
to run node with
--force-check-db
flag. - Added new section in config.json.
Description for flags see below.
"cells_db_config": { "states_db_queue_len": 1000, "max_pss_slowdown_mcs": 750, "prefill_cells_cunters": false }
- Added in-memory cache for all cells counters. It speeds up cells DB but takes more memory.
Enabled by
prefill_cells_cunters
flag. By-default it is disabled. - Abjusteble queue length for states DB. It is a throttling threshold - node slows down
if the queue is full. Abjusted by
states_db_queue_len
flag in config.json. Default value is 1000. - Slow down of persistent state saving. It reduces load on cells DB when it is overloaded.
Maksimum slowdown time (pause before next cell saving) is set by
max_pss_slowdown_mcs
flag in config.json. Default value is 750 microseconds. - Setup Bloom filters and increased caches in the cells DB. It gives significant performance boost on databases with a lot of cells (more than 10 millions).
- Fast database recovery. It works by optimistic scenario - doesn't check all cells. If cell lost while node works - it restarts and runs cells DB full recovery.
- Bumped block version to 31
- Removed unused code
- Fixed build warnings
crc32c
crate changed to commoncrc
- Added rust version to node info
- Added ability to print all accounts short info
- Make keyid tool usable without extra features
- Added common submodule
- Supported pinned states in TestEngine
- Support hops check for old-fashioned broadcasts
- Supported ton_block library without fast-finality feature
- Support advanced node shutdown
- Fix build for keyid utility
- Remove dependency on ever-crypto crate
- Support different formats of validator stat
- Support DHT policy on ADNL resolver
- Fix console output for getstats
- Supported changes in node
- fixed console output for get_stats command
- Supported ever-types version 2.0
- Fix for cell loading with checking
- Switched to Rust 2021 edition