Fundamentals ·

加密货币地址格式:Bech32、Base58 和 0x


如果您曾经复制过加密地址,注意到 Bitcoin 地址以 bc1 开头,Ethereum 地址以 0x 开头,而 Solana 地址看起来像是完全不同的语言,这并不奇怪。这些差异不仅仅是外观上的。每种地址格式都编码了关于区块链、支持的交易类型以及保护资金的错误检测机制的特定信息。

理解地址格式是实用知识。加密地址中的一个错误字符就可能永久性地将资金发送到虚空中。本指南分解了主要的编码方案,解释了每条区块链选择其格式的原因,并展示校验和如何防止代价高昂的错误。

为什么地址看起来不同

加密货币地址是公钥或由其派生的哈希的人类可读表示。原始加密输出是二进制数据,不适合人类阅读、复制或验证。不同的区块链选择了不同的编码方案来将二进制数据转换为文本字符串。

这些编码选择反映了以下方面的权衡:

  • 字符集安全性 —— 避免看起来相似的字符(0/O、l/1/I)
  • 错误检测 —— 内置校验和,在资金丢失之前捕获拼写错误
  • 空间效率 —— 更短的地址更容易处理
  • 大小写敏感性 —— 仅小写格式避免剪贴板混淆

加密货币中三个主要的编码家族是 Base58CheckBech32 和带有 0x 前缀的十六进制。每一种都源于区块链历史中特定时期的特定设计目标。

Base58Check:Bitcoin 传统格式

Base58Check 是最早的地址编码方案之一,由中本聪与 Bitcoin 一起引入。它使用 58 个字母数字字符,故意排除了导致视觉混淆的字符:

  • 没有零(0)—— 与字母 O 太相似
  • 没有大写 O(O)—— 与零太相似
  • 没有小写 L(l)—— 与大写 I 和数字 1 太相似
  • 没有大写 I(I)—— 与小写 l 和数字 1 太相似

Base58Check Bitcoin 地址示例:1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

该格式在开头包含一个版本字节,在末尾包含 4 字节校验和。版本字节告诉您地址类型:1 代表标准 P2PKH 地址,3 代表 P2SH 地址。校验和通过对负载运行两次 SHA-256 并附加结果的前 4 字节来计算。

这意味着如果您不小心输错一个字符,地址几乎肯定会验证失败,而不是将资金发送到错误但有效的地址。随机拼写错误产生有效校验和的概率约为四十三亿分之一。

其他几条区块链采用了 Base58Check,因为它经过验证且广为人知:

您可以使用 SafeSeed 的 Bitcoin 地址验证器在发送任何交易之前检查 Base58Check 地址的校验和是否有效。

Bech32:SegWit bc1 地址

2017 年,Bitcoin 引入了隔离见证(SegWit),需要新的地址格式。开发者没有扩展 Base58Check,而是创建了 Bech32,定义在 BIP173 中。Bech32 地址很容易识别,因为它们以 bc1 开头。

Bech32 地址示例:bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4

Bech32 对 Base58Check 做了几项有意的改进:

仅小写

Bech32 仅使用小写字母和数字。这消除了在口头传输、混合大小写字体打印或编码为 QR 码时的大小写敏感性问题。

更优越的错误检测

Base58Check 检测错误但无法告诉您错误在哪里。Bech32 使用 BCH 码,可以检测任何单字符错误和大多数多字符替换错误。它可以识别最多两个错误的位置,在某些钱包界面中可以进行纠正。

更小的 QR 码

因为 Bech32 使用受限字符集(32 个字符),表示这些地址的 QR 码明显更小且更容易扫描。

Bech32m

更新版本 Bech32m(BIP350)修复了原始 Bech32 格式中与最后一个字符相关的小弱点。现代 SegWit v1 地址(Taproot,以 bc1p 开头)使用 Bech32m。如果您使用 SafeSeed 的 Bitcoin 地址生成器生成地址,默认输出使用现代 Bech32/Bech32m 格式。

Litecoin 也采用了 Bech32 用于其 SegWit 地址,使用 ltc1 前缀。

0x:EVM 链地址

Ethereum 采取了完全不同的方法。Ethereum 地址是 20 字节的值,显示为 40 个十六进制字符,带有 0x 前缀:

0x742d35Cc6634C0532925a3b844Bc9e7595f2bD08

EIP-55 混合大小写校验和

原始的 Ethereum 地址格式没有内置校验和。EIP-55 通过使用十六进制字母的大写作为校验和来解决这个问题。地址用 Keccak-256 进行哈希,如果哈希中对应的半字节超过 8,则每个字母大写。

这就是为什么 Ethereum 地址具有看似随机的大写的原因。大小写字母的混合不是随意的;它是一种校验和。

跨 EVM 链共享

0x 格式在所有 EVM 兼容链上是相同的:

相同的私钥在所有这些链上产生相同的地址。有关 EVM 地址安全性的深入了解,请参阅 EVM 地址安全

您可以使用 SafeSeed 的 Ethereum 地址验证器验证任何 EVM 地址,包括其 EIP-55 校验和。

Solana、XRP 和 TRON 中的 Base58

Solana

Solana 地址是 Base58 编码的 Ed25519 公钥,通常 32 到 44 个字符长。Solana 使用与 Bitcoin 相同的 Base58 字母表,但不附加版本字节或 SHA-256 校验和。验证依赖于密钥是否为 Ed25519 曲线上的有效点。SafeSeed 的 Solana 地址验证器处理此验证。

XRP

XRP 使用 Base58Check 编码并带有自己的版本前缀,产生以 r 开头的地址。

TRON

TRON 地址使用带有 0x41 版本字节的 Base58Check,产生以 T 开头的地址。

校验和:您的安全网

校验和是从地址负载中派生的一小段数据,让软件能够检测错误。

以下是主要格式的校验和机制比较:

格式 校验和方法 检测能力
Base58Check 双重 SHA-256(4 字节) 检测几乎所有错误
Bech32 BCH 码(6 字符) 检测所有单字符错误;定位最多 2 个错误
EIP-55 (0x) Keccak-256 大写化 单字符变化约 99.98% 的错误检测率
Solana Base58 Ed25519 曲线验证 拒绝无效曲线点

校验和不能防止所有类型的错误。如果恶意软件用不同的有效地址替换您的整个剪贴板,校验和仍然会通过。校验和防止意外的拼写错误和传输错误,而非蓄意欺诈。

有关超越拼写错误的更广泛威胁,请参阅助记词相关常见加密骗局

发送前验证地址

每笔加密货币交易都应该以地址验证开始。SafeSeed 为最常见的链提供免费验证器:

所有验证完全在您的浏览器中使用客户端代码运行。没有地址数据传输到任何服务器。

有关验证过程的详细演练,请参阅如何验证加密地址

选择正确的格式

如果您要生成新地址,现代格式几乎总是首选:

  • Bitcoin:使用 Bech32(bc1)地址以获得更低的费用和更好的错误检测。
  • Ethereum 和 EVM 链:始终使用 EIP-55 校验和地址。
  • Solana:Base58 是唯一的选项,效果很好。

使用 SafeSeed 生成地址时,工具默认为每条区块链使用最新和最安全的格式。无论您使用 Bitcoin 助记词生成器还是 Ethereum 地址生成器,派生的地址都将使用该链推荐的编码。

了解这些格式消除了加密货币地址的神秘感。它们不是随机字符串——而是经过精心设计的加密密钥表示,具有内置的安全机制,旨在保护您的资金免受简单的人为错误。