地址校验和是什么?为什么粘错一个字符会报错 图 1
地址校验和是什么?为什么粘错一个字符会报错 · 图 1

一句话理解

地址校验和,是地址末尾附带的几位检错码:软件在发起转账前重算一遍,发现对不上就拦截。它的作用不是防盗,而是防手滑——复制漏了字符、改错一位、混用了别的链的地址格式,校验都会当场报错。

比特币:Base58Check

传统比特币地址用 Base58 编码,把二进制数据写成不含 0、O、I、l 等易混字符的字母数字串;末尾四位是校验和,算法是把地址主体数据连同版本前缀做两次 SHA-256,取前四个字节附上。粘贴时丢一位、换一位,重算值就对不上,钱包直接拒绝。新一点的 bech32 格式采用了另一族检错码,检错能力更强;隔离见证带来的地址格式演进背景见 BIP-141隔离见证改变了什么?,地址家族的完整区分见 比特币地址类型是什么?

以太坊:混合大小写

以太坊地址是 40 位十六进制、本身没有附校验段,检错靠 EIP-55 checksum:把地址转小写后取哈希,用哈希结果决定每个字母字母大写还是小写。合法地址的大小写模式是唯一的,改动任何一位都会让大小写和重算结果矛盾。因此钱包能区分两种情况:全小写地址(旧格式,可接受但不验大小写)和混合大小写但拼错(直接拦截)。一个细节:十六进制里只有 a 到 f 六个字母参与大小写,数字位不参与,所以手滑改错一个纯数字位时,检错概率会下降——校验和不是万能的。

校验通过的三种盲区

第一,格式对≠链对:一个合法的比特币地址与合法的 BCH 地址结构相似,检错码拦不住“发到另一条链”的误操作,跨链错转要靠人工核对网络与币种,跨链转账常识见 跨链是什么?不同公链之间怎么转账。第二,校验防不了“中间人换地址”:如果剪贴板被恶意软件监控,复制与粘贴之间地址可被悄悄替换,且替换后的往往是格式合法的地址——所以大额转账必须核对链上显示的收款地址原文,不能只看余额截图。第三,它不证明地址归属:校验和只回答“这个字符串像不像合法地址”,不回答“这个地址是不是你要付的人的”,详见 加密货币钱包地址怎么生成?转账前注意什么

一个常见真实场景能把三种盲区串起来看:你在聊天窗口里收到一串混合大小写的地址,复制后在钱包粘贴、系统弹出一闪而过的改名提示。此时校验和大概率沉默——地址本身合法;防住它的只能是流程:从官方渠道重新取一次地址、比对完整字符串而不只是头尾几段、大额先做小额测试并确认对方确实收到。校验和的职责边界就到这里:它管“像不像一个地址”,你永远要自己管“是不是他的地址”。

实用结论

把校验和当成“最后一道自动保险”而不是全部流程:小额测试转账 + 链上地址逐字核对 + 官方渠道取址,三者叠加才是可靠的转账习惯。

再补一个容易被反问的细节:既然校验和只能拦“碰巧不合法”的错误,为什么还值得依赖?因为手滑错误的绝大多数形态——漏字符、多字符、顺序颠倒、混入邻串——都会破坏编码结构,只有“重算后恰好撞上原校验值”才会漏网,而这本质是撞哈希。Base58Check 末尾附带四个字节(三十多个二进制位)的校验值,凭空撞中的量级约为四十二亿分之一;EIP-55 不附加任何字段,只靠地址字母的大小写模式做检错,一个典型地址里可参与编码的字母位所能携带的信息明显少于前者,所以“检错强得多”是附加字段式的 Base58Check,EIP-55 只能算够用。这正是“为什么粘贴必须肉眼复核末尾与整体”的原因:机器替你挡掉了绝大多数,你的眼睛负责它数学上管不到的那一小块。

风险提示

本文仅为信息与教育内容,不构成任何投资建议。转账操作请以钱包与交易所当前界面提示为准,警惕任何形式的地址替换与钓鱼页面。