* Add --fast-state-serializer and tools for jemalloc
* Disable fast state serializer by default unless RAM is >= 90GB
* Print jemalloc stats once a minute
* Dump jemalloc profile on request
* Respond to AdnlMessageCreateChannel with Nop
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Set collator options from validator console
* Fix compilation error in manager-disk
* Defer all messages if out msg queue is too big
* Fix checking queue size in collator
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Deferred messages and msg metadata
* Store out msg queue size in state
* Add checks for queue processing
1. Collator must process at least one message from AccountDispatchQueue (unless block is full)
2. The first message from a transaction is not counted, it cannot be deferred (unless AccountDispatchQueue is not empty)
* Return msg metadata from LS in listBlockTransactions[Ext]
* Enable new features by capabilities
* Changes in deferred messages
* Process deferred messages via new_msgs in collator
* Rework setting deferred_lt, bring back check_message_processing_order, check order of deferred_lt in validator
* Use have_unprocessed_account_dispatch_queue_ in collator
* Fix setting transaction lt for deferred messages
* Fix lite-client compilation error
* Changes in process_dispatch_queue, rename deferred_lt -> emitted_lt
* Fix compilation error
* Use uint64 for msg queue size
* Add liteServer.getBlockOutMsgQueueSize
* Fix compilation error
* Fix typos in comments
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Private overlay for external messages
* Improve ext msg overlays
* Manage from validator console
* Bypass out queue size limit for high-priority messages
* Shuffle messages in get_external_messages
* Cleanup mempool when creating validator group
* Improve private overlays for externals
1. Allow using validator adnl ids in addition to fullnode ids
2. Set priority per sender, not per overlay
3. Require the same overlay name for all nodes
4. Enable lz4 in private block overlay
* Fix typo, add debug logs
* Enable lz4 in private block overlay by config
Change proto_version for lz4 in catchain overlays to 4
* Add logs for broadcasts in fullnode
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Utils for writing precompiled contracts
* Precompiled contracts in config, override gas_usage for them
* Add base class for precompiled contracts
* Improve utils for precompiled smc
* Implement GETPRECOMPILEDGAS
* Enable precompiles by flag
* Process null data in PrecompiledSmartContract
* Fix ton_block wasm build
* Fix vm::util::store_(u)long
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Improve handling outbound message queues
* Cleanup queue faster
* Calculate queue sizes in background
* Force or limit split/merge depending on queue size
* Increase validate_ref limit for transaction
* Add all changes of public libraries to block size estimation
* Don't crash on timeout in GC
* Don't import external messages when queue is too big
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Add parameter --celldb-compress-depth to speed up celldb
* Fix collator timeout
* Add block_state_cache
* Adjust state cache ttl
* Don't merge shards when queue is too big
* Decrease lt limit if previous block is too old
---------
Co-authored-by: SpyCheese <mikle98@yandex.ru>
* Fix "sgn" in fift; fix marking infinite loops as noterurn in func
* TON-P1-1: Remove unused catchain queries
* TON-P1-15: Avoid synchronization with self
* TON-P1-3, TON-P1-17: Disallow more than one candidate per src per round (to prevent flood), add checks to process_broadcast
* TON-P1-10: Fix fast/slow attempts
* TON-P1-14: Add named constants
* TON-P1-18, TON-P1-19: Alloc temporary memory in the same way as persistent memory
* TON-P1-20: Add comment to choose_blocks_to_approve
* TON-P1-16: Avoid creating two catchain blocks on need_new_block
* TON-P1-8: Add some validation to validator-engine parameters
* TON-P1-6: Don't allow sending the same block many times
Many requests for the same block are not unusual (however, there's no need to answer them all)
* TON-P1-2: Enable prohibiting dependencies from blamed nodes (2.7.5 in CatChain doc), fix processing blame proofs
* Best practices
bp-6: Fix incorrect warning
bp-7: Remove unused code
bp-8: Bring back PerfWarningTimer logging (only when no callback)
bp-9: Remove unnecessary condition
bp-11: Remove commented-out code
bp-13: Divide code in validator-session-state
Adherence to Specification: Fix typo