轻客户端只能往前看:EIP-7658想给同步数据补上历史课 图 1
轻客户端只能往前看:EIP-7658想给同步数据补上历史课 · 图 1

轻客户端协议解决的是向前的问题:手里有一份近期检查点证明,就能一格一格验证未来的区块头。但把镜头调转向后,同一套机制立刻失灵——你想验证两年前的某个时期被哪个同步委员会签过,客户端没有工具回答。这不是数据存在与否的问题,而是那些数据没法证明自己是规范的。EIP-7658 试图用一个很小的状态改动补上这块历史课。

为什么过去很难补

轻客户端更新包的核心是 SyncAggregate:某个槽位区块头里携带的同步委员会签名聚合,外加对应时期的委员会公钥集合证明。要在今天重建一个历史时期的更新包,节点得同时拿到那个时期的区块和当时的信标状态。区块在 libp2p 网络上的保留窗口很短,状态更不可能完整保留——信标状态按窗口裁剪,早于初始同步检查点的状态根本不存在。Portal 网络这类从信标节点分装历史数据的归档服务因此遇到一致性问题:不同后端各给一份某时期的更新包,用户无法判断哪份该信。

解决思路是:与其事后拼凑,不如在每个时期选定一个槽位作为该时期的代表,并且把谁是代表写进共识规则里。

只跟踪最优的那一份

EIP-7658 的做法是在信标状态里为每个同步委员会期记录当时的规范且最优的 SyncAggregate——最优指签名覆盖的委员会成员数最多,规范指可以沿信标链规则独立核验。有了这个承诺,任何人从一份近期状态出发沿链往前推,就能证明某个历史槽位的更新包是那一时期无可争议的最优解:要伪造它,伪造者得给出签名人数更多的聚合,而这在诚实假设下不存在。派生 LightClientUpdate 的有效性于是变成纯密码学问题,不需要信任任何归档后端。

设计上它极克制:执行层零改动,共识层也只是在状态里存指针与做比较替换;存储成本是常数级,不影响任何验证者操作。

谁会用到它

最直接的受益者是 Portal 网络一类去中心化归档:它们把信标历史切块分发给全网节点,回填的轻客户端数据必须有独立可验证的规范版本,否则多后端就会给出不一致的答案。其次是需要审计桥历史提交的场景——某条跨链消息当年依赖哪份同步证明、签名质量如何,理想状态下都该能被第三方重放验证。对普通运行全节点的用户,这个改动没有任何可感知的变化。

状态方面,按官方页标注,该提案创建于 2024 年 3 月 21 日,当前 Stagnant,未进入任何升级。轻客户端生态对历史数据的需求则继续靠集中式RPC信标节点与各自私有约定过渡。它属于那种不性感但打地基的提案:链龄每增加一年,可回溯的轻客户端空白期就长一年,这类补丁的价值只会上升。

一面档案室的镜子

档案学的类比能把问题看更清。轻客户端协议像一座只能向前归档的档案室:每天新文件入档都盖好骑缝章,但你要调两年前的卷宗,馆方只有一堆不同日期、互相矛盾的私人流传副本,每份都说自己是原件。7658 的做法不是补存更多历史,而是给每个归档期指定当期最佳封面页,并把是哪一页写进每天的值班日志。此后任何人拿着日志往前推,都能确认那页卷宗无可争议——因为要伪造它,伪造者得凑出签名人数更多的聚合,这在诚实假设下不存在。多后端分发的归档网络最缺的恰是这样一份公共值班日志:数据可以多点分发,权威必须单点锚定,这正是把锚放进共识状态的理由。

快速问答

问:轻客户端和全节点差在哪? 答:轻客户端只同步区块头与委员会证明,不执行交易、不存状态,靠密码学证明信任,代价是安全强度依赖委员会诚实多数。

问:SyncAggregate 存在哪? 答:它本来就随每个信标区块头传播,缺的是在状态里的持久化承诺,7658 补的正是持久化。

问:为什么不直接多存历史状态? 答:状态体积不现实,且会改变节点角色定位;在状态里存一个指针是成本最低的一致性锚。

风险提示:本文描述提案机制与状态,不构成投资建议;轻客户端与桥的安全性评估请以对应协议文档为准。