3P9MeMMeyMh…aKTez5Qrn —— P2SH (Pay to Script Hash) —— 比特币地址分析器
粘贴任意比特币地址:本页会校验它、给出它的精确类型、重建它对应的脚本、推导出与它共用同一把密钥的其它地址,然后从公开区块浏览器读出它的余额与转账记录。
转换结果
校验
本节的每一项都只由字符串本身算出,不访问网络。
结构拆解
这串字符按字节看究竟装了什么。
SHA256(SHA256(payload)) 的前 4 字节。兄弟地址
能否从本地址推导出其它地址。
hash160(redeemScript),所以密钥哈希根本不在字符串里。这是刻意设计的:正因如此,Taproot 输出才能隐藏它的花费条件,P2SH 地址也才能承诺任意复杂的脚本。链上数据 —— 由本服务器从公开区块浏览器抓取
这部分是第三方给出的说法,不是算出来的事实。下面每项都会注明是哪个浏览器回答的。
https://mempool.space/api · 查询时间 2026-10-09 23:33:51 UTC实时余额 —— 由你的浏览器当场查询
这一块由你浏览器里的 JavaScript 直接联系公开区块浏览器后填入。这里的数据不经过本服务器 —— 所以在服务器没网时它依然可能成功,也所以如果中间有新块产生,这里的余额可能与上面不同。
本页做什么 —— 以及每个答案是从哪里来的
关于一个地址,可以问两类本质不同的问题,本页刻意把它们分开:
| 问题 | 由谁回答 | 需要联网吗 |
|---|---|---|
| 这串字符是合法地址吗? | 本服务器上的纯计算 | 不需要 |
| 它是什么类型,对应哪段脚本? | 本服务器上的纯计算 | 不需要 |
| 还有哪些地址与它共用同一把密钥? | 本服务器上的纯计算 | 不需要 |
| 它的余额和转账记录是什么? | 公开区块浏览器 | 需要 |
前三项是从字符串本身推出来的事实,永远不会错。第四项是第三方给出的说法,本页会注明是哪个 浏览器说的。没有网络时,前三项照样完全可用,第四项会如实说明拿不到。
1. 比特币地址究竟是什么
地址不是密钥、不是账户、也不是钱包。它只是某个花费条件的一种带校验和的简短编码 —— 严格说,是对「未来某笔交易必须满足的脚本」的一个承诺。区块链上根本不存地址:它存的是被脚本锁住的 输出,地址只是把特定脚本写成人能抄下来的样子。
这个区别能解释大部分让人困惑的现象:
- 没有人「拥有」一个地址。谁能满足那段脚本,谁就能花掉这个输出。
- 一个地址可以在无人持有其私钥的情况下收到钱 —— 销毁地址就是如此。
- 钱包不「装」地址;它装的是密钥,并能从密钥重新生成地址。
2. 两种编码家族
比特币写下一个地址只有两种方式,区分它们就是本页做的第一件事:
| Base58Check | Bech32 / Bech32m | |
|---|---|---|
| 长相 | 1…、3… | bc1q…、bc1p… |
| 字母表 | 58 个字符 —— 去掉了 0、O、I、l | 32 个字符 qpzry9x8gf2tvdw0s3jn54khce6mua7l |
| 版本信息 | 一个字节前缀(0x00、0x05…) | 可读部分(bc)加一个 5 位 witness 版本 |
| 校验和 | SHA256(SHA256(payload)) 的前 4 字节 | 覆盖整串的 6 字符 BCH 码 |
| 能检出 | 几乎必然检出任意单字符错误 | 任意 4 个错误;更长连续错误有公布的保证 |
| 大小写 | 区分大小写 | 必须全小写或全大写,混用按设计即为非法 |
| 引入时间 | 2009 年最初的客户端 | BIP173,2017 年(SegWit) |
Base58 的字母表去掉 0、O、I、l,正是因为它们是人从纸上
抄写时最容易混淆的字符。bech32 更进一步:禁止大小写混用,把一整类抄写错误变成了硬失败。
3. 地址类型,以及每种类型承诺了什么
这正是「有些地址能互相推导、有些不能」的根源。每个地址都承诺唯一一段 20 字节或 32 字节的值, 但这段值是什么,取决于类型:
| 类型 | 前缀 | 承诺的是 | scriptPubKey | 大小 |
|---|---|---|---|---|
| P2PKH | 1… | hash160(公钥) | OP_DUP OP_HASH160 <20B> OP_EQUALVERIFY OP_CHECKSIG | 25 B |
| P2SH | 3… | hash160(redeemScript) | OP_HASH160 <20B> OP_EQUAL | 23 B |
| P2WPKH | bc1q…(20 B) | hash160(公钥) | OP_0 <20B> | 22 B |
| P2WSH | bc1q…(32 B) | SHA256(witnessScript) | OP_0 <32B> | 34 B |
| P2TR | bc1p… | 调整后输出公钥的 x 坐标 | OP_1 <32B> | 34 B |
3… 地址只告诉你某段脚本的哈希,别的什么也没说 —— 它可能是嵌套 SegWit、多签,也可能是
时间锁。bc1q… 且程序为 32 字节的地址,告诉你的也是脚本哈希。bc1p… 地址告诉你的
是一个点。这三者都无法反推出「同一把密钥的其它地址」,因为密钥的哈希根本不在里面。只有 P2PKH 和
P2WPKH 携带 hash160(公钥),因此可以互相转换。
4. 兄弟地址:一把密钥,多个地址
因为 P2PKH、P2WPKH 与 P2SH-P2WPKH 承诺的都是同样那 20 字节(压缩公钥的哈希), 知道其中任意一个就等于知道了另外两个。这不是安全缺陷,只是同一个承诺写成了不同的脚本。
但在实践中它极其重要。最经典的灾难是:币躺在 P2PKH 地址上,而手上的钱包只看 P2WPKH 地址 (或者反过来,或者主网对测试网)。钱包显示余额为零,用户就以为钱没了。币通常都还在, 而查看兄弟地址正是找回它们的方法。
| 地址 | 类型 | 同一把密钥? |
|---|---|---|
1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH | P2PKH 主网 | 是 |
3JvL6Ymt8MVWiCNHC7oWU6nLeHNJKLZGLN | P2SH-P2WPKH 主网 | 是 |
bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4 | P2WPKH 主网 | 是 |
mrCDrCybB6J1vRfbwM5hemdJz73FwDBC8r | P2PKH 测试网 | 是 |
2NAUYAHhujozruyzpsFRP63mbrdaU5wnEpN | P2SH-P2WPKH 测试网 | 是 |
tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx | P2WPKH 测试网 | 是 |
上面六行都是同一把私钥。其中两个在测试网上,那是完全不同的网络 —— 币无法跨网转移, 但同一把密钥同时控制两边。
推导出兄弟地址,只说明「那把密钥会产生哪些地址」。它不能证明某个兄弟地址曾被使用过,也不能告诉你 谁掌握着那把密钥。注意这一家人的余额差异有多大 —— 一个空空的主网地址旁边躺着一个有余额的测试网地址, 是再正常不过的事。
5. 「校验通过」意味着什么,又不意味着什么
本页会检查校验和、字符集、长度、版本字节或 witness 版本、程序长度、大小写规则与补零规则。 全部通过只说明一件事:这串字符是一个格式良好的地址,没有任何比特币节点会因为格式问题 拒绝它。
它不意味着:
- 有人能花掉它 —— 销毁地址的校验和完美通过;
- 它是你的,或者它被使用过;
- 它就是你想输入的那个地址。校验和能以很高概率抓出笔误,但它只是检测器,不是纠错器。 如果某个笔误恰好也落在另一个合法校验和上,结果就是一个完全合法、但属于别人的地址 —— 转进去的钱就没了。Base58Check 的 4 字节让每次随机损坏大约只有四十亿分之一的概率漏网; bech32 的编码有更强的公开保证,并且还能拒绝 Base58 只能「错误编码」的大小写混用失误。
6. 正确理解「余额」
比特币里没有「余额」这个字段。存在的是「未花费输出」的集合,每一个都被某段脚本锁住。地址余额是把 支付给它的未花费输出加起来算出来的:
由此有三个推论,本页把其中的组成部分分开显示,方便你自己核对:
- 累计收到可能远大于当前余额。一个被清空过上百次的地址会显示很大的累计收到和零余额 —— 这是正常的,不是 bug。
- 未确认的输出在内存池里,不在区块里。它们被看到的那一刻就计入余额,但如果交易被替换或 丢弃,它们也会消失。
- 确认数等于
链尖高度 − 该交易区块高度 + 1。只有个位数确认时,重组仍可能把 这笔交易踢出去。六个确认是传统上的经验阈值,不是规则。
7. 如何阅读交易列表
本页显示的记录是从「这个地址」的视角写的。每一笔交易都会算出该地址收到多少、花出多少,以及净效果:
| 方向 | 含义 |
|---|---|
| 转入 in | 有输出付给这个地址,且没有输入来自它。 |
| 转出 out | 有输入花掉这个地址的输出,且没有钱回到它这里。 |
| 自身/净额 | 两边都涉及这个地址 —— 归并、找零,或自己转给自己。 |
其它几列值得说明:
- 手续费由「谁的输入被消耗」来决定,所以严格说只有转出交易的手续费才算「你的」。 本页每一行都显示它,因为它确实是交易本身的属性。
- vBytes 等于
重量 ÷ 4,手续费真正按这个计价。见证数据享受四倍折扣, 这正是 SegWit 与 Taproot 输入更便宜的原因。 - 对手方是这笔交易里的其它地址 —— 你转出时是收款方,你转入时是付款方。一整行没有任何
对手方,通常说明输出是数据载体(
OP_RETURN),它不承载任何币,也就没有地址。 - 公钥是否已暴露。 一个地址一旦花出过,它的公钥就被永久写在链上。在那之前, P2PKH/P2WPKH 地址只由哈希保护。本页会明确报告该地址是否花出过,因为仅仅这一个事实就改变了它的 抗量子画像。
兼容 Esplora 的浏览器单次最多只返回某个地址最近 50 笔交易。本页请求的数量更少,并单独给出交易总数, 所以繁忙地址会显示成「172 笔中的 25 笔」。要翻阅多年历史,那是完整浏览器网站的活儿 —— 页面底部的链接就是通往那里。
8. 隐私:谁知道了你在查
校验全部发生在本服务器上。链上查询则不是,而且有两条不同的路径:
服务端查询(概要与交易表)
由本服务器发起请求。你的浏览器 IP 不会暴露给区块浏览器 —— 但本服务器和那家浏览器都会知道 你关心的是哪个地址。
浏览器端查询(实时余额区块)
下面的 JavaScript 在你的浏览器里运行,直接联系区块浏览器,所以你的 IP 对那家浏览器可见, 但本服务器完全看不到这次查询。把「链上数据」选项关掉即可彻底禁用第一条路径。
无论走哪条路,查询地址都是一次隐私泄露:问一个地址,就把你和这个地址关联了起来。每次付款都复用同一个 地址,等于把全部财务历史公开给任何来看的人;而拿自己的地址去问公共 API,等于告诉那家 API 的运营者你持有什么。 如果这让你介意,就自己跑一个节点,在本地查询。
9. 特殊地址与不可花费地址
有些地址足够有名,值得被认出来,本页会给它们打标签:
| 地址 | 它是什么 |
|---|---|
1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa | 创世区块 coinbase 输出 —— 最早的 50 BTC,从未被花掉。 |
1BitcoinEaterAddressDontSendf59kuE | 一个刻意的销毁地址,没人持有它的私钥。 |
1111111111111111111114oLvT2 | hash160 全零的地址。实际上无法花费:要花它需要一个哈希恰好是二十个零字节的公钥。 |
销毁币是一种真实存在的手法 —— 有些协议正是靠它做出一个永远无法赎回的承诺。当然,它同样不可撤销。
10. 速查表
| 项目 | 取值 |
|---|---|
| 主网 P2PKH / P2SH 前缀 | 0x00 → 1… / 0x05 → 3… |
| 测试网 P2PKH / P2SH 前缀 | 0x6F → m…/n… / 0xC4 → 2… |
| bech32 的 hrp | bc 主网,tb 测试网,bcrt regtest |
| witness 程序长度 | 2–40 字节;v0 必须恰好 20(P2WPKH)或 32(P2WSH) |
| 校验和常量 | v0 用 1(bech32),v1+ 用 0x2bc830a3(bech32m) |
| 地址长度上限 | bech32 为 90 个字符,Base58 主网约 34–35 个 |
| 可推导兄弟地址的类型 | 只有 P2PKH 与 P2WPKH(它们携带 hash160(公钥)) |
| 浏览器单次交易上限 | 每个地址最近 50 笔 |