在二层算主层的票:Snapshot X 用存储证明跨链核对投票权 图 1
在二层算主层的票:Snapshot X 用存储证明跨链核对投票权 · 图 1

治理代币躺在以太坊主网,投票系统跑在 Starknet 上,票力怎么算?跨法有两种:发桥把币搬过去,或者把数据证明过去。Snapshot 官方文档给出的答案是后者——存储证明(storage proofs)。文档交代了合作方:Snapshot X 与 Herodotus 集成,把存储证明装进 Starknet 上的投票策略。

官方页把原理压成四步,一步一步都能核对。第一步,把以太坊主网(L1)的一个区块哈希发送到 Starknet(L2)。第二步,有了这个区块哈希,L1 上任何合约在该特定区块的状态都可以在 L2 上被验证。第三步,投票策略直接读取并验证这些 L1 合约数据——文档举的例子是代币余额。第四步,用验证过的数据计算投票权。整条链路的实质是把信任锚在密码学上:不需要 L2 询问任何 L1 的中间人,也不需要把整个 L1 状态同步过来,验证方只要区块哈希在手,就能对某一个账户余额的真伪做数学核对。

文档对适用边界写得很克制,两句限定都该引用:能核的来源目前是以太坊主网与 Sepolia 测试网的合约数据;这套能力目前只在 Starknet 上可用。翻译一下现实含义——别的二层或别的主链数据不在当前射程内,设计跨链治理前先去文档确认目标链是否在列。

和桥路线对比,这条路线的长处与限制都清晰。长处是资产不动:持有人不用把 NFT 或代币桥到 L2,主层的私钥、持仓、流动性一概不动,跨链的只是哈希与证明数据,攻击面显著小于资产搬运。限制是与区块哈希的到达节奏绑定:计票锚定在某个已上链的区块,提案创建时点的选择要容忍证明数据的可得延迟;另外这条链路验证的是状态读取,不改变投票本身仍在 L2 签名发生的事实。

给想参与 Snapshot X 治理的读者三个检查动作。第一,在提案页面确认策略类型是否声明了存储证明来源链,以及锚定的网络是主网还是测试网。第二,理解余额读取的区块点——你转走或转入代币的时间与提案快照区块的先后,直接决定你算不算这轮票。第三,遇到声称同款机制的第三方跨链投票工具,先核对官方文档列出的合作实现(Herodotus)与链范围,超出这个范围的描述不能套用本页结论。

存储证明这门技术本身不新——Filecoin 等系统早已用它核对存储数据,Snapshot 的用法是把它裁进计票场景。它解决的问题也一贯:让一层诚实引用另一层的账本,不引入新的信任中介。功能处于持续演进中,链范围与集成方式以 Snapshot 官方文档当时版本为准。本文为机制说明,不构成任何投资建议。

把这套机制与常见的轻节点思路对照,差异同样清楚。跨链计票的朴素方案是让 L2 应用自己记一份 L1 余额镜像,镜像由中心化同步器维护,数据对不对取决于同步器诚不诚实;存储证明方案里不存在镜像,每次计票现场生成证明、现场验证,中间人只负责递区块哈希,而哈希本身可以被任何节点重算。代价则是复杂度转移:证明生成与验证的工程门槛、锚定区块的可用时效,都成为新的运维变量。安全研究中这是经典交换——用运维复杂度换信任最小化。

读者可以顺手做一次验证练习。打开一个采用该策略的 Snapshot X 提案,先看策略参数里锚定的链与合约地址;再想清楚一个问题:如果提案创建瞬间你刚好把代币转出到另一个地址,票力算谁的?答案取决于锚定区块落在转账之前还是之后,这与任何链上快照投票的规则一致。跨链化改变的只有数据读取路径,计票时点的严肃性从未改变——这也是所有用快照计票的治理共同的软肋:快照窗口的选择权在提案创建者手里。

在二层算主层的票:Snapshot X 用存储证明跨链核对投票权 图 2
在二层算主层的票:Snapshot X 用存储证明跨链核对投票权 · 图 2