把地址变成二十个表情:ERC-7673 base256emoji 想治的仿冒病
一种骗术已经产业化:骗子批量“挖矿”生成与你常用地址首尾若干位相同的仿冒地址,然后在链上制造一些假的转账事件刷存在感,等你哪天转账时从历史记录里顺手复制了那个高仿地址,钱就进了别人的口袋。十六进制地址是这条骗局的温床——0x3e9f...7a2c 与 0x3e91...7a2c 对人类眼睛几乎没有区别。ERC-7673(2024 年 4 月 1 日创建,提案状态 Review)给出的解法带着互联网原生幽默:把地址整个换成表情符号显示。
二十枚表情与一条编码表
规则简单到可以口头转述:每个以太坊地址正好 20 字节,一个字节的取值范围恰好落在 0 到 255——于是选一张全局固定的编码表,把每枚字节映射成表情总表里排第 n 的那个 Unicode 表情,地址就成了一个长度恒为二十的表情串。标准文本附带的表格里,数字 5 对应 🌑、31 对应 👍、105 对应 🌟,逐字节一一对应,编码可逆且唯一。界面层面的要求分两档:应当以表情串作为地址的展示与输入形式;当输入框里出现连续二十枚合法表情时,应当将其识别为地址。由于映射是双射,表情串与十六进制可以互相转换、无损往返,任何工具都能用同一张表校验。

为什么表情比十六进制难仿冒
关键不在“更难猜”,而在“无法只像一半”。十六进制相似度攻击只需要撞开头和结尾,中间几百比特随便取;表情的视觉差异是全方位的——🌕 与 🌑 是同一位置的字面替换,整串二十个符号里任何一个不同都会让两个地址看起来毫无关系,中间段“撞色”不再有意义。另外表情串长度固定、字符集合封闭,粘贴时混入零宽空格或西里尔形近字符这类同形异码花招也无处藏身。标准动机部分点名的目标正是这类刷假 Transfer 事件的资源浪费与账目污染:当界面只认表情串,历史列表里的每个条目要么肉眼可辨、要么干脆显示为无效,仿冒地址失去了“看起来差不多”的生存空间。
它不解决的事,恰是骗局剩下的部分
必须把话说全:ERC-7673 停留在 Review 阶段,主流钱包并未把它作为默认展示,且它天生只覆盖显示层。第一,剪贴板替换攻击照样得手——表情串同样可能被后台程序悄悄替换,可靠的永远是逐字符核对与小额试转,而二十个表情的逐字符核对在体力上并不比核对一串十六进制轻松。第二,地址之外还有更宽的攻击面:钓鱼合约、假域名、恶意授权签名,都不因地址变得好看而消失。第三,不同平台若各自魔改编码表(标准明令禁止),跨端核对反而会引入新混乱。对用户真正可执行的版本其实不需要等标准普及:给常用地址做一张带全字符的私人清单(比如用备忘录里的全串比对)、大额前固定小额试转、以及永远从官方渠道而不是交易历史里复制收款地址。这份提案像一面镜子,照出人类读十六进制的生理极限——用设计把错误率压下去,比训练读者数符号可靠得多。本文只讨论显示格式与防骗机制,不构成任何交易建议。
过渡期的现实做法
在表情地址成为默认显示之前,用户可以先用三件土办法把仿冒骗局的发生率压下来。第一件,把常用收款与付款地址存进自己控制的加密备忘录,每次转账从备忘录粘贴而不是从链上历史点选——骗局寄生在“历史列表顺手一点”这个习惯上,绕开习惯即绕开骗局。第二件,对任何首次收款的地址做小额试转,确认到账后把完整地址写入私人清单,之后每次使用前做整串比对而不是首尾扫一眼;整串比对在十六进制上费力,恰恰说明该环节应当用清单代替肉眼。第三件,给自己的每个常用地址做一张“全字符照片”(截屏钱包界面即可),异常粘贴时被篡改的场景下,与截图对一遍是最快的校验。这些动作与 ERC-7673 殊途同归:都不是训练人眼更可靠,而是把“依赖人眼”的环节删掉。标准用编码表把地址变得无法只看局部,用户侧的习惯升级同样在消灭“差不多就行”,两条路指向同一个终点。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。