#dusk $DUSK

今天继续看 @Dusk 的 Boreas 更新,最让我在意的不是 Phoenix 退役,也不是又多了几个 fork rule。

而是一个更底层的问题:

协议升级以后,过去的一笔交易,为什么还能一直保持同一个含义?

这事听起来像废话。

但硬分叉之后,节点已经在跑新规则了,历史区块里却还躺着旧版本的 transaction、旧 verifier、旧 execution semantics。

如果今天的节点拿现在这套规则去重新解释以前的 bytes,历史 replay 就可能出问题。

所以 Boreas 这次把 transaction handling 的版本边界做得更明确。

Live ingress 走当前协议规则。

旧 envelope 可以在入口被识别、normalize。

进入 ledger 之前再变成 canonical transaction。

而历史区块,则继续按它当年的规则去 decode 和 replay。

我觉得这里真正重要的不是“格式统一”。

而是:

交易除了内容,还有它所属的协议时代。

Aegis 是 Aegis 的规则。

Boreas 是 Boreas 的规则。

硬分叉可以改变未来,但不能顺手把过去重新解释一遍。

这也是为什么我现在看链升级,不太只看“新增了什么”。

我更关心的是:

新版本上线以后,今天的节点还能不能准确理解几年前那条链到底发生过什么。

对一个要做 regulated market infrastructure 的网络来说,这种历史连续性其实很基础。

账可以升级。

账里的过去不能跟着升级。