TON Blockchain Architecture 数据存储和管理系统 TON:
- 组织数据作为 bag of cells;
- 散布 在账户 (ISP) 层面;
- 协商一致和验证的条件;
- masterchain 协调网络的各个结构和设置.
Bag of Cells#
所有的TON数据由集合 细胞 每个单元格包含:
- 在 1023位 这些数据;
- 在 4个链接 其他单元格 (SHA-256-哈希);
- 两个字节描述器+数据本身.
单元格组织在 树木或 DAG (指导式循环图). 按图表串行 TL-B (Type Language — Binary).
Infinite Sharding Paradigm (ISP)#
每个帐户都是单独的 accountchain虚拟账号链块 它们分为 为了提高效率,
沙德币的状态 查德的所有账户. 沙德链块 这是一个虚拟区块集合,
在TON中,智能合同和账户是相同的.
沙特链块结构#
它分为两个部分:
没有分离的
| 组件 | 内容 |
|---|---|
| InMsgDescr | 收到的消息描述 |
| OutMsgDescr | 输出消息的描述 |
| Block header | 哈希,块的参数 |
| OutMsgQueue | 未交付消息的排队 (在交付到邻近的沙尔德后删除) |
分离 (split)
Hashmap **account_id → account_state**帐户状态:
- 在Grams中的余额;
- 智能合同的代码;
- 合同的常设数据;
- 存储库使用统计;
- 接口的可选正式描述;
- 公共用户信息.
Masterchain#
- 不会分裂或结合. (single chain);
- 一个前者 (除了零块的 initial config);
- 包含 所有活跃的沙尔德的列表 和每个最后一个块;
- 存储 可配置的参数 通过一个特殊的配置合同.
配置参数
- 验证人员的最低缴费;
- 验证组的最大规模;
- 组负责的最大数量块;
- 选举和惩罚验证人员的过程;
- 验证器的当前和下一组;
- 改变参数的过程.
初始值和代码 基本智能合同 在 零区块 masterchain.
协商一致的条件#
只有通过有效的交易才能保证数据的正确性.
| 类型 | 描述 |
|---|---|
| 全球性 | 全网络的变量 (例如消息传输保证) |
| 内部局部 | 在单个区块内 (例如处理进来的消息) |
| 外部本地 | 在街区之间,通常是相邻的曲线. |
区块有效验证器的责任是生成和验证.
逻辑时间 (LT)#
64位非负整数节目由以下事件分配:
- 取决于事件 LT拥有最多的所有依赖;
- 独立活动 具有 LT = 0;
- 出发消息 在交易中继承LT;
- 交易和区块 有 时间间隔在标题中.
LT是为了整理事件. 没有全球时钟.
总体状态和可见性#
- 主链块 通过其最后一个块的哈希记录所有沙尔德的状态;
- 沙德链块 在标题中包含最后一个 masterchain 块的哈希;
- 可见块 列出在此块中的 masterchain + 它们的前身;
- 沙尔德块 导入 从OutMsgQueue可见邻居的消息;不能启用来自隐形块的消息.
智能合同#
创建
适用于基础链和masterchain (其他链可能有自己的机制):
- 之前没有提到的地址的消息 没有 → 创建 未启动的帐户 有资产负债表,但没有代码和数据;
- 构造器消息 包含 initial code + data → 创建智能合约;
- Constructor通常是初始平衡值 (最低值取决于存储费);
- 智能合约可以 我们自己创建 新的智能交易合约.
修改
- 永久数据 在执行代码时变化 TVM;
- 如果代码没有变更 → 数据不变;
- 代码本身 只有当前代码允许,才能改变.
灭绝和结
- 合同 不能被摧毁,直到资产负债 > 最低;
- 在 负余额 帐户 它正在结. code + data 取代为 32 字节的哈希;
- 哈希存储时间 → 持有人可以通过转账和发送代码+数据的消息来恢复帐户.