ERC-8117 防投毒地址格式:前导零太多时,钱包该怎么把地址显示给你看 图 1
ERC-8117 防投毒地址格式:前导零太多时,钱包该怎么把地址显示给你看 · 图 1

ERC-8117 防投毒地址格式:前导零太多时,钱包该怎么把地址显示给你看

转账前你核对了地址开头和结尾的几位,中间扫一眼觉得差不多——地址投毒攻击赌的就是这个扫一眼。攻击者用算力批量生成与目标地址开头、结尾相同、中间不同的仿冒地址,再利用气密地址(vanity address)制造一大串前导零,让人眼的模式识别自动把中间折叠掉。ERC-8117 的对策出人意料地简单:把前导零折叠成一个数字,让地址里剩下的每个字符都被迫进入视线。按照以太坊 ercs 仓库的记录,这份提案名为 Anti-Poisoning Compact EVM Address Format,状态为 Draft,创建于 2025 年 12 月 30 日。

两种记法:下标与括号

标准定义两种写法。钱包、区块浏览器、手机 App 等支持 Unicode 的界面用下标记法:0x0₈abcd…1234,其中下标 8 表示 0x 之后共有八个连续的前导零十六进制位,后面直接接上第一个非零位。日志、终端和旧接口用 ASCII 回退记法:0x0(8)abcd…1234。两种写法的数字都编码完整地址里前导零的总数。折叠之后地址可见部分变短,高熵的中段字符获得了完整的视觉宽度。标准特别强调:这只是展示层变换,底层数据一个字节都不动,粘贴、签名、校验全部仍用完整 42 位地址,并且与 EIP-55 大小写校验和完全兼容。

ERC-8117 防投毒地址格式:前导零太多时,钱包该怎么把地址显示给你看 图 2
ERC-8117 防投毒地址格式:前导零太多时,钱包该怎么把地址显示给你看 · 图 2

为什么是前导零,而不是任意压缩

这不是为了好看。以太坊生态里大量地址带着前导零:用 CREATE2 或 Gas 优化手段专门挖出来的气密地址、合约工厂产出的规律地址,前导零越多越显得高级。恰恰是这种单调的零串制造了视觉真空——研究表明人对长串相同符号的计数极不可靠,八个相同字符和九个相同字符混在一起时大多数人数不清。把零串换成一个显式数字后,仿冒地址必须在可见区伪造同等长度的人眼可核对内容,攻击成本从批量生成变成不可能的任务。标准同时也警告:折叠逻辑不能滥用到非零前缀上,那会破坏地址的可逆复原。

校验和仍在,但防不住什么

EIP-55 用大小写编码校验位,能把输入错误和一部分随机伪造地址直接判死。但投毒地址是精算产物:攻击者生成地址时可以筛掉校验和错误的那批,所以投毒地址往往带合法校验和。这就是 ERC-8117 存在的意义——校验和管机器层面的意外,显示格式管人层面的欺骗。用户侧最经济的操作仍然不变:核对地址时别只看头尾,用整段复制加全字符比对,或者使用支持该展示规范的工具;如果界面显示的地址里出现一个零计数数字,记得把它乘进脑子里的位置检查里。

采纳现状与理解边界

一份可以自测的攻击剧本

想直观感受投毒攻击,可以做一次无害实验:用钱包工具批量生成一批以同一组字符开头和结尾、中间随机的地址(正规钱包软件自带 vanity 生成功能,或用测试脚本),把它们和真实地址混在一起打印,只盯开头八位和结尾八位,限时三秒,统计自己误判的比例。多数人在带长零串的样本上会翻车,这正是攻击可行性的自证。防御侧的结论也因此清晰:任何声称安全的转账流程都应当有机器核对环节——剪贴板整段比对、地址簿命名标签、硬件钱包屏幕复核——人眼只负责抓大放小的最后一眼。ERC-8117 的贡献是给机器核对之外的显示层上了一道统一语法,让人眼这一眼看得更有信息量,但它始终是把保险丝而不是断路器。

按 ercs 仓库口径该提案仍是 Draft,主流钱包目前多数未启用这种折叠显示。理解它的正确姿势是把它当作一份体检表:检查你的钱包在长零地址场景下的显示策略——是省略号折叠中段(最糟,恰好掩盖攻击面)、完整显示(合格)、还是实现折叠记法(更进一步)。任何声称支持该标准的工具,应当能在展示态和原始态之间无损往返;用一个带前导零的地址复制粘贴一次,就能当场验证。本文为机制说明,不构成任何投资建议。