地址的大小写不是随便写的:EIP-55 校验和怎么帮你挡住剪贴板劫持 图 1
地址的大小写不是随便写的:EIP-55 校验和怎么帮你挡住剪贴板劫持 · 图 1

为什么地址里会有大写字母

以太坊地址本质是 40 个十六进制字符,十六进制只有 0-9 和 a-f,字母大小写按理没有意义。但主流钱包显示地址时会呈现出 0xAb… 这样大小写混排的形式,这不是装饰:EIP-55 把地址字母的大写小写变成了一套「校验和」。对地址哈希算一遍 keccak256,凡是哈希对应位为大写档的字母,就强制写成大写。校验结果被编进了大小写里,肉眼可验,钱包也能自动检查。

它怎么拦截「改一个字符」的攻击

剪贴板劫持是经典手法:你复制收款地址,恶意软件在粘贴前悄悄把一个字母换成形近字符。如果收款地址是合法的校验和格式,任何单字符改动都有很大概率破坏大小写规则——钱包粘贴地址时会提示「校验和不匹配/Checksum 无效」,警告你这串地址不是合法编码的结果。也就是说,只要一个地址本来就该有大小写、粘贴后却报警,别当作小毛病忽略:它等于地址上存在编码层面不自洽的痕迹,必须停下核对。

它拦不住的三种情况

  • 整段替换:攻击者换成另一个完全合法的地址(自己的钱包地址),校验和完全通过。这只能靠人工核对首尾与中间若干段来防。
  • 全小写/全大写地址:这种写法在历史上合法、校验和不适用(all-caps 与 all-lower 都不做校验),此时钱包不会报警,等于放弃了一层防线。日常建议:复制时优先复制带混合大小写的格式,粘贴端若支持显示校验状态则留意。
  • 看着像地址的「图片」:钓鱼网站把假地址做成截图或伪装成「智能地址」短链接。地址不是以文本形式从你信任的来源复制的,校验和再正确也无从谈起。

转账前 30 秒核对法

  1. 看来源:地址是从哪来的?官方页面、对方官网、还是聊天记录里的截图?来源不可信,校验通过也别打。
  2. 比对首尾与中段:把粘贴后的地址和原始来源至少核对开头 4-6 位、结尾 4-6 位,再随机对中间一段;形近字符攻击集中在首尾视觉盲区。
  3. 大额先用小额试转验证路径,确认到账后再放量。
  4. 留意钱包粘贴时的校验提示,出现「Checksum」相关警告一定停下来弄清原因再继续。

和「地址标签」的区别

钱包给你存的联系人起的名字(标签)只是本地备注,和链上地址的绑定关系错了,标签再亲切也没用。校验和恰好相反,是编码自带的防伪指纹,不依赖你存没存过。两者一起用:标签解决「这地址是谁」,校验和解决「这串字符有没有在复制途中受伤」。

三层防线各司其职

把防护想成一个顺序:第一层是来源——只从可信页面复制文本形式(非截图)的地址;第二层是校验和——粘贴时留意钱包的 Checksum 提示,混合大小写格式的地址改一个字符就会破坏编码自洽性,报警即停;第三层是人工比对——首尾各六位加中间随机一段逐字符对照原始来源。三层任何一层发现问题,都应以「停下核实」处理,而不是指望另外两层兜底。

风险提示

本文为技术科普,不构成投资建议。校验和机制只能拦截编码不合法的改动,无法替你判断地址的来源与归属;任何转账前的人工来源核对都不可省略。文中不含任何真实地址示例指向,所有格式说明均为虚构占位。