⽐特币地址是⼀个标识符(帐号),地址可以以QR码形式表⽰,是匿名的,不包含关于所有者的信息。
⼤多数⽐特币地址(P2PKH,P2SH)是34个字符。它们由随机数字和⼤写字母及⼩写字母组成,除了⼤写字母“O”,⼤写字母“I”,⼩写字母“l”,数字“0”不⽤于防⽌视觉模糊。
另外注意以 “tb1” 开头的地址是比特币测试网(Testnet)中使用的Bech32地址格式。
地址⽰例:
14qViLJfdGaP4EeHnDyJbEGQysnCpcn3eb;
bc1pqe4lwletu54tcrg86xa6shtyh7wazes9ps5u4ddcvzqxn9fzh8ysuxopit;
比特币地址主要分为四种格式:
- Legacy(P2PKH,「最早的」传统地址)
- P2SH (Nested SegWit P2SH,「嵌套」隔离见证地址)
- Native SegWit (Bech32,「原生」隔离见证地址)
- Taproot (主根地址)
但是本文会将他们按照以下五种去讲解:
- Legacy(P2PKH,「最早的」传统地址)
- P2SH (支付脚本哈希地址,「第二早」传统地址)
- Nested SegWit P2SH (「嵌套」隔离见证地址)
- Native SegWit (Bech32,「原生」隔离见证地址)
- Taproot (主根地址)
Legacy(P2PKH,「最早的」传统地址):
这类地址是传统比特币地址,也叫遗留地址 或 支付公钥哈希(P2PKH)地址,是最早的比特币地址。P2PKH 是 Pay-To-PubKey-Hash(支付至公钥哈希)的缩写。因为在 2009 年比特币推出时,其生成方式是从公钥/私钥对的生成开始,在当时,这是创建地址的唯一方法。今天,这类型的地址在交易中使用最多的空间,因此也是最昂贵的地址类型。不过这类地址很容易识别,因为这些地址都是以“1”开头的。P2PKH地址的长度为34个字符。
示例:1KN6nSiMiSBjLnQhGykGzM831Mni96pE3v
目前大家只会在使用一些与新地址不兼容的旧钱包时才会使用这种类型的地址。
P2SH (支付脚本哈希地址,「第二早」传统地址)
P2SH地址最早在2012年由Gavin Andresen引入比特币协议中。P2SH 是 Pay-to-Script-Hash(支付至脚本哈希)的缩写。它的设计目的是为了支持多重签名(multisig)和其他复杂的脚本类型,提供更高的灵活性和安全性。P2SH地址的格式以"3"开头,并由Base58编码生成,P2SH地址的长度为34个字符。P2SH 地址不直接将公钥哈希存储在地址中,而是存储一个脚本哈希。通过提供与生成脚本对应的解锁脚本,可以花费 P2SH 地址上的比特币。
请注意这里的支持脚本的能力,这是它被设计出来的原因和和下边讲的嵌入隔离见证技术的基础。
同时,P2SH地址的开头字符“3”不受地址中包含的脚本类型(包括SegWit或非SegWit)的影响。
P2SH地址的优点在于上边说到的提供了更大的灵活性和安全性。通过使用多重签名脚本,可以实现多个私钥的管理和控制,从而增加了比特币的安全性。此外,P2SH地址还支持其他复杂的脚本类型,如时间锁定脚本(Timelock Script)和跨链原子交换脚本(Atomic Swap Script),为比特币的应用和扩展提供了更多的可能性。
值得注意的是⚠️: 如无特别说明,通常人们提到的P2SH地址并不是这种第二早的传统地址,而是下边那种 Nested SegWit P2SH (P2SH,「嵌套」隔离见证地址) 地址。
在了解隔离见证地址前 ,我们先了解下Segwit隔离见证技术。
比特币隔离见证(Segregated Witness,简称SegWit)是一项比特币协议的升级,旨在解决比特币网络存在的一些扩容和安全性问题,如拥堵和高交易费用。它于2017年8月在比特币网络上激活,并成为比特币的一个重要特性。
隔离见证的主要目标是减少交易数据的大小,并提高比特币网络的扩容能力,同时增强比特币的安全性和功能性。具体而言,隔离见证通过将交易的签名数据(也称为“见证”)从交易数据中分离出来,并将其存储在一个单独的数据结构中,减少了存储在一个比特币块中的数据的大小。这样每个块具有额外的容量来存储更多的交易。也意味着网络可以处理更多的交易,交易确认时间得到降低,并且发送者支付更低的手续费。所以,如果你希望在发送比特币时降低费用,请使用SegWit地址接收。
SegWit地址的另一个主要好处是它们向后兼容,所以可以将SegWit地址的比特币与Legacy 地址的比特币互转
Nested SegWit P2SH (P2SH,「嵌套」隔离见证地址)
这种地址就是上边那种地址,我可以把上边的介绍内容复制粘贴过来,唯一且关键的区别是在这种P2SH中嵌入的脚本是SegWit脚本。
我们现在把这“两种”放在一块说:P2SH地址本身并不直接嵌入SegWit功能,它的特长是可以用于封装各种复杂的脚本,而不仅仅是SegWit脚本。
从时间上看,P2SH地址比SegWit地址出现得更早。P2SH地址最早在2012年引入,而SegWit地址是于2017年8月由比特币协议的SegWit升级激活。
但事实上,在SegWit升级激活之前,嵌套了SegWit的P2SH地址就被广泛使用,这可能看起来有些奇怪,你也许会产生这样的疑问:为什么在引入SegWit之前P2SH就已经嵌套了SegWit?这丛时间上来说合理吗?然而,这种设计是为了确保平滑的过渡和向后兼容性。也就是说,事实上在SegWit这一重要升级激活之前的非常早的时间里,SegWit理论就已经被提出并获得认可。
由于SegWit的实施需要对比特币协议进行变更,这可能需要较长的时间和广泛的支持。为了确保兼容性,允许旧版钱包和软件与SegWit地址进行交互,P2SH地址被引入并用于嵌套SegWit。它将SegWit地址作为脚本哈希锁定在P2SH地址中,使它们能够识别和处理这些地址。
这样做的好处是,P2SH地址在旧版钱包和软件中被视为普通的P2SH地址,而不需要对SegWit进行特殊处理。
利用隔离见证节省交易费用,发送到 P2SH 地址比使用旧地址的钱包便宜约 26%。
关于P2SH地址如何嵌套SegWit的细节 请看这篇P2SH嵌套SegWit
Native SegWit (Bech32,「原生」隔离见证地址)
地址以“bc1”开头(更严谨一点是“bc1q”)。Bech32编码的地址,是专为SegWit开发的地址格式。Bech32地址的长度可变,通常为42个字符。 Bech32在2017年底在BIP173被定义,该格式的主要特点之一是不区分大小写,仅使用小写字母(地址中只包含0-9,a-z),因此在输入时可有效避免混淆且更加易读。由于地址中需要的字符更少,地址使用Base32编码而不是传统的Base58。
数据可以更紧密地存储在二维码中。
Bech32提供更高的安全性,将出现无效地址的机会降到最低。
需要注意的是,Bech32编码只适用于表示比特币原生SegWit地址(Bech32地址),而不适用于传统的P2PKH和P2SH地址。
这种类型的比特币地址减少了交易中存储的信息量,"它们不在交易中存储签名和脚本,而是在见证中。因此,相对 P2SH 地址,Segwit地址可以节省大约 16% 的交易费用、相对传统地址,节省 38% 以上的费用。
小结:
虽然Nested SegWit P2SH地址比传统地址更省,但是仍然需要嵌入SegWit脚本,但Bech32地址本身与SegWit兼容。不需要额外的空间来将SegWit地址放入P2SH地址,因此使用Bech32格式地址,手续费会更低。
随着更多钱包和交易所支持SegWit,原生SegWit地址已经成为更好的选择,可以提供更高的交易效率和更低的交易费用
Taproot (主根地址)
地址以“bc1p”开头。Taproot 是自 SegWit 以来最重要的比特币升级, 由 Bitcoin Core 贡献者 Gregory Maxwell 于 2018 年首次提出,于2021年11月14日正式激活。Taproot 通过用 Schnorr 签名取代目前的 ECDSA 算法,将众多签名批量化为一个签名,使区块链上的数据存储更有效率。
这类地址进一步减小了存储空间,提高了交易效率,并提高了更好的隐私性。
Taproot 和原生 SegWit 之间的区别
1)隐私:
Taproot:通过使单签名和多重签名交易无法区分来增强用户隐私。
Native SegWit:不提供额外的隐私功能。
2)交易效率:
Taproot:允许批量签名,减少交易规模和成本。
Native SegWit:减少交易大小,但不允许签名聚合。
3)智能合约功能:
Taproot:支持更复杂的智能合约并减少资源密集度。
Native SegWit:缺乏先进的智能合约功能。
4)签名算法:
Taproot:利用 Schnorr 签名,该签名更安全并且允许更快的批量验证。
Native SegWit:使用ECDSA,批量验证效率较低。
BRC-20 (铭文)其实是利用了 Taproot 升级后的「善意bug」,基于链下客户端对链上数据进行索引解读。
关于地址字符数:
某些⽐特币地址可能少于34个字符(少⾄26个)并且仍然有效。相当⼀部分的⽐特币地址只有33个字符,有些地址甚⾄可能更短。这些较短的地址是有效的,因为它们代表偶然发⽣以零开始的数字,并且当零被省略时,编码地址变短。
⽐特币地址中的⼏个字符被⽤作校验和,以便可以⾃动发现和拒绝印刷错误。校验和还允许⽐特币软件确认33个字符(或更短)的地址实际上是有效的,⽽不仅仅是⼀个缺少字符的地址那么简单。
约束和限制
只是介绍性的了解还是不够的 我们如果想使用好这些地址就要了解清楚他们的约束和使用限制,否则可能就会产生真金白银的损失。下边介绍一些市面上常见的准最佳实践: