跳到主要内容

分片

warning

页面正在开发中

分片是TON区块链中的一种机制,它允许处理大量交易。TON中分片的主要思想是,当账户A向账户B发送消息,同时账户C向账户D发送消息时,这两个操作都可以异步进行。

默认情况下,在基本链(workchain=0)中只有一个分片,其分片号为 0x8000000000000000(或二进制表示为 1000000000000000000000000000000000000000000000000000000000000000)。主链(workchain=-1)始终只有一个分片。

拆分

每个分片负责一些具有某些共同二进制前缀的账户子集。这个前缀出现在分片ID中,由一个64位整数表示,其结构为:<二进制前缀>100000...。例如,ID为 1011100000... 的分片包含所有以前缀 1011 开头的账户。

当某个分片中的交易数量增长时,它会分裂成两个分片。新分片获得以下ID:<父前缀>01000...<父前缀>11000...,分别负责以 <父前缀>0<父前缀>1 开头的账户。分片中的区块序列号从父区块的最后一个序列号加1开始连续。拆分后,分片独立进行,可能会有不同的序列号。

主链区块在其头部包含分片信息。分片区块出现在主链头部后,可以认为是完成的(不能回滚)。

示例:

合并

当分片负载下降时,它们可以按如下方式合并回去:

  • 如果两个分片有共同的父分片,因此,它们的分片ID分别为 <父前缀>010...<父前缀110...,则可以合并。合并后的分片将具有分片ID <父前缀>10...(例如 10010... + 10110... = 1010...)。合并分片的第一个区块将具有 seqno=max(seqno1, seqno2) + 1

示例: