VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

区块链升级:先检验规则兼容性,再判断参与者是否采用

Three students in school uniforms work through open books at a classroom table, with textbooks and stationery nearby and study notes on the whiteboard behind them.

English version · 区块链学习导航 · 上一篇

区块链学习 · 文章 BC082

三名学生在教室桌旁一起阅读书本,身边放有课本和文具。
学习场景配图;不代表照片中的学生正在学习区块链。

软件发布,不会让所有节点自动执行同一套规则。升级公告,也不能说明某个运营者实际安装了什么。即使观察到了就绪信号,仍然需要区分:信号出现了,还是区块真的按照已激活的新规则接受检查?

理解升级时,应分别回答两个问题。第一,旧规则与新规则各自接受哪些记录?第二,哪些参与者在什么时点实际执行哪套规则?这两个答案能够解释:某些变更可以保留一个方向的兼容性,却仍然让参与者对特定区块产生不同判断。

本课使用刻意简化的验证练习。它不是部署方案,不是完整共识协议,也不建议读者更改真实节点软件。数值字段与激活高度均为虚构。

选择适合你的阅读路线

本篇目录

  • 阅读第1至3节,分清规范、发布、安装与激活。
  • 完成第4至6节,比较收紧规则与放宽规则的变更。
  • 用第7至9节分析信号、可能的分歧以及采用证据。
  • 在依赖“兼容”或“已升级”等标签之前,先完成练习。

返回目录 · 下一节

1. 识别所处层次与具体规则

上一课的治理练习,讨论谁能改变应用的目录上限。本课处理另一项任务:比较节点用于检查候选区块的验证规则。

区块可能带着相同的可见标签,却被不同规则判断。节点的答案取决于它实际执行的规则、激活配置,以及相关历史与状态。

所以,只说“第二版接受这个区块”并不完整。是哪一个第二版实现?哪个网络?什么激活条件?哪一段父区块历史?讨论的是验证通过、被选为当前链头,还是终局性?

本模型会明确给出这些条件。它没有代币余额、交易费、工作量证明目标、验证者投票或执行虚拟机。我们只检查一个整数字段,让读者能逐项核对接受结果,而不必被实现细节遮住重点。

真实升级可能同时改变多项相互作用的规则。小模型教的是如何表述兼容性结论,不能据此认证真实网络升级的兼容性。

返回目录 · 下一节

2. 四种事件不应共用一个标签

规范描述预期规则。软件发布提供实现文件。安装让运营者拥有选定的实现与配置。激活决定新规则从何时开始适用于该实现。

这些事件可以发生在不同时间。运营者可以在新规则激活前先安装软件,也可以在其他参与者激活后继续使用旧软件。

EIP-1将提案文档及其流程,与实现工作和协调联系起来并加以区分。提案的标准状态属于该流程,不能普遍替代对特定节点实际运行情况的观察。EIP-1

本练习假设,观察到的链达到高度80时,新软件包发布。一些运营者安装它。软件包在高度100以下保留旧规则,从高度100开始应用新规则。

算例没有暗中引入软件缺陷、安装失败或网络歧义。凡写明某运营者已正确安装指定软件包,这就是给定条件。没有这类条件时,是否安装仍然需要证据。

返回目录 · 下一节

3. 完整写出旧规则

每个候选区块带有一个整数字段n。旧规则O要求n至少为零、最多为八,两个端点均包含在内。

本练习假设,每个候选区块都满足其他共同检查,并扩展一段对当前比较有效的父历史。因此,各案例中的验证结果由n检查决定。

旧规则接受的值为:

  • 零、一、二、三、四、五、六、七、八。

九超出范围。负数超出范围。4.5虽然在数值上介于零与八之间,却不属于规定的整数定义域。

定义域必须明确。如果一名读者假设整数,另一名读者允许小数,两人检验的就不是同一条规则。

接下来考察两个彼此独立的升级方案。R缩小接受集合,E扩大接受集合。它们分别从O开始,不是一次升级的连续阶段。

这些字母表示给定集合,不代表真实区块链、客户端版本或标准提案。

返回目录 · 下一节

4. 收紧规则:新接受集合更小

激活后,收紧后的R只接受零至五的整数。R接受的所有值,都满足O。

在高度100,比较四个候选值:

  • n等于四:O接受,R接受。
  • n等于七:O接受,R拒绝。
  • n等于十:O拒绝,R拒绝。
  • n等于十三:O拒绝,R拒绝。

方向必须说清楚:在给定字段模型中,通过R意味着通过O;通过O不意味着通过R。七就是反例。

这种集合包含关系,是解释类似软分叉的收紧变更时常用的直观方法。它描述的是给定假设下记录的接受关系,不证明所有运营者已采用新规则,也不证明分歧不可能发生。

旧规则节点可以接受包含七的区块,而执行R的节点会拒绝它。R有效区块落在O范围内,不会强迫所有出块者只产生符合R的区块。

还要注意旧规则节点无法证明什么。按O接受区块,不等于检查了新增限制。如果n恰好为四,两种答案一致,但验证理由与能提供的保证仍然不同。

因此,在一个容易通过的例子上意见一致,弱于证明双方执行同一套规则。

返回目录 · 下一节

5. 放宽规则:新规则允许旧规则不接受的值

在独立的E方案中,激活后的新规则接受零至十二的整数。O接受的每个值都通过E,但E接受的一些值无法通过O。

在高度100:

  • n等于四:O接受,E接受。
  • n等于七:O接受,E接受。
  • n等于十:O拒绝,E接受。
  • n等于十三:O拒绝,E拒绝。

十展示了另一方向的不兼容:新规则允许的区块,可能被仍执行O的节点拒绝。

这说明类似硬分叉的放宽变更所面临的兼容性问题,但不表示真实硬分叉都只是扩大一个数值范围。真实变更可能替换规则,其关系比本课的嵌套集合复杂得多。

也不意味着一定出现永久分裂。如果参与者协调采用并产生共同接受的历史,就不一定观察到这种分歧。反过来,“升级已经获批”也不能证明协调成功。

逻辑结论只针对候选值与规则组合。按E,十符合给定字段规则;按O则不符合。哪些历史会被产生、跟随或确定为终局状态,需要额外信息。

返回目录 · 下一节

6. 激活前安装,会改变时间问题的答案

回到R方案。正确安装的R软件包在高度100以下仍使用O。

在高度99,n等于七的候选区块,既通过旧O节点,也通过已经运行R软件包但尚未激活新规则的节点。在高度100,同样的字段值仍通过O,却不通过已经激活的R。

这并不矛盾。软件包包含激活边界,两个候选区块分处边界两侧。

在E方案中,高度99的n等于十,既不能通过O,也不能通过尚未激活的E软件包。到了高度100,它仍不能通过O,却可以通过已激活的E。

所以,“已安装”与“已激活”应分列记录。只记录软件包的监测,可能忽略不同的激活配置;只记录公告中激活日期的监测,可能忽略运营者是否安装了必要规则。

为便于理解,本模型采用固定高度。真实系统可能使用其他条件,包括时间戳或根据之前区块计算的状态转换。重点是检查实际条件,而不是用熟悉的日历公告替代它。

返回目录 · 下一节

7. 信号只能先证明信号本身

假设一些参与者在高度90发出就绪信号。本模型仍规定在高度100激活,信号不会改变这个边界。

给定信号可以证明:所观察记录中出现了某个信号。它本身不能证明发出者完整的软件行为、其他所有运营者的采用情况,或未来区块的有效性。

比特币BIP 9是区分部署状态的真实特定例子。它描述信号,以及包括锁定和激活在内的状态转换;该机制在激活状态下执行新增共识规则。其门槛、周期与超时规则属于那份规范,不属于本课虚构的高度100练习。BIP 9

不要随意混合不同机制的零件。从一份提案取门槛、从另一份提案取激活日期、再从第三个来源取运营者数量,并不能构成一致的部署规则。

社会层面的公告也应这样处理。“我们支持升级”可以是有用的协调证据,但不是对所有未来验证决定的认证执行记录。

返回目录 · 下一节

8. 追踪分歧,但不要虚构后续结果

在R方案的高度100,设有两个候选区块扩展同一个给定有效父区块。A包含四,B包含七,其他检查都通过。

O允许两个候选区块;R允许A、拒绝B。双方对B的有效性存在分歧。

但这不能说明:O节点同时看到两者时,会选择哪个作为链头。模型没有提供排序规则。也不能说明A或B已经具有终局性,或某一分支持续无限增长。

在独立的E方案中,A包含四,C包含十。O允许A、拒绝C;E允许两者。同样,接受集合不同,但链头选择与终局性结论仍需要更多规则与观察。

大量支持票或令人信服的公告,不能替代某节点按规定执行的有效性检查。如果它的当前规则拒绝十,把十所在分支描述为“广受支持”,不会让这个字段通过O。

同样,暂时没有分歧也不证明普遍兼容。如果所有被观察候选值都是四,两套规则都会接受这批样本。能够区分规则的值尚未被测试或观察到。

返回目录 · 下一节

9. 建立采用记录,而不是只报一个百分比

有用的升级证据记录,应列出参与者、软件文件、配置、激活条件与观察到的行为,并说明样本范围。

三个虚构运营者可以有以下记录:

  • J:已正确安装R软件包,并使用给定的高度100条件。
  • K:仍执行O。
  • L:宣布支持,但实际安装的规则与配置尚未验证。

按照模型,在高度100,J拒绝七,K接受七,L的结果仍未知。如果把L的公告当成已安装,就会夸大证据。

可以说,在三个具名运营者中,有两个的配置已知。但这不是全网采用率、质押权重比例、出块份额或用户偏好指标。

如果J运营多个公开端点,把每个端点当作独立决策者,也需要依据。本课不会仅凭地址或标志推断所有权独立。

以太坊治理说明指出,协议变更涉及不同利益相关者的社会与技术协调,开发者与节点运营者具有不同选择。这支持我们检查真实实现与采用情况,却不能补上虚构网络缺失的测量数据。以太坊治理说明

返回目录 · 下一节

10. 兼容性结论需要明确边界

接受“这次升级兼容”之前,可以要求作者把这句话补完整:

与哪套旧规则兼容?针对哪些记录?在哪个激活条件之前或之后?基于什么共同历史与假设?

对于R,激活后存在一个方向的包含关系:所有允许的整数也被O允许。对于E,旧规则允许的整数继续被允许,但新增的十与O不兼容。

如果真实变更还改变了解释方式、状态转换或编码,仅检查数值范围就不够。两个实现可能都能解析字段,却导出不同状态,那又是另一类兼容性问题。

同样,门户继续显示熟悉的余额,不能证明协议层兼容。界面可能隐藏了验证行为变化,或者只查询某条分支。

目的不是让每份升级说明都变长,而是让每个结论有可以检验的对象。明确规则集合与激活边界的短句,比笼统保证所有人都“使用最新版”更有帮助。

返回目录 · 下一节

11. 练习与答案

练习一:共同通过

在高度100,n为四,O和R都接受。这能否证明O运营者已安装R?

不能。四同时通过两套规则,无法用这一观察区分实际执行的是哪套规则。

练习二:收紧的反例

在高度100,n为七,O与R分别如何判断?

O接受,R拒绝。这推翻了“每个O有效候选区块也都符合R”的说法。

练习三:放宽的反例

在高度100,n为十,O与E分别如何判断?

O拒绝,E接受。新规则有效的候选区块,可以被旧规则节点判为无效。

练习四:边界之前

正确安装的E软件包,在高度99检查n为十的候选区块。是否接受?

不接受。高度100以下仍应用O,安装软件本身不会让E提前激活。

练习五:支持,但缺少安装证据

L在高度90宣布支持。能否据此填写它在高度100对七是否执行R的结果?

不能。公告未证明实际规则与激活配置,结果仍然未知。

练习六:小数

n为4.5,因为小于五,是否通过R?

不通过。给定定义域要求整数。只检查上界,漏掉了规则的一部分。

练习七:广受支持的无效候选区块

O节点看到许多消息支持包含十的候选区块。支持度会改变其有效性判断吗?

不会。按给定O规则,十不通过。模型没有提供这些消息改变O的机制。

练习八:分歧一定产生长期分裂吗?

不一定。接受表说明,对特定候选区块可能出现不同验证答案。实际后续还取决于出块、传播、链头选择、参与者选择与终局性。

返回目录 · 下一节

12. 常见问题

软分叉对旧节点总是没有影响吗?

本课不能支持这么宽泛的结论。收紧规则可以保留一个方向的接受关系,但旧节点并不执行新增限制。运行后果取决于具体系统。

硬分叉一定产生两条永久链吗?

不一定。兼容性问题本身不能证明长期分裂,实际采用与产生的历史仍然重要。

发布规范能证明网络已经采用吗?

在相关证据假设下,它能证明规范已发布。采用还需要关于实现、配置与参与者的信息。

发信号就是执行验证吗?

不是。信号与强制执行的验证规则是不同观察。特定部署规范决定信号如何影响激活。

为什么不同时决定链头?

因为有效性与链头选择回答不同问题。加上一条未给定的选择规则,会让练习看起来比证据实际允许的更确定。

返回目录 · 下一节

13. 资料来源与延伸阅读

资料核对日期为2026年10月12日。数值范围、高度与运营者均为虚构,不实现所引用网络的完整升级过程。

  • BIP 9:Version bits with timeout and delay:状态为Deployed,类型为Informational,分配日期为2015年10月4日;说明一种特定信号与部署状态机制。
  • EIP-1:状态为Living,创建于2015年10月27日;支持提案与实现协调的说明。
  • 以太坊治理说明:页面更新于2026年6月6日;支持利益相关者协调与不同参与选择的说明。
  • How Blockchain Works:需要先理解共享记录基础的读者,可以阅读这篇更广泛的入门介绍。

有用的升级解释,应把确切规则差异、激活条件与实际参与者行为联系起来。一次发布、一个信号,或者对某个候选区块得出相同答案,都不能替代整条证据链。

返回目录