比特币地址是带网络标识和 checksum 的标准锁定脚本表示。P2PKH/P2SH 使用 Base58Check,SegWit v0 使用 Bech32,witness v1–16 使用 Bech32m。地址不保存 bitcoin,也不证明身份;UTXO 由脚本锁定。
交易输出只含金额和 scriptPubKey 字节,不含地址文本。钱包验证网络/checksum 后生成标准脚本;区块浏览器仅把可识别脚本反向显示为地址。早期 P2PK 或非标准脚本未必有唯一规范地址。 [Bitcoin whitepaper — Transactions and Privacy] [Bitcoin Core — destination encoders and decoders]
Base58Check 在版本与 payload 后加入 SHA256(SHA256(数据)) 的前四字节,再做 Base58 编码。mainnet 的 0x00=P2PKH、0x05=P2SH,常以 1、3 开头;测试网不同。字母表排除 0/O/I/l。32 位 checksum 可查错,却不是签名或认证。 [Bitcoin Core — Base58Check implementation] [Bitcoin Core — destination encoders and decoders]
Bech32 包含 HRP bc/tb、分隔符 1、witness 版本、5 位数据和六字符 checksum。BIP173 只适用 v0;发现插入缺陷后,BIP350 要求 v1–16 用 Bech32m。大小写只能统一,不能混用,最长 90 字符。编码有效仍可能网络错误或版本不受支持。 [BIP 173 — Base32 address format for native v0 witness outputs] [BIP 350 — Bech32m format for witness v1 and later]
P2PKH/P2WPKH 承诺公钥的 HASH160;P2SH 承诺 redeemScript 的 HASH160;P2WSH 承诺 witnessScript 的 SHA256。BIP141 v0 仅识别 20 字节 P2WPKH 与 32 字节 P2WSH。P2TR v1 则是 32 字节 tweaked x-only output key Q,并可承诺脚本 Merkle 根;地址不展示完整策略。 [BIP 141 — Segregated Witness consensus layer] [BIP 341 — Taproot validation and output keys]
P2PK 直接公开公钥,P2PKH 延至花费。BIP13/16 引入 P2SH,BIP141/173 引入版本化 witness 与 Bech32 v0,BIP341/350 引入 Taproot v1 与 Bech32m。这是脚本/共识变化,不是外观变化;手工‘转换’可能改变条件或造成不可花费输出。 [BIP 13 — Address Format for pay-to-script-hash] [BIP 16 — Pay to Script Hash] [BIP 141 — Segregated Witness consensus layer] [BIP 173 — Base32 address format for native v0 witness outputs] [BIP 350 — Bech32m format for witness v1 and later] [BIP 341 — Taproot validation and output keys]
BIP32 从根派生多把钥匙。BIP44 用 purpose 44' 表示 P2PKH,BIP84 用 84' 表示 P2WPKH,BIP86 用 86' 表示 P2TR,随后区分账户、external/change 和 index。seed 未必保存脚本类型、路径、账户或 multisig。Output descriptors 更完整,恢复必须实测。 [BIP 32 — Hierarchical deterministic wallets] [BIP 44 — Multi-account hierarchy] [BIP 84 — Derivation for native P2WPKH] [BIP 86 — Derivation for single-key P2TR] [Bitcoin Core — Output descriptors]
P2PKH/P2WPKH 花费时通常公开公钥;P2SH/P2WSH 公开 redeemScript/witnessScript。P2TR 已含 tweaked x-only key:key path 仅展示 Schnorr 签名,script path 展示 leaf、control block 与 Merkle path,未使用 leaf 可隐藏。因此‘地址隐藏公钥’并非总是成立。 [BIP 141 — Segregated Witness consensus layer] [BIP 341 — Taproot validation and output keys]
复用地址会连接收款并加强 clustering;钱包应生成新 external 地址,把找零发往 internal branch。但地址不是人:可多人控制、一人有千个、托管方汇集资金。浏览器的 address ‘balance’是匹配脚本的未花费输出之和,不是共识账户;common-input/change 只是会失败的启发式。 [Bitcoin whitepaper — Transactions and Privacy] [Bitcoin Core — Output descriptors]
软件应检查 checksum、网络、大小写和 v0/Bech32 与 v1+/Bech32m。剪贴板恶意软件或假 QR 仍可替换成另一个完全有效地址。大额支付应在可信硬件屏幕核对完整字符串并考虑小额测试;只看首尾可被 look-alike 欺骗。确认后的错误脚本付款无法协议撤销。 [Bitcoin Core — Base58Check implementation] [BIP 173 — Base32 address format for native v0 witness outputs] [BIP 350 — Bech32m format for witness v1 and later]
裸地址不同于可含 amount/label/message 的 BIP21 bitcoin: URI,也不同于 Lightning invoice、offer 或 Lightning Address。BIP322 只能按规则证明脚本控制,不证明身份或所有资产。复杂策略备份应使用 descriptor 或钱包原生导出。 [BIP 21 — URI scheme] [BIP 322 — Generic signed message format] [Bitcoin Core — Output descriptors]
要获得更完整的理解,请将本词条与以下词条结合阅读: 私钥, 钱包, 找零输出, Bitcoin, SegWit, Taproot. 反向关联还来自: 密码学哈希, SHA-256, Cold Storage, Watch-only Wallet.