无限分片范式
理解TON区块链中的拆分合并
TON(Telegram Open Network)区块链引入了一些创新概念来提高区块链的可扩展性和效率。其中一个概念是拆分合并功能,这是其区块链架构的一个组成部分。本短文探讨了TON区块链中拆分合并的关键方面,重点讨论其在无限分片范式(ISP,Infinity Sharding Paradigm)中的作用。
无限分片范式(ISP)及其应用
ISP是TON区块链设计的基础,将每个账户视为其独立的“账户链”的一部分。这些账户链然后被聚合到分片链块中以提高效率。一个分片链的状态包括其所有账户链的状态。因此,一个分片链区块本质上是一系列分配给它的虚拟账户区块的集合。
- ShardState:近似表示为 Hashmap(n, AccountState),其中n是account_id的位长度。
- ShardBlock:近似表示为 Hashmap(n, AccountBlock)。
每个分片链,或更准确地说,每个分片链区块,由workchain_id
和账户id的二进制前缀s
的组合来标识。
分片示例
在提供的图形方案中:
- 黑线代表主链。
- 工作链的分片按时间划分,用黑色虚线表示。
- 区块101、102、103和80与序号为29的主链块相关。这里,101、102和103在一个分片中,而80在另一个分片中。
- 如果发生拆分或合并事件,受影响的分片会暂停,直到下一个主链块。
总之,TON区块链中的拆分合并是一个复杂但高效的机制,增强了区块链网络的可扩展性和交互性。它体现了TON解决常见区块链挑战的方法,强调效率和全局一致性。
分片细节
分片链的拆分和非拆分部分
一个分片链块和状态分为两部分:
- 拆分部分:符合ISP形式,包含特定于账户的数据。
- 非拆分部分:涉及区块与其他区块和外部世界的交互相关的数据。
与其他块的交互
非拆分部分对于确保全局一致性至关重要,简化为内部和外部的局部一致性条件。它们对以下方面非常重要:
- 分片链之间的消息转发。
- 涉及多个分片链的交易。
- 交付保证和验证,关于区块的初始状态与其前一个区块的一致性。
入站和出站消息
分片链区块的非拆分部分的关键组成部分包括:
- InMsgDescr:导入到区块中的所有消息的描述。
- OutMsgDescr:区块导出或生成的所有消息的描述。
区块头和验证者签名
区块头,另一个非拆分组件,包含工作链id、账户id的二进制前缀和各种哈希(例如,前一个的哈希)等重要信息。验证者签名被附加到未签名的区块上,形成签名区块。
出站消息队列
分片链状态中的OutMsgQueue是一个关键的非拆分部分。它保存OutMsgDescr中的未处理消息,直到它们被处理或发送到目的地。
分片的拆分和合并机制
在动态分片的背景下,分片配置可能因拆分和合并事件而变化。这些事件与主链区块同步。例如,如果发生拆分或合并,受影响的分片会等待下一个主链区块之后再继续。