【科普】浅谈Ordinal BTC地址的技术演进
April 16th, 2023

随着ordinal的热度逐渐扩散,越来越多的人关注到BTC上的铭文。但由于BTC一直作为价值存储,导致很多人对于BTC的技术背景基本一无所知,被问到的最多一句话,就是“我该使用什么格式的地址来接收我的铭文?”,今天这篇文章就来解答一下这个问题。

正确的地址格式

先说结论,ordinal铭文的接收地址是“bc1p”开头的比特币地址,这个地址的类型为P2TR(Pay-to-taproot),这是一种脚本公钥,用于控制如何使用比特币,在接下来的内容我会介绍这种地址类型是如何演进出来的。

地址的本质

在谈钱包地址的演进过程之前,我们首先来明确一下,比特币地址的本质究竟是什么?

在交易过程中,比特币地址通常以收款方出现。如果把比特币交易比作一张支票,比特币地址就是收款人。一张支票的收款人可能是某个银行账户,也可能是某个公司、机构、甚至是现金支票。支票账户不需要指定一个特定的账户,而是用一个抽象的名字作为收款人。与此类似,比特币地址使用类似的抽象,比特币地址可以代表一对公私钥的所有者,也可以代表其它支付对象,譬如脚本,这个我们后面会讲。

地址的生成过程

在比特币系统中,首先使用非对称加密创建一个密钥对,私钥是一个数字,通常是随机选出的。有了私钥就可以使用不可逆的算法(即无法通过公钥反推私钥,比如椭圆曲线乘法)推导出公钥,最后再将公钥经过单向的加密哈希算法得到一个由数字和字母组成的字符串

地址的技术演进

比特币地址地址的变化标志着一次一次的技术迭代,比特币交易朝着“更快,容量更大,更便宜的”的目标前进。

4.1 Legacy 地址(P2PKH)

这是从比特币诞生以来就使用的地址,至今还在使用,P2PKH是 Pay-To-Public-Key-Hash(支付给公钥哈希)的缩写。当钱包碰到这种地址时,会生成一个脚本,要求花费其中的比特币的人必须持有该哈希值对应的公钥。所有的地址都是以“1”开头,后面跟着的是公钥的哈希值,使用的是base58编码,比如:1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy,不过随着比特币价格的攀升,每笔交易支付的费用也变得更加昂贵,交易速度也变的很慢。

4.2 Nested SegWit(P2SH)

P2SH是Pay-To-Script-Hash(支付到脚本哈希)的缩写,它支持比Legacy地址更复杂的功能,比如多签。

SegWit是Segregated Witness(隔离见证)的缩写,witness指的是签名数据,隔离见证的意思就是将交易数据和签名数据分隔,从而可以让一个区块可以存储更多的交易,提高交易速度,降低交易成本。如果没有隔离见证,则签名数据最多可以占用一个区块的65%,使用隔离见证,可以使有效区块大小从1MB增加至大约4MB。

2017年8月,隔离见证升级被作为比特币网络上的软分叉进行实施。 Segwit 地址还启用了第二层扩展解决方案,从而导致了闪电网络的诞生

Nested是嵌套的意思,将现有的P2SH地址与SegWit地址一起封装,以此来兼容老版本,所以可以和legacy地址进行互转,地址是以**“3”**开头的,比如:3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN

4.3 Native SegWit(Bech32)

Native SegWit是专为SegWit开发的地址格式。Bech32 在 2017 年底在 BIP173 被定义,该格式的主要特点之一是它不区分大小写(地址中只包含 0-9,a-z),因此在输入时可有效避免混淆且更加易读。由于地址中需要的字符更少,地址使用 Base32 编码而不是传统的 Base58,计算更方便、高效。数据可以更紧密地存储在二维码中。Bech32 提供更高的安全性,更好地优化校验和错误检测代码,将出现无效地址的机会降到最低。地址是以“bc1”开头,比如:bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3

同时,与Nested SegWit相比,它的交易速度更快,可扩展性更高,每笔的交易费用也更低。不过,并非每个平台都支持这种地址格式,这也是它的缺点之一。

4.4 Taproot

2021 年 11 月,比特币引入了名为Taproot的重大升级。这带来了另一种新的地址格式:P2TR,Pay-To-Taproot。随着采用率的提高,主根地址允许以更低的费用和更好的隐私进行更高效的交易。

Taproot 地址以字符"bc1p"开头。Taproot 在技术上是 Segwit 的升级版本,其地址使用 bech32 的修改版本bech32m进行编码。

Taproot Bech32m地址如下所示:

bc1p8denc9m4sqe9hluasrvxkkdqgkydrk5ctxre5nkk4qwdvefn0sdsc6eqxe

扩展阅读

base系统的基本原理是以不同符号的组合来表达任意数字,比如base10就是以0-9十个符号来表达任意数字,base16使用0-9,A-F这16个字符。

中本聪引入了base58系统,使用58个不同的符号:0-9,以及字母表中绝大部分小写和大写字母,但是一些易混淆的字母和数字不包含在内,例如,数字0和大写字母0,大写字母I和小写字母l。**
**bech32是一种base32系统,它和base58的最大区别就是不混用大小写字母。每个字母只会出现一次,因此更易读,并且每个字母或数字与其对应值之间的精准映射是固定的,但是相当随意:q就是0,p就是1,背后没有深层含义。

所以”bc1q“中的”bc“代表Bitcoin,”1“是分隔符,不代表任何值,bech32映射表中1不包含在内,q表示SegWit的版本号0。Taproot的"bc1p"表示的版本号1,这样可以方便我们去理解一个地址背后代表的技术。

总结

btc的地址看似只有这寥寥三四种,但是每一个地址背后都代表着一次技术升级,意味着btc网络朝着更快更便宜发展,真的要把这背后的逻辑理清楚也不是一件容易的事。

如果还有其他的问题,欢迎添加下方微信,备注”btc地址“,进入免费交流群

Subscribe to 熊猫撸白.nft
Receive the latest updates directly to your inbox.
Verification
This entry has been permanently stored onchain and signed by its creator.
More from 熊猫撸白.nft

Skeleton

Skeleton

Skeleton