TON 的主链与基础链:工作链结构和动态分片各管什么 图 1
TON 的主链与基础链:工作链结构和动态分片各管什么 · 图 1

一张网络,不是一本账

多数公链的世界观是”全网一本账”:所有账户、所有交易都写进同一条链的同一个状态里。TON 的官方文档开篇就拆掉了这个前提:TON Blockchain 是一组被称为 workchain(工作链)的区块链,每条工作链可以有各自的账户地址格式、交易格式,甚至各自不同的智能合约虚拟机。理解 TON,先要接受”一个网络”和”一条链”是两件事。

记账的主链与日常用的基础链

示意图:无字矩形沿带反复对半分列的网格,分片动态拆合的抽象表达(图片由本地 SDXL 生成,非产品界面或精确数据图)

按官方文档,TON 当前有两条工作链:基础链(workchain_id = 0)承载绝大多数账户与用户合约,日常转账和合约调用都发生在这里;主链(workchain_id = -1)负责 TON 的内部簿记,存放全局配置与系统合约。两条链规则几乎相同,唯一的显著差异是主链用起来更贵——官方给出的理由就是限制外部流量去干扰网络内部机制。这个分工解释了很多链上现象为什么在 TON 里有不同答案:治理参数、验证者名单这类”系统的事”被隔离进了一条高门槛的链。

对普通使用者最直接的接口是地址。TON 账户的内部地址是一个二元组:工作链 ID 加一个 256 位数字。原始格式里以 0: 开头的地址属于基础链;同一串 256 位尾号配上不同的工作链 ID,就是完全不同的两个账户。查账、转账前把”网络选对”这件事在 TON 里体现为”工作链选对”,混链错转的风险模型与其他多链生态同源。

分片对折再对折

官方把 TON 的扩展方式称为无限分片范式(Infinite Sharding Paradigm):当每个区块的事务量越过阈值,验证者就把一个分片链对折成两个;负载回落到阈值以下,再合并回去。文档为理解这个结构引入了一层虚拟概念:每个账户都是唯一公民,构成一条只描述自己的 accountchain;给不活跃的账户定期出空块太贵,于是按地址前缀把账户分组进真正的分片链(shardchain),一个区块就是组内众多账户更新的集合。分片的身份是(工作链 ID,分片前缀)这对组合:前缀是一段最长 60 位的比特串,地址前缀匹配决定账户归属;分裂时 p 变成 p0 与 p1,合并则反向进行。如此工作链内的分片数量始终是二的幂,可在 1 到 2 的 60 次方之间动态浮动。官方对用户视角的结论很坦率:内部每个分片就是一条独立区块链,除了跨片消息的延迟变长,面向用户的代码几乎感受不到分片。

消息怎么绕过分片墙

各分片异步独立计算,代价是片间通信可能拥塞:接收分片要到所有可能的发送分片里翻找未处理消息,分片一多就查不过来,还可能被四面八方的消息挤满自己的区块。官方给出的解法是超立方体路由:把一个工作链的全部分片视作 15 维立方体的顶点,任何两片之间最多 15 跳,每片的邻居数量被约束在 240 个以内(每维至多 16 个、共 15 维),跨工作链再加一跳。文档同时列出防重复投递、按逻辑时间排序等交付保障,并特别提醒:多合约交互的代码可能不在同一区块执行,两条并发消息流可能交错,这种异步消息处理为可扩展性服务,但也可能制造竞态条件。

普通用户看什么、防什么

第一看地址前缀:工作链 ID 与账户 ID 共同唯一确定一个账户,任何查询与转账都从这对二元组出发。第二看延迟预期:分片间通信有跳数成本,对交易原子性要求高的复杂协议,体验取决于消息路由而非单片吞吐。第三看误读:主链不是”大额账户专用链”,它更像全网配置与系统合约的登记处,普通账户没有理由迁上去。官方文档还注明未来可能出现规则完全不同的新工作链——那意味着”TON 上的应用都长什么样”这类概括要留出余量。以上机制梳理以官方文档口径为准,分片阈值与路由参数可能随升级调整,不构成投资建议。