diff --git a/content/api/v2/tonlib-types.mdx b/content/api/v2/tonlib-types.mdx index c5570a724..3f37031d6 100644 --- a/content/api/v2/tonlib-types.mdx +++ b/content/api/v2/tonlib-types.mdx @@ -120,6 +120,7 @@ blocks.header id:ton.blockIdExt global_id:int32 version:int32 flags:# after_merg before_split:Bool want_merge:Bool want_split:Bool validator_list_hash_short:int32 catchain_seqno:int32 min_ref_mc_seqno:int32 is_key_block:Bool prev_key_block_seqno:int32 start_lt:int64 end_lt:int64 gen_utime:int53 vert_seqno:# prev_blocks:vector = blocks.Header; +blocks.blockData id:ton.blockIdExt data:bytes = blocks.BlockData; blocks.transactions id:ton.blockIdExt req_count:int32 incomplete:Bool transactions:vector = blocks.Transactions; blocks.transactionsExt id:ton.blockIdExt req_count:int32 incomplete:Bool @@ -136,6 +137,7 @@ blocks.outMsgQueueSizes shards:(vector blocks.outMsgQueueSize) | `blocks.masterchainInfo` | `MasterchainInfo` | Latest and genesis block references. | | `blocks.shards` | `Shards` | Active shard block identifiers. | | `blocks.header` | `BlockHeader` | Block metadata, merge or split flags, timing. | +| `blocks.blockData` | `BlockData` | Block identifier and base64-encoded BoC. | | `blocks.transactions` | `BlockTransactions` | Short transaction IDs within a block. | | `blocks.transactionsExt` | `BlockTransactionsExt` | Full transactions within a block. | | `blocks.shortTxId` | `ShortTxId` | Compact reference: account, lt, hash. | diff --git a/content/foundations/config.mdx b/content/foundations/config.mdx index 7b543429f..895b4dc74 100644 --- a/content/foundations/config.mdx +++ b/content/foundations/config.mdx @@ -13,7 +13,7 @@ TON features a complex configuration comprising many technical parameters, some The explorer shows the active [mainnet configuration](https://actonscan.com/config?network=mainnet) and [testnet configuration](https://actonscan.com/config?network=testnet). Filter by signed parameter index to inspect decoded fields and the raw cell hex bytes. -Configuration values are [TL-B](/foundations/tlb/overview)-typed cells serialized into [Bags of Cells (BoC)](/foundations/serialization/boc). Non-negative parameters and their serialization are defined in [`block.tlb`](https://github.com/ton-blockchain/ton/blob/v2026.08/crypto/block/block.tlb). +Configuration values are [TL-B](/foundations/tlb/overview)-typed cells serialized into [Bags of Cells (BoC)](/foundations/serialization/boc). Non-negative parameters and their serialization are defined in [`block.tlb`](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/block.tlb). ### Overview @@ -39,7 +39,7 @@ It is important to note that all configuration parameters are readily accessible The values of configuration parameters are not arbitrary. Specifically, if the configuration parameter index `i` is non-negative, then its value must correspond to a valid value of the TL-B type `ConfigParam i`. Validators enforce this restriction and do not accept changes to configuration parameters with non-negative indices unless the values are valid for the corresponding TL-B type. -The structure of these parameters is defined in [`crypto/block/block.tlb`](https://github.com/ton-blockchain/ton/blob/v2026.08/crypto/block/block.tlb#L623-L865), where `ConfigParam i` is specified for different values of `i`. For example: +The structure of these parameters is defined in [`crypto/block/block.tlb`](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/block.tlb#L627-L866), where `ConfigParam i` is specified for different values of `i`. For example: ```tlb _ config_addr:bits256 = ConfigParam 0; @@ -52,7 +52,7 @@ _ GlobalVersion = ConfigParam 8; // all zero if absent The configuration parameter `#8` includes a `Cell` that has no references and contains exactly 104 data bits. The first eight bits are allocated for `11000100` (`0xc4`), followed by 32 bits that represent the enabled global TVM version. This is followed by a 64-bit integer with flags that correspond to the enabled capabilities. -The [`block.tlb` definitions](https://github.com/ton-blockchain/ton/blob/v2026.08/crypto/block/block.tlb#L623-L865) provide the canonical TL-B schemas for all non-negative parameters. +The [`block.tlb` definitions](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/block.tlb#L627-L866) provide the canonical TL-B schemas for all non-negative parameters. Unlike configuration parameters with non-negative indices, those with negative indices can hold arbitrary values. Validators do not enforce any restrictions on these values. As a result, they can be used to store essential information, such as the Unix time when specific smart contracts are set to begin operating. This information is not critical for block generation but is necessary for some fundamental smart contracts. @@ -704,9 +704,11 @@ These parameters store validator sets from the previous (`32`), current (`34`), ## Param 33, 35, and 37: temporary validator lists \[#33-and-35-and-37] -These parameters are the temporary counterparts of parameters [32, 34, and 36](#32-and-34-and-36). They use the same validator sets schema for the previous (`33`), current (`35`), and next (`37`) election rounds. + + Removed in [TON v2026.10](https://github.com/ton-blockchain/ton/releases/tag/v2026.10). + -[Parameter #33 on mainnet](https://actonscan.com/config?network=mainnet#config-parameter-33) | [Parameter #35 on mainnet](https://actonscan.com/config?network=mainnet#config-parameter-35) | [Parameter #37 on mainnet](https://actonscan.com/config?network=mainnet#config-parameter-37) +These parameters were the temporary counterparts of parameters [32, 34, and 36](#32-and-34-and-36). They used the same validator sets schema for the previous (`33`), current (`35`), and next (`37`) election rounds. ## Param 39: temporary validator keys \[#39] @@ -774,8 +776,20 @@ This parameter imposes [various limits](/foundations/limits) on account state, m - `max_total_msg_bits` and `max_total_msg_cells`: Maximum aggregate size of messages created during 1 transaction. +- `out_msg_queue_size_hard_limit`: Maximum number of messages in a shard's outbound queue. Excess messages enter the [dispatch queue](/foundations/messages/overview#message-queues). + + + When the outbound queue exceeds half the `out_msg_queue_size_hard_limit`, a shard cannot set `want_merge`, yet forced merges required by [parameter 12](#12) remain possible. A queue can exceed this limit after a forced shard merge. A queue already above the limit may persist, but cannot grow beyond the previous state's queue size. + + +- `out_msg_queue_size_soft_limit`: Threshold above which the previous state's outbound queue size permits deferring all newly created messages, including the first message of a transaction and messages from governance accounts. + + + Processing the dispatch queue before internal messages is already not required when the queue size exceeds the `defer_out_queue_size_limit`, which defaults to 256. + + - [`SizeLimitsConfig`](https://github.com/ton-blockchain/ton/blob/v2026.08/crypto/block/mc-config.h#L394-L417) sets default values for missing fields. For detailed limits, refer to the [blockchain limits page](/foundations/limits). + [`SizeLimitsConfig`](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/mc-config.h#L394-L421) sets default values for missing fields. For detailed limits, refer to the [blockchain limits page](/foundations/limits). [Parameter #43 on mainnet](https://actonscan.com/config?network=mainnet#config-parameter-43) @@ -902,8 +916,8 @@ The following table lists known named extension slots: Source code: -- [`mc-config.h`](https://github.com/ton-blockchain/ton/blob/v2026.08/crypto/block/mc-config.h) -- [`block.tlb`](https://github.com/ton-blockchain/ton/blob/v2026.08/crypto/block/block.tlb) +- [`mc-config.h`](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/mc-config.h) +- [`block.tlb`](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/block.tlb) Original descriptions, which may be limited or outdated with respect to source code: diff --git a/content/foundations/limits.mdx b/content/foundations/limits.mdx index bc34ad4c6..f567711d4 100644 --- a/content/foundations/limits.mdx +++ b/content/foundations/limits.mdx @@ -11,37 +11,45 @@ There are two sources of network parameter definitions: 1. Node source code - Check blockchain parameters [live in the explorers](https://actonscan.com/config). Parameters defined in the code can be found in the [source code repository](https://github.com/ton-blockchain/ton/blob/v2026.08/crypto/block/mc-config.h#L394-L417). + Parameters [defined in the source code](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/mc-config.h#L394-L421) provide default values, which may differ from the actual on-chain values. Check up-to-date blockchain parameters [live in the explorers](https://actonscan.com/config). ## Message and transaction limits -| Name | Description | Value | Units | Type | Defined in | -| -------------------------- | ---------------------------------------------------------- | -------- | ------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------- | -| `max_size` | Maximum external message size in bytes | 65535 | bytes | uint32 | [`mc-config.h`:392](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L392) | -| `max_depth` | Maximum external message depth | 512 | levels | uint16 | [`mc-config.h`:393](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L393) | -| `max_msg_bits` | Maximum message size in bits | 2097152 | bits | uint32 | [`mc-config.h`:395](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L395) | -| `max_msg_cells` | Maximum number of cells a message can occupy | 8192 | cells | uint32 | [`mc-config.h`:396](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L396) | -| `max_vm_data_depth` | Maximum cell depth in messages and `c4` and `c5` registers | 512 | levels | uint16 | [`mc-config.h`:398](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L398) | -| `max_actions` | Maximum number of actions | 256 | count | uint32 | [`transaction.h`](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/transaction.h) | -| `max_library_cells` | Maximum number of library cells | 1000 | cells | uint32 | [`mc-config.h`:397](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L397) | -| `max_acc_state_cells` | Maximum number of cells that an account state can occupy | 65536 | cells | uint32 | [`mc-config.h`:400](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L400) | -| `max_acc_state_bits` | Maximum account state size in bits | 67043328 | bits | uint32 | [`mc-config.h`:401](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L401) | -| `max_acc_public_libraries` | Maximum number of public libraries per account | 256 | count | uint32 | [`mc-config.h`:402](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L402) | +| Name | Description | Value | Units | Type | Defined in | +| ------------------------------- | ---------------------------------------------------------------- | -------- | -------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------- | +| `max_size` | Maximum external message size in bytes | 65535 | bytes | uint32 | [`mc-config.h`:392](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L392) | +| `max_depth` | Maximum external message depth | 512 | levels | uint16 | [`mc-config.h`:393](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L393) | +| `max_msg_bits` | Maximum message size in bits | 2097152 | bits | uint32 | [`mc-config.h`:395](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L395) | +| `max_msg_cells` | Maximum number of cells a message can occupy | 8192 | cells | uint32 | [`mc-config.h`:396](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L396) | +| `max_vm_data_depth` | Maximum cell depth in messages and `c4` and `c5` registers | 512 | levels | uint16 | [`mc-config.h`:398](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L398) | +| `max_actions` | Maximum number of actions | 256 | count | uint32 | [`transaction.h`](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/transaction.h) | +| `max_library_cells` | Maximum number of library cells | 1000 | cells | uint32 | [`mc-config.h`:397](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L397) | +| `max_acc_state_cells` | Maximum number of cells that an account state can occupy | 65536 | cells | uint32 | [`mc-config.h`:400](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L400) | +| `max_acc_state_bits` | Maximum account state size in bits | 67043328 | bits | uint32 | [`mc-config.h`:401](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L401) | +| `max_acc_public_libraries` | Maximum number of public libraries per account | 256 | count | uint32 | [`mc-config.h`:402](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/block/mc-config.h#L402) | +| `max_total_msg_bits` | Maximum aggregate bit size of messages in one transaction | 5242880 | bits | uint32 | [`mc-config.h`:415](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/mc-config.h#L415) | +| `max_total_msg_cells` | Maximum aggregate number of cells of messages in one transaction | 20480 | cells | uint32 | [`mc-config.h`:416](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/mc-config.h#L416) | +| `out_msg_queue_size_hard_limit` | Maximum outbound message queue size | 18000 | messages | uint32 | [`mc-config.h`:419](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/mc-config.h#L419) | +| `out_msg_queue_size_soft_limit` | Queue size above which all messages may be deferred | 12000 | messages | uint32 | [`mc-config.h`:420](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/mc-config.h#L420) | + + + [Config param 43](/foundations/config#43) controls on-chain values of these parameters. + ## Gas and fee parameters -| Name | Description | Value | Units | Type | Defined in | -| ------------------- | ----------------------------------------------------------------------- | -------- | ------------- | ----------- | ------------------------------------------------------------------------------------------------------------------- | -| `free_stack_depth` | Stack depth without gas consumption | 32 | stack entries | enum\_value | [vm.h:120](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/vm/vm.h#L120) | -| `runvm_gas_price` | VM start gas consumption | 40 | gas units | enum\_value | [vm.h:122](https://github.com/ton-blockchain/ton/blob/05bea13375448a401d8e07c6132b7f709f5e3a32/crypto/vm/vm.h#L122) | -| `flat_gas_limit` | Gas below `flat_gas_limit` is provided at the price of `flat_gas_price` | 100 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | -| `flat_gas_price` | Costs of launching the TON Virtual Machine | 40000 | nanograms | uint64 | [param 21](/foundations/config#20-and-21) | -| `gas_price` | Price of gas in the network in nanograms per 65536 gas units | 26214400 | nanograms | uint64 | [param 21](/foundations/config#20-and-21) | -| `special_gas_limit` | Limit on gas for special (system) contract transactions | 1000000 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | -| `gas_limit` | Maximum amount of gas per transaction | 1000000 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | -| `gas_credit` | Gas credit for checking external messages | 10000 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | -| `block_gas_limit` | Maximum gas per block | 10000000 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | +| Name | Description | Value | Units | Type | Defined in | +| ------------------- | ----------------------------------------------------------------------- | -------- | ------------- | ----------- | ------------------------------------------------------------------------------------- | +| `free_stack_depth` | Stack depth without gas consumption | 32 | stack entries | enum\_value | [`vm.h`:122](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/vm/vm.h#L122) | +| `runvm_gas_price` | VM start gas consumption | 40 | gas units | enum\_value | [`vm.h`:124](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/vm/vm.h#L124) | +| `flat_gas_limit` | Gas below `flat_gas_limit` is provided at the price of `flat_gas_price` | 100 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | +| `flat_gas_price` | Costs of launching the TON Virtual Machine | 40000 | nanograms | uint64 | [param 21](/foundations/config#20-and-21) | +| `gas_price` | Price of gas in the network in nanograms per 65536 gas units | 26214400 | nanograms | uint64 | [param 21](/foundations/config#20-and-21) | +| `special_gas_limit` | Limit on gas for special (system) contract transactions | 1000000 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | +| `gas_limit` | Maximum amount of gas per transaction | 1000000 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | +| `gas_credit` | Gas credit for checking external messages | 10000 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | +| `block_gas_limit` | Maximum gas per block | 10000000 | gas units | uint64 | [param 21](/foundations/config#20-and-21) | ## Storage fees and limits diff --git a/content/foundations/messages/overview.mdx b/content/foundations/messages/overview.mdx index ba6d132ed..3a4db42d5 100644 --- a/content/foundations/messages/overview.mdx +++ b/content/foundations/messages/overview.mdx @@ -69,3 +69,42 @@ The `state_update` field is a [Merkle update](/foundations/serialization/merkle- Other fields, such as `in_msg`, `out_msgs`, and `outmsg_cnt`, relate to the [messages](/foundations/messages/overview) processed and emitted during the transaction. A trace may start from a transaction rather than a message, in which case `in_msg` is `Nothing`. However, a trace cannot continue without messages: if it contains `n` transactions it must contain at least `n-1` messages. Consequently, a trace can include at most one non-ordinary transaction, because messages can trigger only an [ordinary transaction](/foundations/messages/ordinary-tx). The `total_fees` field stores the total [fees](/foundations/fees) paid by the transaction. Its type supports [extra currencies](/foundations/extra-currencies), but blockchain fees are charged only in Gram. + +## Message queues + +A shard's outbound queue stores internal messages awaiting delivery. A separate _dispatch queue_ stores deferred outgoing messages until they can be processed. + +The dispatch queue groups messages by sender account. Each account queue indexes messages by their 64-bit `created_lt` and stores a 48-bit message count. Empty account queues are omitted. + + + +Account queues and dictionary augmentation data also carry `total_balance:CurrencyCollection`. This balance sums the deferred messages' `value` and `fwd_fee`, including any [extra currencies](/foundations/extra-currencies). The augmentation stores the minimum `created_lt` and the aggregate balance for its subtree. + +The [`block.tlb` schema](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/block.tlb#L252-L259) includes legacy and balance-carrying constructors, with legacy ones marked by the suffix `_old`: + +```tlb +// Legacy +account_dispatch_queue_old$1 + messages:^(Hashmap 64 EnqueuedMsg) count:uint48 = AccountDispatchQueue; + +// Since v2026.10 +account_dispatch_queue$000 + messages:^(Hashmap 64 EnqueuedMsg) count:uint48 + total_balance:CurrencyCollection = AccountDispatchQueue; + +// Legacy +dispatch_queue_aug_old$0 + min_created_lt:uint63 = DispatchQueueAugData; + +// Since v2026.10 +dispatch_queue_aug$10 + min_created_lt:uint64 + total_balance:CurrencyCollection = DispatchQueueAugData; + +// Queue +_ (HashmapAugE 256 AccountDispatchQueue DispatchQueueAugData) = DispatchQueue; +``` + +In legacy augmentation data, the `$0` tag followed by `uint63` occupies the same 64 bits as the earlier `min_created_lt` with its high bit unset. The [queue](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/block.cpp#L2464-L2514) reads **both** formats and defines their balance calculation. diff --git a/content/foundations/network/rldp.mdx b/content/foundations/network/rldp.mdx index 33eeaa7c2..c5a004186 100644 --- a/content/foundations/network/rldp.mdx +++ b/content/foundations/network/rldp.mdx @@ -3,8 +3,8 @@ title: "Reliable Large Datagram Protocol (RLDP)" sidebarTitle: "RLDP" --- - - With the introduction of the [sub-second upgrade](/subsecond), blockchain nodes now use [QUIC](https://en.wikipedia.org/wiki/QUIC) instead of RLDP for internal node communication. + + RLDP2 was deprecated in favor of [QUIC](/subsecond) in [TON v2026.10](https://github.com/ton-blockchain/ton/blob/v2026.10/Changelog.md#202610-update). The Reliable Large Datagram Protocol (RLDP) runs on top of [ADNL UDP](/foundations/network/adnl-udp) and transfers data that does not fit in one ADNL datagram. It uses [Forward Error Correction (FEC)](https://en.wikipedia.org/wiki/Error_correction_code) to recover from packet loss. Its newer version, RLDP2, also uses acknowledgment packets, loss detection, pacing, and congestion control. diff --git a/content/foundations/precompiled.mdx b/content/foundations/precompiled.mdx index 59ee26183..dd24ef57f 100644 --- a/content/foundations/precompiled.mdx +++ b/content/foundations/precompiled.mdx @@ -41,7 +41,7 @@ The contract code hash is not in `ConfigParam 45`. TVM executes normally with st ### 2. Contract is precompiled -The contract code hash exists in `ConfigParam 45`. The validator checks the contract balance against the configured `gas_usage`. If insufficient, the compute phase fails with `cskip_no_gas`. +The contract code hash exists in `ConfigParam 45`. The [validator compares](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/transaction.cpp#L1938-L1945) the configured `gas_usage` with [`gas_max`](/tvm/gas#gaslimits-structure) for external messages and `gas_limit` for internal messages. If `gas_usage` exceeds that limit, the compute phase is skipped with [`cskip_no_gas`](/foundations/phases#when-the-compute-phase-is-skipped). Otherwise, execution proceeds via one of two paths. @@ -56,7 +56,7 @@ Transaction [result](/foundations/phases#compute-phase): #### Contract has no native C++ implementation -The native C++ implementation is disabled or unavailable in the validator node. TVM executes the contract code normally. +The native C++ implementation is disabled or unavailable in the validator node. TVM executes the contract code. [`GETPRECOMPILEDGAS`](#accessing-precompiled-gas-value) returns the configured gas value during execution. diff --git a/content/foundations/proofs/overview.mdx b/content/foundations/proofs/overview.mdx index 41a80d632..62cc35b7c 100644 --- a/content/foundations/proofs/overview.mdx +++ b/content/foundations/proofs/overview.mdx @@ -243,3 +243,29 @@ _ (HashmapE 32 ^(BinTree ShardDescr)) = ShardHashes; A `BinTree` is a TL-B structure that operates straightforwardly. It stores a single bit to indicate whether the current cell is a leaf. If it is a leaf, it stores the **`ShardDescr`**. Otherwise, the cell holds two references: a left child and a right child. Since a shard identifier is a binary prefix of an address, we can traverse the tree by following the path of bits in the address. + +## Collated proofs + + + +_Collated proofs_ are a new format for proofs in collated data, which accompanies a block candidate and supplies proofs needed for validator checks. + +The [`block.tlb` schema](https://github.com/ton-blockchain/ton/blob/v2026.10/crypto/block/block.tlb#L893-L895) defines three constructors: + +```tlb +collated_data_root_state#4b2f36ec hash:bits256 = CollatedDataRootState; +collated_data_root_storage_dict#796eaeb6 hash:bits256 = CollatedDataRootStorageDict; +collated_data_separator#fa8b2b92 = CollatedDataSeparator; +``` + +There, + +- `CollatedDataRootState` identifies a shard-state proof root by hash, including previous states and neighboring states used for message-queue checks. +- `CollatedDataRootStorageDict` identifies an account storage dictionary proof root by hash. +- `CollatedDataSeparator` ends the metadata roots. The remaining BoC roots contain the partially pruned state and storage dictionary trees. + + + Legacy Merkle proof roots and the `account_storage_dict_proof#37c1e3fc` wrapper [remain accepted](https://github.com/ton-blockchain/ton/blob/v2026.10/validator/impl/validate-query.cpp#L688-L750). + diff --git a/content/nodes/cpp/mytonctrl/collator.mdx b/content/nodes/cpp/mytonctrl/collator.mdx index f1d9230c9..9cb0b758c 100644 --- a/content/nodes/cpp/mytonctrl/collator.mdx +++ b/content/nodes/cpp/mytonctrl/collator.mdx @@ -151,6 +151,15 @@ print_collation_whitelist ## Collator configuration JSON commands +The [collator options JSON](https://github.com/ton-blockchain/ton/blob/v2026.10/tl/generate/scheme/ton_api.tl#L634-L646) supports optional + +- `block_limits_bytes`, +- `block_limits_gas`, +- `block_limits_lt_delta`, +- and `block_limits_collated_data` objects. + +Each contains `underload`, `soft_limit`, and `hard_limit`, with `0 <= underload <= soft_limit <= hard_limit`. These override local [collation thresholds](/foundations/config#22-and-23). + ### `set_collation_config` **Purpose:** Store the preferred collator options JSON location and apply it to the validator console.