在比特币的世界里,公钥是至关重要的一环,它是私钥的数学衍生,用于接收比特币,并生成我们日常转账中使用的比特币地址,当我们谈论“BTC公钥type”时,实际上是在探讨比特币公钥的不同编码格式及其衍生的地址类型,这些类型共同构成了比特币生态多样性和安全性的基础。
什么是比特币公钥
我们需要明确比特币公钥的本质,私钥本质上是一个随机生成的、非常大的数字,通过椭圆曲线算法(具体是secp256k1),私钥可以生成一个对应的公钥,公钥同样是一个数字,但它以特定的点(x, y坐标)形式存在于椭圆曲线上。
这个原始的公钥数据(即点的x和y坐标)是一串原始的、未经处理的二进制数据,为了方便存储、传输和显示,我们需要对其进行编码,这就引出了“公钥类型”的概念,这里的“type”更多指的是公钥的编码格式以及由此生成的地址类型。
BTC公钥的主要“类型”:压缩与非压缩
在比特币发展的早期,公钥主要采用“非压缩”格式存储和传输。
-
非压缩公钥 (Uncompressed Public Key)
- 格式:非压缩公钥以
0x04开头,后跟64个字节(32字节为x坐标,32字节为y坐标)。 - 特点:完整地包含了公钥点的x和y坐标信息,长度为65字节。
- 衍生地址:非压缩公钥通过SHA-256哈希和RIPEMD-160哈希双重哈希后,生成一个以
1开头的P2PKH(Pay-to-Public-Key-Hash)地址。 - 现状:由于非压缩公钥较长,占用更多存储空间和带宽,且早期比特币实现中可能存在安全风险(如某些签名操作),比特币社区后来逐渐转向压缩公钥,非压缩公钥在新交易中已不推荐使用,甚至某些节点和客户端可能不再支持。
- 格式:非压缩公钥以
-
压缩公钥 (Compressed Public Key)
- 格式:压缩公钥以
0x02或0x03开头,后跟32字节的x坐标。 - 原理:由于椭圆曲线上的点满足特定的数学关系,一旦知道了x坐标,可以通过计算得出两个可能的y坐标(一个偶数,一个奇数),公钥的y坐标是偶数还是奇数,决定了前缀是
0x02(偶数y)还是0x03(奇数y),这样,只需存储x坐标和1个比特的奇偶信息,就能完整表示公钥。 - 特点:长度仅为33字节,比非压缩公钥短了近一半,节省了存储和带宽。
- 衍生地址:压缩公钥同样经过双重哈希(SHA-256 + RIPEMD-160),但生成的P2PKH地址以
1k、3(早期部分)或更常见的1(通过特定推导)开头,但实际上,压缩公钥生成的P2PKH地址通常以1开头,而其对应的压缩公钥信息会隐含在签名或地址的锁定脚本中,更重要的是,压缩公钥是后续更高级地址类型(如P2SH-P2WPKH)的基础。 - 优势:更高效,且被认为是更安全的实践,因为减少了某些潜在的侧信道攻击风险,压缩公钥是比特币网络的主流。
- 格式:压缩公钥以
从公钥“类型”到地址类型的演进
公钥的压缩与否,直接影响了生成的地址类型,尤其是在隔离见证(SegWit)引入之后。
