网络升级
下面的每个条目都描述了 StableChain 版本中更改的内容、重要性以及您是否需要采取任何操作。发布按最新排序。有关二进制文件、提交哈希和升级块高度,请参阅主网版本历史记录和测试网版本历史记录。
如何阅读这些说明
以下是一些常用术语的含义:
- 状态破坏性升级:所有节点必须在相同的块高度运行新的二进制文件,通过治理提案进行协调。这些版本在版本历史记录表中有一个升级高度。如果您运行验证器,则必须按计划升级,否则您的节点将停止跟随链。
- 向后兼容升级:新的二进制文件与旧的二进制文件兼容,因此没有协调的切换。这些版本没有升级高度。您可以在方便时通过替换二进制文件进行升级。
- Gas 豁免:StableChain 的一项功能,允许赞助者支付交易费用,这样发送者就可以在不持有 gas 代币的情况下进行交易。
- 系统交易:协议本身(而不是普通用户)为运行内部操作而发起的特殊交易。
- 预编译:一个内置的固定地址合约,运行原生代码而不是 EVM 字节码,用于需要快速执行的常见操作。
要检查您的节点运行的是哪个版本:
stabled versionv1.3.1v1.4.0 (即将发布) 测试网
一个性能和可预测性版本,目前作为发布候选版本在测试网上线,尚未在主网上线。它将四个更改分为两个主题:加快块处理速度,以及使优先流量的交易包含更具可预测性。
| 举措 | 块阶段 | 更改内容 | 预期结果 |
|---|---|---|---|
| 乐观并行执行 (OPE) | 执行 | Block-STM 替代顺序交易执行。 | 多核执行,目标是大约 10,000 TPS。 |
| 选择性重新检查交易 | 提交后内存池重新检查 | 节点仅重新检查由已提交块更改的账户的交易。 | 在最佳测量情况下,持续吞吐量可提高两倍,节点 CPU 使用率降低 31-34%。 |
| MemIAVL | 状态持久性 | 内存映射快照和预写日志 (WAL) 替代基于 LevelDB 的存储。 | 写入放大从 10-50 倍降至约一次写入。 |
| 2D nonce 和保证块空间 | 提交和块提案 | 独立的 nonce 通道与保留的每通道 gas 容量相结合。 | 符合条件的 VIP 交易的确定性下一块包含。 |
这些更改解决了单个块生命周期的不同阶段:
- 提交:2D nonce 允许一个账户通过独立的 nonce 通道提交交易。一个通道上的卡住交易不会阻塞其他通道。
- 提案:保证块空间将块划分为 VIP、交易类型和普通通道。每个通道都有一个在提案和验证期间强制执行的保留 gas 预算。
- 执行:OPE 通过 Block-STM 并发运行交易,然后根据固定的块内顺序对其进行验证。每个节点仍然产生相同的状态。
- 提交:MemIAVL 将更改附加到 WAL 中,与一个内存映射快照对应。这避免了 LevelDB 压缩及其重复的磁盘写入。
- 提交后重新检查:选择性重新检查交易使用块的状态更改增量仅重新检查受影响的发送方,而不是扫描整个内存池。
吞吐量变化
OPE 将交易执行从一个 CPU 核心移到多个核心。交易乐观执行,冲突触发重新执行,固定的交易顺序保留确定性结果。
选择性重新检查交易在每次提交后删除工作。在包含来自唯一发送者的 10,000 个待处理交易的最佳测试中,吞吐量从 700 TPS 增加到 1,400 TPS。对于更典型的工作负载,预计改进为 1.5–1.7 倍。CometBFT 检测应用程序是否支持选择性重新检查,如果不支持,则回退到完全重新检查。
MemIAVL 从状态存储路径中移除 LevelDB。写入变为包含原始更改集的顺序 WAL 条目。读取变为对操作系统页面缓存的指针查找。一个单独的 VersionDB(由 RocksDB 支持)服务于早于最早保留快照的历史状态。
可预测的包含
2D nonce 为每个账户提供了多个独立的 nonce 通道。 NonceKey 选择通道。 NonceKey = 0 保留正常的 EVM 兼容序列,而协议保留 uint64 范围的上半部分供自己使用。 MaxUint64 标记一个无序交易,它使用 TimeoutTimestamp 进行重放保护。
该版本添加了 CustomTx 交易类型 0x3F,以及现有的 EVM 交易格式。协议保留的 NonceKey 范围也标识 VIP 通道交易。
保证块空间将每个块划分为 VIP、交易类型和具有单独 gas 配额的普通通道。治理通过一个 MsgUpdateParams 提案控制通道参数,接受的更新在下一个块中生效。如果没有通道配置,链将作为一个普通通道运行。
当验证器行为诚实且网络保持同步时,符合条件的 VIP 交易将获得确定性的下一块包含。阅读保证块空间以了解通道和 nonce 模型。
节点部署
MemIAVL 改变了状态存储,因此节点操作员必须迁移其现有数据。推荐的方法是本地快照导出和恢复。基准测试显示每个验证器平均停机时间为 19.4 秒。并行恢复变体将平均停机时间缩短到大约 2.6 秒。
验证器可以按轮循顺序迁移,以保留至少三分之二的投票权。请遵循网络特定的升级说明,而不是将基准测试过程视为固定的运行手册。
延迟工作
- Gas 豁免交易类型通道:零 gas 通道需要受信任的内存池准入控制。如果没有它,攻击者可能会提交无限的免费交易。
- 发送者匹配优化:后续版本可能会让全节点发送预先计算的发送者地址,从而避免在块提案期间重复签名恢复。
v1.3.1 当前
一个向后兼容的补丁和当前的主网版本。它没有协调的升级高度,因此节点操作员可以随时通过替换二进制文件来采用它。
v1.3.0
一个以安全为重点的状态破坏性升级,也使 gas 豁免功能更加灵活。gas 豁免的更改允许通过治理提案在以后引入新的合作伙伴(例如钱包和交易所),而无需每次都进行另一次状态破坏性升级。
谁需要采取行动:所有节点操作员都在预定高度升级。请参阅主网版本历史记录以了解确切高度。
安全改进:
- 不再注册非公共 JSON-RPC 命名空间,并且只有当
AllowInsecureUnlock=true时才启用签名 API。 - Gas 豁免输入得到加强:地址必须使用 EIP-55 规范格式,查询输入受到长度和格式限制,并且加强了包装类型、链 ID 和 EIP-7702 内部交易验证。
- 系统交易现在针对
to地址和方法选择器进行验证,而不仅仅是from地址。这关闭了可能触发免手续费执行的路径。 - Prague 预编译地址范围已添加到阻塞地址列表,未知预编译方法现在需要查询 gas。
错误修复和稳定性:
- 更正了失败的有状态预编译调用的 gas 核算。
- 解决了 ERC-20 内部调用失败后的退款禁用状态泄漏。
- 修复了预编译热集跟踪和
COINBASE操作码行为。 - 使 EIP-7702 授权回滚与规范保持一致。
- 修复了报告
from=0x0的系统交易响应、feeHistory错误日志记录以及历史完整交易响应中的链 ID 一致性。
v1.2.2
一个向后兼容的可选升级,使 StableChain 与官方上游共识版本保持一致,并清理了两种查询行为。
谁需要采取行动:没有人需要。此升级无需治理提案。节点操作员可以在方便时通过替换二进制文件来采用它。
更改:
- 将 CometBFT 升级到官方
v0.38.21。这遵循了 v1.1.4 中早些时候发布的安全性补丁,并允许外部合作伙伴验证网络运行的确切共识版本。 - 移除了 gas 豁免交易查询中的重复日志索引。
- 为系统交易查询的 RPC 响应添加了安全措施。
v1.2.1
一个向后兼容的热修复,弥补了两个如果被利用可能会导致链停机的漏洞。
谁需要采取行动:验证器必须升级。对于其他节点操作员,包括 RPC 提供者,升级是可选的。它不需要治理提案。
修复:
- 修复了系统交易欺骗路径,用户可以将
MsgEthereumTx.From == 0x1设置为绕过身份验证并调用 только系统预编译,然后使用欺骗交易反复强制ProcessProposal拒绝块并停止共识。 - 修复了内存池中毒链停机,其中
ExtensionOptionsWaiver交易可以绕过CheckTx但导致ProcessProposal拒绝整个块。
更早的版本
详细的发布说明从 v1.2.1 开始。对于 v1.2.0 和更早的版本,包括创世版本,请参阅版本历史记录表中的二进制文件、提交哈希和升级高度:

