一份 11 月 4 日下午挂在 Polygon 治理论坛的提案,要求验证人在一个还没定下来的区块高度上,把五个地址里的原生 POL 余额直接清零,再把同样数额记进两家公司自己的地址。提案没有用「冻结」这个词,因为 Polygon PoS 的出块节点早在 10 月 29 日就把这些地址写进了 Bor 的交易屏蔽名单,钱早就动不了。真正卡住的地方是另一件事:钱动不了,不等于钱回得去。
相关下载: Binance全球顶级交易所 v3.22.4大小:306.2M
规格写得很死。分叉在第 F 个区块开始时生效,先处理转账、后执行其他交易,对名单上每个地址按顺序做三步:读 F-1 区块结束时的余额,把余额置零,把同一笔数额加到相应公司的回收地址上。原生 POL 的余额记在 0x0000000000000000000000000000000000001010 这个预编译地址下,所以改动只发生在账本的余额表里,没有一笔交易,没有一次事件日志。
这意味着区块浏览器、索引器、把余额从交易流水重新算一遍的记账工具,在 F 区块之后都会对不上账。提案自己在兼容性一节承认了这一点,只要求各方「处理」这个差异。论坛里第三个发言人 Williamsj043 提的建议更实际:在 Amoy 演练之前就公布激活区块和一份机器可读的地址与金额清单,让交易所和托管方预先写好特例。这条建议目前还没有写进正文,提案里激活区块、分叉代号、客户端版本三栏全都写着待定。
总量不变、合约不变、桥不变也是提案明确写下的边界。Heimdall 共识层、StakeManager 质押合约、桥合约都不动,这意味着验证人质押、委托、跨链资产都不受影响,被修改的只有全链五个地址的余额。Class B 地址,也就是币安后来补交的那批、以及一个会接收 ERC-4337 用户操作的智能合约热钱包,明确不在清扫范围内。
站得住的地方在于「有限」二字写得清楚:一份封闭名单、一次性规则、一个事先公布的高度,加上第五节列出的四个前置条件。站不住的地方在于这套规则靠的是人工判断,而不是链上某个客观条件。
提案把两边分开列。Polymarket 一侧四个地址,基准读的是主网第 96,399,251 区块,也就是 10 月 29 日,合计 23,862,736.07 枚:最大那个地址 15,331,308.29 枚,第二 4,295,442.00 枚,第三 4,235,982.73 枚,接收两笔 328 万枚转账的中转地址只剩 3.05 枚。币安一侧一个地址,基准读的是第 96,413,185 区块,46,626,593.27 枚。

名字叫「当前被卡住的钱」,数字却是按基准区块定格的历史读数,这个错位是后面所有问题的根源。我在 11 月 5 日 18:20 前后用两个独立的 Polygon 公共节点把这五个地址的余额重读了一遍,两边结果一致到小数点后两位。最大那个地址 15,331,308.31 枚,比基准多 0.02;接收中转的地址 3.05 枚,一分不差;第三那个 4,235,982.76 枚,多 0.03。别急着把这几个零头当噪声,第三那个地址的非序号已经到 26,说明它一直在收钱。
币安那个地址现在有 46,626,826.40 枚,比基准多 233.13 枚,非序号仍是 0。它没有发出过任何交易,多出来的部分是别人打进去的,最合理的解释是攻击者还在往里归集其他链上资产或有人在投毒交易。两百多枚按现价合二十来美元,数额可以忽略,但它说明一个事:这个地址的余额不是静止的,而提案的规则是「把 F-1 区块结束时的全部余额搬走」,谁在 F 之前再打一笔进去,那笔钱也会一起被搬到币安的回收地址。提案在安全考量里用一句「金额很小」带过,没有设上限。
真正让基准表失效的是 Polymarket 一侧第二个地址。提案写它当时有 4,295,442.00 枚,现在余额是零,非序号也是零。中间那 426 万枚去哪了,从浏览器上只能确定一件事:这个地址自己没发过交易。它可能是被别人扫走了,也可能是提案在公布地址时把尾部字符写错了,因为论坛正文里这个地址只有 41 个字符,比其他四个少一位。我把补一位后的两个候选地址都查了,余额都是零,所以无法从链上反推正确的地址。按名单原样执行,这个地址归零时没有钱可搬,回收地址也就收不到对应的 426 万枚。提案写明的总额是 7,049 万枚,这 426 万枚是总额的 6%。
提案正文给的市值口径是「约 7,049 万枚,按 10 月 29 日现货 0.0924 美元约合 650 万美元」。11 月 5 日 CoinGecko 的价格是 0.0995 美元,市值 10.59 亿美元,流通量 106.44 亿枚,历史最高价 1.29 美元出现在 2024 年 3 月 13 日,24 小时涨 4.67%,七天涨 9.08%。按今天的价格,这 7,049 万枚约合 701 万美元,比提案的估值多五十万。
这五十万在整件事里不算大头,但它决定了读者该用哪个数去理解「值不值得为它硬分叉」。用提案自己写的汇率,这笔钱相当于 POL 流通市值的 0.6%;用今天的价格,是 0.66%。两个数字都远低于一次共识变更通常被认为会引发的信心成本,但也都不是「可以随手放弃」的量级。
更值得摆在一起看的是 POL 对这次事件的价格反应。CoinGecko 记录 24 小时涨 4.67%,而同一时间比特币涨 2.43%、以太坊涨 3.96%,POL 跑赢主流。币安永续的 POLUSDT 报价 0.0996 美元、24 小时涨 9.5%,未平仓名义额 1,390 万美元,一天增加 18.94%,这是它的持仓增速,不是价格增速:杠杆进场的速度明显快于价格本身。市场没有把这 7,049 万枚当成稀释事件来卖,因为它确实不增发。
把一个地址的余额清零,不需要私钥,需要的是足够多的验证人在同一个高度执行同一段代码。这场表决的形状可以这样理解:名单是固定的,扳手只有五把,每一把都对应一个地址,而按下去之后没有 undo。

相关下载: 欧易okx交易所 v6.195.1大小:549.4M
这也是为什么提案把激活条件写成四个并列项而不是一个。名单上的地址在变,投票人的判断也要跟着名单走,一旦某一项在最终投票时不再成立,整件事就该停在这里,而不是「先按了再说」。
10 月 29 日 Polymarket 先出事。提案里的链上记录写得很细:当日 18:30:34 与 18:35:59 UTC,分别有 3,282,275.71 枚原生 POL 从中转地址转出,两笔进同一个地址。四个地址被加进屏蔽名单,屏蔽时它们合计约 2,400 万枚,而整个事件涉及约 2,800 万枚,剩下的部分不在名单上,也就永远拿不回来。
屏蔽名单是 Bor 客户端读取的一个本地文件,节点启动时读一次。每次增删都要发版、重启或轮换 span。名单项没有自动过期时间,过滤范围只覆盖外部发送者和 EIP-7702 授权方。提案举了攻击者反击的例子:10 月 30 日出现过一笔待处理交易,手续费约 219,450 枚 POL,折合每单位 gas 10.45 枚,还有人联系验证人、出价要买通一笔交易。
这一节最该被读者记住的不是攻击者的动作,而是机制的性质。屏蔽名单是应急手段,从设计上就不是终态。它靠四家匿名的出块节点各自维护文件,靠每次启动时的读取维持一致,靠「攻击者没找到绕过办法」维持有效。任何一个环节出问题,这 7,049 万枚就重新变成可动的钱,而那时能追回来的概率比现在更低。
提案把「为什么这不是随便要钱」拆成六条可查的条件:受害者公开承认、所有出块节点已屏蔽、金额足够大、资金可追溯到有名有姓的受害方、受害方自己提出、公开披露后没有第三方主张权利。六条都写成「符合」,而不是「据信符合」,这是提案做得聪明的地方,因为它把辩论从「该不该救」转成「这些前提是否成立」。
可查的部分确实成立。提案本身由两家公司提出,币安一侧的链上记录能对上区块号与被转金额,Polymarket 一侧的两笔转账时间戳写到了秒。不好查的部分是第六条:「没有第三方主张权利」到底是查过还是没查过,提案没有说怎么查。如果那个少了 426 万枚的地址确实被第三方扫走,那么这 426 万枚的归属现在就存在争议,而名单照原样执行会把争议一起搬进回收地址,这个风险提案没有处理。
还有一个更本质的问题:验证人投票的对象是代码,不是事件。第四节要求两家公司在讨论帖里给出回收地址、用签名消息或小额转账证明控制权、并书面确认地址归自己所有。我读了这两个地址的状态:Polymarket 的 0x3dcE0a29 开头的地址余额 0.1 枚 POL、非序号 1、有合约代码,符合合约钱包的特征,地址已经激活。币安的 0xd9fd3910 开头的地址余额为零、非序号为零、没有代码,今天还只是一个空地址。提案的过渡规则允许在分叉前再补,但这意味着投票通过的时代点,收款方可能还没证明过自己能收钱。
提案给的时间表是:11 月 5 日 14:30 UTC 在 Polygon 协议治理电话会上做展示;通过后开发客户端、部署到 Amoy 测试网并演练,两周算可行,一周算紧;主网激活前要通知验证人、RPC 服务商与浏览器,运营侧估计发布后 70% 到 80% 的质押会很快升级到新版本。
把两周拆开看就知道为什么紧。客户端改动本身不大,一笔余额搬运写在一个固定高度之前,测试用例也只有四条:Amoy 用测试账户代演、主网分叉回放、未升级节点必须拒绝 F 区块、Class B 地址不受影响。真正耗时的是两件事,一是回收地址的控制权证明要在打版本标签之前完成,二是 70% 质押覆盖率这条门槛需要质押方逐家确认。出块权集中在少数节点手里,50% 以上的质押完成升级,链就已经能继续出块,而走错分支的节点会被孤立,所以 70% 到 80% 这个目标对应的不是「能不能升级」,而是「升级后要不要收拾几十个掉队的节点」。
提案对「以后再有人这么要求怎么办」的回答是拒绝。被否决的方案里有一条是「在协议里做一套通用的冻结与回收机制」,理由是那等于给链永久保留一项处置用户资产的权利。提案用「同时满足六个条件」来限制先例,可条件本身是文字,解释权在下一批投票的人手里。这一节可以顺势成一个初步判断:这次投票的内容是代码,影响的是以后每一次类似请求的门槛。
如果攻击者愿意配合,事情本来就简单。提案提到 Polymarket 通过 SEAL 安全港回收合约在链上发出过通知,没有收到回应。谈判路线失败,才轮到共识层动手。
如果屏蔽名单能被证明长期可靠,不动分叉也说得过去。可现在四条理由都不支持这个假设:文件只在启动时读、条目不过期、过滤只管外层发送者、攻击者有直接经济动机去买通验证人。这四条里任何一条恶化,钱都可能先动起来,而动了之后这条链上没有任何机制能把它们停下来再退回去。
反过来,如果名单照原样执行而那个 426 万枚的地址已经空了,这次分叉就会达成一个奇怪的结局:总额写的是 7,049 万枚,实际搬走 6,619 万枚,差额留在攻击者或第三方手里,两边公司收回的钱比提案承诺的少。这不是提案的错,但它说明一件事:提案的总额是历史快照,不是承诺的实收金额。
对普通持币人来说,需要核对的只有三点。第一,分叉不动质押、不动桥、不动合约,因此不构成对持币人资产的直接风险;第二,记账工具在 F 区块后会报余额差异,如果某家交易所据此把 POL 充值判为异常,那会是这次升级里最现实的麻烦;第三,区块高度一旦公布,所有节点必须在同样的时间内升级,这不是钱包用户的责任,但会影响充提的到账时间。
把提案读完,最扎实的判断不是「该不该硬分叉」,而是「这次改动暴露了 PoS 链上资产安全的最后一公里由谁负责」。冻结靠的是出块节点读一个文本文件,解冻靠的是同批节点在约定高度执行一段新代码。中间的执法、举证、判决全部落在社区共识里,链上只提供一个把数字从这里搬到那里的动作。
这套流程能跑通,是因为这次的两家受害者有名、金额不大、链上路径清楚、舆论没有分歧。换一个条件,比如受害者是不知名的协议、金额只有几百万、或者攻击者把币拆分到几百个地址,同样的提案很难过。提案作者知道这一点,所以在正文里把「不应被反复复制」写了两遍。
我倾向于认为这次分叉会通过,不是因为先例好,而是因为替代方案更差:钱锁在一份靠重启维持的文件里,等攻击者找绕过办法,比一次性搬走风险更大。真正值得盯的不是投票结果,是进入开发流程之后那两个数字会不会补上:激活区块公布时名单金额是否重新读取过,以及回收地址的控制权证明是否在打标签之前公开。这两个数字比任何声明都能说明,这次分叉是一次有边界的例外,还是一次被低估了的先例。
Polygon 治理论坛 PIP 提案(2026 年 11 月 4 日提交,11 月 5 日 14:30 UTC 在 PPGC 展示):https://forum.polygon.technology/t/pip-proposal-recovery-of-funds-held-in-blocked-addresses-following-the-polymarket-and-binance-incidents/22497
Polygon 链上余额与合约状态:公开节点 polygon.drpc.org 与 polygon-bor-rpc.publicnode.com,读取时间 2026 年 11 月 5 日 18:20 前后。
POL 价格、市值与流通量:CoinGecko polygon-ecosystem-token 接口,2026 年 11 月 5 日 18:15 前后。
币安现货与永续行情、未平仓名义额:Binance 公开接口 api.binance.com 与 fapi.binance.com,2026 年 11 月 5 日 18:15 前后。
事件与时间线报道:Cointelegraph 2026 年 11 月 5 日报道「Binance, Polymarket seek Polygon hard fork to recover $6.8M in stolen crypto」,作者 Ezra Reguerra。
提案在治理电话会上的议程与讨论:Polygon Community Forum 最新议题列表,2026 年 11 月 5 日。
精彩推荐
用户评论