⽐特币地址是⼀个标识符(帐号),包含27-34个字母数字拉丁字符(0,O,I除外)。地址可以以QR码形式表⽰,是匿名的,不包含关于所有者的信息。
地址⽰例:14qViLJfdGaP4EeHnDyJbEGQysnCpcn3eb;
bc1pqe4lwletu54tcrg86xa6shtyh7wazes9ps5u4ddcvzqxn9fzh8ysuxopit
⼤多数⽐特币地址是34个字符。它们由随机数字和⼤写字母及⼩写字母组成,除了⼤写字母"O",⼤写字母"I",⼩写字母"l"。数字"0"不⽤于防⽌视觉模糊。某些⽐特币地址可能少于34个字符(少⾄26个)并且仍然有效。相当⼀部分的⽐特币地址只有33个字符,有些地址甚⾄可能更短。每个⽐特币地址代表⼀个数字。这些较短的地址是有效的,因为它们代表偶然发⽣以零开始的数字,并且当零被省略时,编码地址变短。 ⽐特币地址中的⼏个字符被⽤作校验和,以便可以⾃动发现和拒绝印刷错误。校验和还允许⽐特币软件确认33个字符(或更短)的地址实际上是有效的,⽽不仅仅是⼀个缺少字符的地址那么简单。
比特币地址主要分为四种格式:
- 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"开头的。
示例:1KN6nSiMiSBjLnQhGykGzM831Mni96pE3v
目前大家只会在使用一些与新地址不兼容的旧钱包时才会使用这种类型的地址。
P2SH (支付脚本哈希地址,「第二早」传统地址)
P2SH地址最早在2012年由Gavin Andresen引入比特币协议中。P2SH 是 Pay-to-Script-Hash(支付至脚本哈希)的缩写。它的设计目的是为了支持多重签名(multisig)和其他复杂的脚本类型,提供更高的灵活性和安全性。P2SH地址的格式以"3"开头,并由Base58编码生成。P2SH 地址不直接将公钥哈希存储在地址中,而是存储一个脚本哈希。通过提供与生成脚本对应的解锁脚本,可以花费 P2SH 地址上的比特币。
请注意这里的支持脚本的能力,这是它被设计出来的原因和和下边讲的嵌入隔离见证技术的基础。
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%
Nested P2SH,获取现有的P2SH地址(以"3"开头),并与SegWit地址一起封装。以此来兼容老版本。但这是某种破解行为,导致SegWit交易需要大约10%的额外空间。这与扩容的目的相矛盾。
随着时间的推移,原生SegWit地址:Native SegWit (Bech32,「原生」隔离见证地址)逐渐得到广泛支持和采用,成为更高效和低费用的选择。
Native SegWit (Bech32,「原生」隔离见证地址)
约束和限制
只是介绍性的了解还是不够的 我们如果想使用好这些地址就要了解清楚他们的约束和使用限制,否则可能就会产生真金白银的损失。下边介绍一些市面上常见的准最佳实践: