地址检查 · 免费

加密钱包地址验证器

转账前检查比特币或以太坊地址。0x 地址用 EIP-55 校验和,1 和 3 开头的地址用 Base58Check,bc1q 用 bech32,taproot 用 bech32m,并指出未通过的检查和出错的字符。

在你的浏览器中检查 · 不查询、不连接钱包、不上传

格式正确。以太坊及所有 EVM 链,EVM 账户或合约。EIP-55 校验和相符。

要检查的地址

按收到时的原样粘贴

空格和换行会被去除,bitcoin: 或 ethereum: 支付链接会被拆开,取出其中的地址。

结论
格式正确

以太坊及所有 EVM 链 · EVM 账户或合约。格式正确是指这个字符串内部一致,并不代表该地址存在,也不代表它属于某个特定的人。

网络
以太坊及所有 EVM 链
格式
Hex,20 字节
类型
EVM 账户或合约
字符数
42
EIP-55
校验和相符
  • 所有 EVM 链都使用这种地址格式,所以有效的地址无法告诉你资金在哪条链上。
  • 这是合约还是普通账户属于链上状态,无法从字符串中看出来。
解码结果

文本之下的字节

地址是对二十或三十二个字节的编码,外加一个说明如何花费它们的标签。下面就是这些字节。

账户字节
5aaeb6053f3e94c9b9a09f33669435e7ef1beaed
带校验和的形式(未改动)
0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed
通过检查能证明什么

这个字符串内部一致

  • 所有字符都属于该格式使用的字母表。
  • 长度与前缀声明的地址类型相符。
  • 地址内置的校验和与其余部分吻合。
  • 有效载荷解码后的字节数与该类型相符。
它不能证明什么

有效的地址仍可能是错的地址

  • 该地址存在于任何链上,或有人持有它的密钥。这里不进行任何查询。
  • 它属于你要付款的人。校验和根本不知道你想发给谁。
  • 它在你以为的那条链上。所有 EVM 链都使用 0x 格式,发到错误链上的资金通常就找不回来了。
  • 它没有被调包。剪贴板劫持恶意软件会把收款人换成另一个有效地址,而它能通过本页的所有检查。

校验和能发现输入错误,却发现不了替换。防范替换的方法是通过你信任的第二个渠道核对地址,比对整个字符串而不只是开头和结尾的四个字符;金额较大时,先发送一笔小额测试转账。

前缀参考

开头几个字符告诉你什么

前缀不是装饰:它编码了网络和脚本类型,并且受校验和保护,所以无法通过修改前缀让地址指向别处。

地址前缀、每种前缀编码的网络和类型,以及通常的长度
开头网络编码类型字符数含义
1比特币主网Base58CheckP2PKH26 至 34最早的地址类型,存放单个公钥的哈希。版本字节为 0x00,编码后以 1 开头。
3比特币主网Base58CheckP2SH34支付到脚本哈希:多签,以及原生 segwit 被广泛接受之前钱包使用的嵌套 segwit。版本字节为 0x05。
bc1q比特币主网bech32P2WPKH 或 P2WSH42 或 62原生 segwit,见证版本 0。四十二个字符是单个密钥(20 字节程序),六十二个字符是脚本(32 字节程序)。
bc1p比特币主网bech32mP2TR62Taproot,见证版本 1。它必须带有 BIP-350 的 bech32m 校验和,而不是 bc1q 使用的 bech32 校验和。
0x以太坊及所有 EVM 链Hex账户或合约42二十个字节写成四十个十六进制字符。大小写混合即 EIP-55 校验和;全部同一种大小写则表示没有校验和。
tb1比特币测试网和 signetbech32 或 bech32mSegwit42 或 62测试网前缀。真正的比特币不可能发送到 tb1 地址,因为主网节点会拒绝它。
m比特币测试网Base58CheckP2PKH26 至 34版本字节为 0x6f。测试网密钥地址以 m 或 n 开头,取决于后面的哈希。
n比特币测试网Base58CheckP2PKH26 至 34与 m 相同的版本字节 0x6f。出现哪个字母由有效载荷决定,而不是由地址类型决定。
2比特币测试网Base58CheckP2SH35版本字节为 0xc4,对应主网中 3 开头的地址。

本页的每项检查都是对你眼前这个字符串的运算,使用 Keccak-256、SHA-256 和 bech32 多项式计算,全部在页面内实现。不会向任何服务器发出请求。

工作原理

地址本身就带有它被正确输入的证明。

如今使用的每种地址格式都内置了检错码。Base58Check 在有效载荷后附加对其做双重 SHA-256 得到的四个字节;bech32 和 bech32m 附加一个六字符的 BCH 码,足以发现字符串中任意位置的四个错误字符;EIP-55 则把 Keccak-256 校验和藏在 EVM 地址的字母大小写里,这在链上不花任何成本,复制粘贴后也不会丢失。这些都不需要区块链,所以验证可以完全在这个标签页里完成。但它们都无法告诉你这个地址属于谁,正因为存在这个缺口,下面坦诚列出的局限才和上面的结论同样重要。

  1. 01

    按收到时的原样粘贴地址

    空格和换行会被去除,bitcoin: 或 ethereum: 支付链接会被拆开,取出其中的地址。不要手动重新输入地址:输入错误正是在重新输入时混进来的,而校验和的意义就在于发现你没注意到的那个错误。

  2. 02

    查看结论及其原因

    通过时会显示网络、脚本类型和底层字节。未通过时会指出哪项检查失败,并高亮字符串中第一个出错的字符,让输错的地址可以被诊断,而不只是被拒绝。

  3. 03

    通过第二个渠道确认地址

    校验和能发现输入错误,却无法发现替换,而替换正是剪贴板恶意软件的手法。请把整个字符串与你信任的来源比对,而不只是看开头和结尾几个字符;金额较大时,先发送一笔小额测试转账。

在你按下发送之前

指明失败原因、两种 bech32 常量,以及坦诚的局限。

0x 地址有四种结果,而不是两种

全小写的 EVM 地址格式正确,但完全没有防护:其中没有任何东西能发现输入错误。全大写的地址也一样。大小写混合才是 EIP-55 校验和,它要么与地址的 Keccak-256 哈希相符,要么不符。本页会区分这四种情况,因为有效与无校验和之间的差别,就是安全粘贴与抛硬币之间的差别。

bech32 和 bech32m,按版本使用正确的常量

bc1q 地址必须以 BIP-173 最初的校验和结尾,bc1p taproot 地址必须以 BIP-350 的 bech32m 校验和结尾。为见证版本用错常量是这类代码的经典错误,所以两者都已实现,并都用公开的测试向量测试过,包括 BIP 正是为此特意提供的混用用例。

失败时指明检查项和字符

校验和错误、被排除的字符、bech32 字符串中大小写混合、长度与前缀不符、未知的版本字节、无法识别的人类可读部分:每种情况都会返回各自的消息,格式允许时还会给出位置。只回答是或否的验证器,会让你自己去找输入错误。

Base58Check 一直检查到版本字节

1 开头的地址带有版本 0x00,3 开头的地址带有 0x05,并用四字节的双重 SHA-256 校验和验证。校验和有效但版本字节属于其他币种时,会得到单独的答复,因为把 Litecoin 地址粘贴到比特币输入框,与输错地址是不同的错误,应该给出不同的提示。

适用于付款清单的批量模式

最多粘贴两百个地址,即可得到一张逐行说明原因的表格,并统计重复项,而重复正是手工拼凑的付款文件最容易出的问题。所有内容都留在标签页中,所以客户地址清单不会为了检查而被上传到任何地方。

不查询、不连接钱包、不获取价格

这里的每项检查都是对你眼前这个字符串做运算。没有区块浏览器请求,没有 RPC 调用,不连接钱包,也不会以任何形式生成密钥或助记词。这是有意设定的限制,也正因如此,本页才能坦诚说明通过检查能证明什么、不能证明什么。

地址问题

校验和、链、前缀,以及通过检查不能证明的事。

在这里,地址有效到底意味着什么?+

意味着这个字符串格式正确且内部一致:字符属于正确的字母表,长度与前缀声明的类型相符,地址内置的校验和与其余部分吻合。仅此而已。它不代表这个地址存在、有人持有它的私钥、它曾收到过资金、它在你以为的那条链上,或者它属于你要付款的人。这些问题不询问节点都无法回答,而本页不询问任何东西。

为什么全小写的以太坊地址仍然能通过?+

因为它是有效地址,只是没有防护。EIP-55 把校验和藏在字母大小写里,所以全部用同一种大小写书写的地址根本不带校验和,其中输错一个字符也完全不会被发现。这就是本页给出四种结果而不是两种的原因:全小写和全大写标记为无校验和,大小写混合的地址会用 Keccak-256 哈希验证,而未通过验证的大小写混合地址会被标记为输入错误或被篡改。如果可以选择,请始终传播带校验和的形式。

我的 0x 地址在哪条链上?+

所有 EVM 链都使用同样的二十字节地址格式,所以字符串本身无法告诉你。以太坊、Arbitrum、Optimism、Base、Polygon、BNB Chain 等都接受同一个地址,同一把私钥在所有这些链上都控制着它。这很方便,直到出问题为止:把代币发到正确的地址却选错了链,是最常见的资金丢失方式之一,而任何验证器都无法提醒你,因为地址本身没有任何问题。请在钱包里确认网络,而不是看地址。

能告诉我这是合约还是普通钱包吗?+

离线做不到。外部账户与合约的区别在于该地址是否存有代码,这是链上状态,而不是字符串中编码的内容。区块浏览器可以告诉你,而这一点很重要:把代币发送到并非为接收代币而编写的合约,是众所周知的永久丢失代币的方式。

bc1q 和 bc1p 有什么区别?+

bc1 后面的字符是见证版本。q 表示版本 0,即原生 segwit:单个密钥为四十二个字符,脚本为六十二个字符。p 表示版本 1,即 taproot。它们使用的校验和也不同。版本 0 使用 BIP-173 最初的 bech32 常量,版本 1 及以上使用 BIP-350 的 bech32m。这一变化是有意为之:只认识 bech32 的旧钱包会拒绝 taproot 地址,而不是悄悄把它弄错。所以这里两种常量都已实现,常量不匹配会作为单独的错误报告。

为什么比特币地址里没有 0、O、I 和 l?+

Base58 就是去掉了易混淆字符的 Base64。在许多字体中,数字零和大写 O 看起来很像,大写 I 和小写 l 也一样;而 Base64 中的加号和斜杠在双击选中地址或把地址放进 URL 时会出问题。Bech32 用另一种方式做了同样的取舍:从字母表中去掉 1、b、i 和 o,并且全部使用小写。这也是 bech32 地址从不大小写混合的原因:校验和是基于单一大小写计算的,所以大小写混合的字符串根本无法验证。

校验和通过了,我却发到了错误的地址。这是怎么回事?+

几乎可以肯定是被替换了,而不是输入错误。剪贴板劫持恶意软件会监视任何看起来像地址的内容,并替换成攻击者自己的地址,而那是一个完全有效的地址,能通过本页的所有检查。地址投毒攻击的原理类似:在你的交易记录里植入一个相似的地址,让你之后从错误的那一行复制时,地址依然能通过验证。校验和只能发现损坏,永远发现不了调包。防范方法是通过其他渠道核实地址,比对整个字符串而不只是开头和结尾的四个字符,并先发送一笔小额测试转账。

支持 Litecoin、Dogecoin、Solana 或 Monero 吗?+

不作为有效目标,但能识别到足以说出名称的程度。Litecoin 地址会被解码为 Base58Check,但版本字节不是比特币的;ltc1 地址的人类可读部分不是 bc。所以两者都会返回它们所属的链,而不只是简单拒绝。Solana 和 Monero 使用完全不同的编码,会显示为无法识别的格式。本页验证的是比特币和 EVM 链。

如果我粘贴了私钥或助记词会怎样?+

WIF 私钥会通过其版本字节被识别出来,并被拦下给出警告而不是结论,因为这个字符串可以花掉你的币,绝不应输入任何网站,包括本站。无论如何都不会传输任何内容,因为本页不发出任何请求,但安全习惯必须毫无例外:收款地址是公开的,可以粘贴到任何地方,而私钥或助记词只应输入到你自己的钱包软件中。本工具从不生成密钥、助记词或地址,只读取你粘贴的内容。

检查地址时会上传任何内容吗?+

不会。Keccak-256、SHA-256 和 bech32 多项式都在页面内实现,所以验证是在你的标签页中运行的纯运算。没有区块浏览器查询,没有 RPC 端点,不对输入做分析统计,也不连接钱包。一批两百个客户地址在检查时不会有任何一个离开你的电脑,这正是使用本地验证器、而不是把付款清单粘贴到搜索框里的主要理由。

更多专注好用的工具,随时待命。

探索不断扩充的工具合集,涵盖计算、文档、写作和日常工作。

浏览全部工具