
图片原始来源 · 官方文档局部引用 · 公开页面局部截图;未修改页面内容
以太坊地址的底层是一个 20 字节的值,写成十六进制就是 40 个字符,前面再加 0x。字母 a 到 f 的大小写变化不改变这 20 字节的内容,所以仅大小写不同的两个写法,可以指向同一个地址。但混合大小写并非无意义的排版:EIP-55 用它承载校验信息,支持校验的工具会据此判断输入是否完整可信。
判断两个写法是不是同一个地址
第一步只比较内容:去掉 0x,统一转成小写,确认都是 40 个十六进制字符。如果小写形式逐字符相同,底层地址就相同。第二步再单独看格式:这个混合大小写写法是否符合 EIP-55 规则。两件事要分开,否则容易把“格式不对”误认为“地址不同”。
| 输入情形 | 底层地址关系 | 常见工具行为 |
|---|---|---|
| 全小写与全大写 | 可能相同 | 通常可解析,但可能提示未校验 |
| 正确校验的混合大小写与其全小写形式 | 相同 | 通常视为同一地址 |
| 混合大小写但校验不通过 | 底层字节仍可能相同 | 支持校验的工具可能拒绝或警告 |
| 小写形式有字符差异 | 不同 | 应视为另一个地址 |
EIP-55 的做法是:把地址的小写十六进制字符串做 Keccak-256 哈希,再逐个字母位参考哈希对应半字节决定大写或小写;数字位保持不变。按这一规则,一个地址有一个标准混合大小写形式,但校验结果也可能恰好全大写或全小写,因此仅凭大小写外观不能判定是否吻合 EIP55,需计算比对。
校验通过说明什么,不说明什么
EIP-55 能发现一部分抄写、粘贴或篡改造成的字符错误。按该提案的估算,随机错写的地址偶然通过校验的概率约为 0.0247%。这是输入完整性层面的检查,范围有限。
它不能证明地址属于你以为的收款人,不能证明地址所在网络是你想用的网络,也不能防止钓鱼页面把正确格式的地址整体替换。校验通过只说明这个字符串的大小写组合与其自身内容一致,并不是来源可信的证明。
反过来说,工具提示校验失败,也不等于地址在链上不存在。更常见的情况是:字符串的字母大小写被手工改过,或复制时混入了错误字符,导致它不符合 EIP-55 的编码规则。此时应回到原始来源重新获取完整地址,而不是把字母随意改成全小写或全大写来绕过提示。
一个可操作的核对顺序
- 从钱包或可信来源复制完整地址,不使用手工输入。
- 去掉
0x后确认长度为 40 个字符,字符只包含0-9和a-f(也允许大写A-F)。出现O、l等易混字符时,直接判为无效输入。 - 统一转小写比较内容,确认没有字符差异。
- 用支持 EIP-55 的工具重新编码,与手中字符串比对。不一致就说明输入格式未通过校验。
- 在钱包界面核对完整地址,而不是只看首尾几位;同时确认网络、链 ID 和收款人信息。
第 5 步不能省略。EIP-55 只处理字符串自身的一致性,收款人身份、网络选择和金额等仍需人工确认。把校验当作唯一防线,或为了“让工具接受”而改掉大小写,都会削弱这层检查的意义。
常见疑问
全大写或全小写地址能用吗? 许多解析器接受这两种写法,但仅凭大小写外观不能判定是否吻合 EIP55,需计算比对。部分工具会提示未校验,是否继续应由你结合来源可靠性判断。
同一个地址为什么在不同地方显示的大小写不同? 可能一方用了标准校验编码,另一方用了全小写展示。先按小写比较内容,再判断格式是否一致。
校验失败是不是说明地址是假的? 不能这样推断。它只说明当前字符串不符合 EIP-55 编码规则,地址本身可能仍然有效。正确做法是重新获取原始地址,而不是猜测并修改字符。
地址只差一个字母的大小写,转账有区别吗? 底层字节相同就没有区别。真正需要警惕的是小写形式出现字符差异,那已经是另一个地址。