Skip to main content
会影响到运行中网络的变更有三类:参数变更(风险限额、费率表、资金费率上限)、行为变更(执行本身怎么工作),以及市场变更(上市与退市)。 三者的公告方式不同,但有一个共同性质,而这个性质才是关键:变更在链上历史的某个具体位置生效,这个位置之前的历史不受影响。

参数变更

风险参数、杠杆档位、资金费率上限、持仓限额和费率表都是链上配置。改动其中任何一项,都是一笔在区块中执行的协议交易,排在区块优先级的最前面。 取值本身就是链上状态,所以变更是看得见的,不需要谁来通报。某个市场的维持保证金变了,用不着别人告诉你——现在是多少,你读得到;过去任一区块是多少,你也读得到。 配置键还带版本。如果变的是取值的结构而不是数字,新结构写在一个新键下面,旧键照样可读。实时解析配置的客户端跨过这次变更也能继续工作;把键路径写死的客户端会当场发现问题,不会悄悄读到过时的东西。见状态模型。

行为变更

改执行的行为,比改一个数字难,因为每个验证者都得在完全相同的时刻改。在不同节点上、不同时间生效的变更不叫灰度发布——那叫分叉。 Intention 用链上开关(gate)来办这件事。每个开关就是一个状态键,里面存着一个区块高度:新行为从这个高度开始生效。
新行为静默发布已在二进制里,但未启用
写入一个开关一个状态键,存着未来的区块高度
所有验证者读到同一个高度
行为在该区块精确切换
那个高度必须在未来开关不能设成一个已经过去的高度。仅凭这一条,变更就是同时的。
开关不存在,就是未启用重放历史的节点在那些高度上读不到这个键,走的正是旧路径;重放的正确性是白得的,不用维护一张兼容性矩阵。
只在正被执行的那个版本上读绝不读缓存。重放旧区块时去读当前值,等于拿今天的规则套昨天的历史。
由此得出三个性质,每一个都是承重的: 写入时那个高度必须在未来。开关不能设成一个已经过去的高度。仅凭这一条,变更就是同时的——每个验证者走到那个区块时,看到的都是同一个已经存在的键。 开关不存在,就是未启用。重放历史的节点在那些高度上读不到这个键,走的正是旧代码路径。历史重放的正确性是白得的,不用谁去维护一张兼容性矩阵。 开关只在正被执行的那个版本上读,绝不读缓存。重放旧区块时去读当前值,等于拿今天的规则套昨天的历史,算出来的状态根会不一样。所以取值一律从正在执行的那个区块的执行视图里读。 同一套机制也支持逐步启用:先把标志以未启用状态放进去,拿真实流量验一遍,再到预定高度打开——不必整体上线,一次性做二进制升级。

通知期

通知给多长,与这项变更能对你手上已有的仓位做什么成正比。 最后一行是真实的例外,不是漏洞。一项要等一周才能收紧的持仓限额,恰恰在最需要它的那一周里毫无作用。真用到这一条时,变更内容和原因会一并公布。
保证金要求或杠杆档位一变,你手上仓位的强平价格就跟着变。它不会替你平掉任何东西,也不会单独通知你。带着仓位跨过一次已公告的风险参数变更,请按新的取值重新算一遍你离强平还有多远,别再用开仓时那一套。见杠杆。

不能改变的东西

已经提交的区块所适用的规则。 每一次规则变更,生效高度在记录的当时都还是未来,所以重放旧区块,套用的一定是当时生效的规则。某条规则在过去某个版本上是否生效,这个问题只有一个答案,今天问和一年后问,答案一样。 这比一条公开的政策更硬。不是协议不会改写历史——是这套机制根本没法表示一条“从过去开始生效”的规则。见状态模型。

公告

本页的通知承诺,从 2026 年 9 月 20 日公开测试网上线起生效。私有测试网改参数、改行为都不发通知——它存在的目的就是调这些。
通知期开始之后,每一次变更都会记进协议变更日志,注明生效日期;上表要求提前公告的,还会在那个日期之前公告。 条目的日期以变更在网络上生效的时间为准,而不是公告时间。

后续阅读

协议变更日志

已发布内容的带日期记录。

上市与退市

市场变更及其通知期。

状态模型

为什么配置键要带版本、要实时解析。

杠杆

风险参数变更对已开仓位意味着什么。