Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 100 additions & 2 deletions docs/pages/cn/reference/network-upgrades.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,107 @@
---
source_path: reference/network-upgrades.mdx
source_sha: 97133f2b4849ff7f8a563ebe249912957a489e93
source_sha: 61ebe51988bd8aa1a4e15f0325410428a423a8b0
title: "网络升级"
description: "Stable 网络协议版本的发布说明和升级历史。"
description: "Stable 网络协议版本的发布说明:每个版本中更改了哪些内容以及谁需要采取行动。"
diataxis: "reference"
---

# 网络升级

以下每个条目都描述了 StableChain 版本中更改了哪些内容、其重要性以及您是否需要执行任何操作。版本按最新顺序排列。有关二进制文件、提交哈希和升级区块高度,请参阅[主网版本历史](/cn/reference/mainnet-version-history)和[测试网版本历史](/cn/reference/testnet-version-history)。

## 如何阅读这些说明

本文档中会出现一些术语。以下是它们的含义:

- **状态破坏性升级**:每个节点都必须在相同的区块高度运行新的二进制文件,通过治理提案进行协调。这些版本在版本历史表中包含一个升级高度。如果您运行验证器,则必须按计划升级,否则您的节点将停止跟随链。
- **向后兼容升级**:新二进制文件与旧二进制文件兼容,因此没有协调的切换。这些版本没有升级高度。您可以随时通过替换二进制文件进行升级。
- **Gas 费用豁免**:StableChain 的一项功能,允许发起人支付交易费用,这样发送方无需持有 Gas 代币即可进行交易。
- **系统交易**:协议本身发出的特殊交易,而非普通用户发出,用于运行内部操作。
- **预编译**:内置于固定地址的合约,运行原生代码而非 EVM 字节码,用于需要快速执行的常见操作。

要检查您的节点运行的是哪个版本:

```bash
stabled version
```

```text
v1.3.1
```

## v1.4.0 (即将推出) :badge[测试网]{warning}

一个性能和可预测性版本,目前作为发布候选版本在测试网上线,尚未在主网上线。它将四项更改分为两个主题:加快区块处理速度,并使优先级流量的交易包含更具可预测性。

**即将推出:**

- **乐观并行执行 (OPE)**:并行执行区块中的交易,而不是逐个执行,然后协调结果。这基于 Block-STM。
- **选择性 RecheckTx**:在新区块之后,仅重新验证实际受其影响的待处理交易,而不是整个内存池(等待包含的交易池)。
- **MemIAVL**:一个内存映射存储层,取代了以前基于 LevelDB 的存储,减少了区块生命周期中的主要瓶颈。
- **2D nonce 和保证的区块空间**:并行 nonce 通道允许一个账户在多个独立通道上发送交易,保证的区块空间为优先级工作负载保留区块容量,而不是将包含留给偶然。

:::note
v1.4.0 仍在审计和测试中。在主网升级之前,范围和时间可能会发生变化。请跟踪 [测试网版本历史](/cn/reference/testnet-version-history) 以获取最新的发布候选版本。
:::

## v1.3.1 :badge[当前]{success}

一个向后兼容的补丁,也是当前的主网版本。它没有协调的升级高度,因此节点运营商可以随时通过替换二进制文件来采用它。

## v1.3.0

一个注重安全、破坏性状态的升级,也使 Gas 费用豁免功能更加灵活。Gas 费用豁免的更改允许新的合作伙伴,如钱包和交易所,稍后通过治理提案进行入驻,而不是每次都需要另一次破坏性状态升级。

**谁需要采取行动**:所有节点运营商都在预定的高度升级。有关确切高度,请参阅[主网版本历史](/cn/reference/mainnet-version-history)。

**安全改进:**

- 非公共 JSON-RPC 命名空间不再注册,并且仅当 `AllowInsecureUnlock=true` 时才启用签名 API。
- Gas 费用豁免输入已强化:地址必须使用 EIP-55 规范格式,查询输入受长度和格式限制,并且 wrapper 类型、chain-id 和 EIP-7702 内部交易验证得到加强。
- 系统交易现在针对 `to` 地址和方法选择器进行验证,而不仅仅是 `from` 地址。这堵塞了可能触发免手续费执行的路径。
- Prague 预编译地址范围已添加到阻塞地址列表,未知预编译方法现在需要查询 Gas。

**错误修复和稳定性:**

- 纠正了失败的有状态预编译调用的 Gas 核算。
- 解决了 ERC-20 内部调用失败后出现的 refund-disable 状态泄漏。
- 修复了预编译热集合跟踪和 `COINBASE` 操作码行为。
- 将 EIP-7702 授权回滚与规范对齐。
- 修复了报告 `from=0x0` 的系统交易响应、`feeHistory` 错误日志记录以及历史完整交易响应中的 chain-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 及更早的版本,包括创世版本,请参阅用于二进制文件、提交哈希和升级高度的版本历史表:

- [主网版本历史](/cn/reference/mainnet-version-history):每个主网版本及其二进制文件和升级高度。
- [测试网版本历史](/cn/reference/testnet-version-history):每个测试网版本,包括发布候选版本。

## 接下来去哪里

- [**升级节点**](/cn/how-to/upgrade-node):按照分步过程将您的节点升级到新版本。
- [**主网版本历史**](/cn/reference/mainnet-version-history):查找每个主网版本的提交哈希、二进制文件和升级高度。
- [**主网信息**](/cn/reference/mainnet-information):获取链 ID、RPC 端点和当前网络参数。
99 changes: 98 additions & 1 deletion docs/pages/en/reference/network-upgrades.mdx
Original file line number Diff line number Diff line change
@@ -1,8 +1,105 @@
---
title: "Network upgrades"
description: "Release notes and upgrade history for Stable network protocol versions."
description: "Release notes for Stable network protocol versions: what changed in each release and who needs to act."
diataxis: "reference"
---

# Network upgrades

Each entry below describes what changed in a StableChain release, why it matters, and whether you need to do anything. Releases are listed newest first. For binaries, commit hashes, and upgrade block heights, see the [Mainnet version history](/en/reference/mainnet-version-history) and [Testnet version history](/en/reference/testnet-version-history).

## How to read these notes

A few terms appear throughout. Here is what they mean:

- **State-breaking upgrade**: every node must run the new binary at the same block height, coordinated through a governance proposal. These releases have an upgrade height in the version history table. If you run a validator, you have to upgrade on schedule or your node stops following the chain.
- **Backward-compatible upgrade**: the new binary works with the old one, so there is no coordinated cutover. These releases have no upgrade height. You can upgrade whenever it suits you by replacing the binary.
- **Gas waiver**: a StableChain feature that lets a sponsor cover a transaction's fees, so the sender can transact without holding the gas token.
- **System transaction**: a special transaction the protocol itself issues, rather than a regular user, to run internal operations.
- **Precompile**: a built-in contract at a fixed address that runs native code instead of EVM bytecode, used for common operations that need to be fast.

To check which version your node runs:

```bash
stabled version
```

```text
v1.3.1
```

## v1.4.0 (upcoming) :badge[Testnet]{warning}

A performance and predictability release, currently live on Testnet as a release candidate and not yet on Mainnet. It groups four changes under two themes: making blocks process faster, and making transaction inclusion more predictable for priority traffic.

**What's coming:**

- **Optimistic parallel execution (OPE)**: executes the transactions in a block in parallel instead of one at a time, then reconciles the results. This is based on Block-STM.
- **Selective RecheckTx**: after a new block, only re-validates the pending transactions actually affected by it, rather than the entire mempool (the pool of transactions waiting to be included).
- **MemIAVL**: a memory-mapped storage layer that replaces the previous LevelDB-based store, reducing a major bottleneck in the block lifecycle.
- **2D nonce and guaranteed blockspace**: parallel nonce channels let one account send transactions on multiple independent lanes, and guaranteed blockspace reserves block capacity for priority workloads instead of leaving inclusion to chance.

:::note
v1.4.0 is still in audit and testing. Scope and timing may change before the Mainnet upgrade. Track the [Testnet version history](/en/reference/testnet-version-history) for the latest release candidate.
:::

## v1.3.1 :badge[Current]{success}

A backward-compatible patch and the current Mainnet version. It ships with no coordinated upgrade height, so node operators can adopt it by replacing the binary at any time.

## v1.3.0

A security-focused, state-breaking upgrade that also made the gas waiver feature more flexible. The gas waiver change lets new partners such as wallets and exchanges be onboarded through a governance proposal later, instead of requiring another state-breaking upgrade each time.

**Who needs to act:** all node operators upgrade at the scheduled height. See the [Mainnet version history](/en/reference/mainnet-version-history) for the exact height.

**Security improvements:**

- Non-public JSON-RPC namespaces are no longer registered, and signing APIs are enabled only when `AllowInsecureUnlock=true`.
- Gas waiver inputs are hardened: addresses must use the EIP-55 canonical format, query inputs are length- and format-restricted, and wrapper type, chain-id, and EIP-7702 inner-transaction validation are strengthened.
- System transactions are now validated against the `to` address and method selector, not just the `from` address. This closes a path that could trigger fee-free execution.
- The Prague precompile address range is added to the blocked-address list, and unknown precompile methods now require query gas.

**Bug fixes and stability:**

- Corrected gas accounting for failed stateful precompile calls.
- Resolved a refund-disable state leak after an ERC-20 internal call failure.
- Fixed precompile warm-set tracking and `COINBASE` opcode behavior.
- Aligned EIP-7702 authorization rollback with the spec.
- Fixed system transaction responses that reported `from=0x0`, `feeHistory` error logging, and chain-id consistency in historical full-transaction responses.

## v1.2.2

A backward-compatible, optional upgrade that aligns StableChain with the official upstream consensus release and cleans up two query behaviors.

**Who needs to act:** no one is required to. This upgrade needs no governance proposal. Node operators can adopt it by replacing the binary whenever convenient.

**Changes:**

- Upgraded CometBFT to the official `v0.38.21`. This follows the security patch shipped earlier in v1.1.4 and lets external partners verify the exact consensus version the network runs.
- Removed a duplicate log index in gas waiver transaction queries.
- Added safeguards to RPC responses for system-transaction queries.

## v1.2.1

A backward-compatible hotfix that remediated two issues which, if exploited, could halt the chain.

**Who needs to act:** validators are required to upgrade. For other node operators, including RPC providers, the upgrade is optional. It needs no governance proposal.

**Fixes:**

- Closed a system-transaction spoofing path where a user could set `MsgEthereumTx.From == 0x1` to bypass authentication and call a system-only precompile, then use the spoofed transaction to repeatedly force `ProcessProposal` to reject blocks and stall consensus.
- Fixed a mempool-poisoning chain-halt where `ExtensionOptionsWaiver` transactions could pass `CheckTx` but cause `ProcessProposal` to reject the entire block.

## Earlier releases

Detailed release notes start at v1.2.1. For v1.2.0 and earlier, including the genesis release, see the version history tables for binaries, commit hashes, and upgrade heights:

- [Mainnet version history](/en/reference/mainnet-version-history): every Mainnet version with its binary and upgrade height.
- [Testnet version history](/en/reference/testnet-version-history): every Testnet version, including release candidates.

## Where to go next

- [**Upgrade a node**](/en/how-to/upgrade-node): Follow the step-by-step procedure to move your node to a new version.
- [**Mainnet version history**](/en/reference/mainnet-version-history): Look up commit hashes, binaries, and upgrade heights for every Mainnet release.
- [**Mainnet information**](/en/reference/mainnet-information): Get the chain ID, RPC endpoints, and current network parameters.
Loading
Loading