在比特币(BTC)的世界里,每一个细节都关乎安全与效率,而密钥的表示方式便是其中之一,提到密钥的表示,我们不可避免地会遇到“压缩”、“未压缩”以及它们以“hex”(十六进制)形式展现的具体形态,这三个关键词共同勾勒出了比特币密钥管理的一个重要技术演进和权衡过程。
密钥的根基:公钥与私钥
我们需要明确比特币密钥系统的核心,它基于非对称加密技术,包含一对密钥:私钥和公钥,私钥是一个随机生成的数字,它是用户对比特币资产所有权的终极证明,必须严格保密,公钥则由私钥通过椭圆曲线算法(具体是secp256k1曲线)派生得出,可以公开用于接收比特币或验证交易签名。
未压缩公钥:最初的形态
在比特币的早期,公钥的表示采用的是“未压缩”格式,这种格式下,公钥直接由椭圆曲线上的一个点(X, Y)坐标组成,因此其原始的十六进制(hex)表示长度是固定的 130个字符(即65字节,每个字节用两个十六进制字符表示)。
未压缩公钥的hex字符串通常以“04”开头,随后是32字节的X坐标(64个hex字符),再接着是32字节的Y坐标(64个hex字符)。04X坐标64字符Y坐标64字符。
这种表示方式直观且简单,直接反映了椭圆曲线上点的完整信息,随着比特币网络的发展,交易数据的大小和效率问题逐渐凸显,未压缩公钥的65字节长度在每笔交易中都占用了不少空间。
压缩公钥:效率与优化的产物
为了减少交易数据大小,从而降低交易费用并提高网络效率,压缩公钥格式被引入并逐渐成为主流,压缩公钥的核心思想是利用椭圆曲线的数学特性:给定一个X坐标,Y坐标只有两个可能的值(一个偶数,一个奇数),我们只需要存储X坐标,并额外用1个比特来指示Y坐标的奇偶性,就可以唯一确定公钥对应的点。
压缩公钥的hex表示长度因此缩短为 66个字符(即33字节)。
其格式通常以“02”或“03”开头:
- 以“02”开头:表示Y坐标是偶数。
- 以“03”开头:表示Y坐标是奇数。
- 后面紧跟的是32字节的X坐标(64个hex字符)。
02X坐标64字符 或 03X坐标64字符。

这种压缩方式将公钥的大小减少了约50%,对于每笔交易中需要包含的公钥(如P2PKH或P2PKH脚本中的公钥)节省的空间是相当可观的,进而直接降低了交易成本。
HEX:连接二进制与可读性的桥梁
无论是压缩还是未压缩公钥,它们在计算机内部都是以二进制形式存储和处理的,为了方便人类阅读、记录、传输和在软件中显示,这些二进制数据通常会以“hex”(十六进制)的形式表示,Hex使用16个不同的字符(0-9,A-F)来表示一个字节(8位)的值,每个字节对应两个hex字符。
当我们说“未压缩公钥的hex是130字符”或“压缩公钥的hex是66字符”时,我们指的是将这两种公钥的二进制数据分别转换为其对应的十六进制字符串表示后的长度,Hex表示使得原本难以直接处理的二进制数据变得可打印、可复制,并且在各种比特币工具和软件中广泛使用。
压缩与未压缩的兼容性与选择
值得注意的是,比特币网络完全兼容未压缩和压缩公钥,一个由未压缩公钥生成的比特币地址,仍然可以被发送到压缩公钥对应的地址(反之亦然,前提是私钥所有者能够正确处理),这是因为地址本身并不直接包含公钥的全部信息,而是通过哈希等算法派生而来。
出于效率考虑,强烈推荐使用压缩公钥,现代比特币钱包几乎默认都生成和使用压缩公钥,如果用户使用未压缩公钥进行交易,交易数据会更大,从而导致更高的手续费,从私钥生成压缩公钥也相对简单,只需在计算公钥后,根据Y坐标的奇偶性选择“02”或“03”前缀即可。
“BTC压缩”与“未压缩”公钥的区分,反映了比特币技术在追求效率与实用性方面的不断演进。“HEX”作为这两种密钥格式的标准化表示方法,为我们理解和操作这些密钥提供了便利,从最初的未压缩130字符hex,到如今主流的压缩66字符hex,这一变化虽小,却对比特币网络的扩展性和用户成本产生了积极影响,对于比特币用户和开发者而言,理解这两种格式及其hex表示,是深入掌握比特币密钥管理和交易原理的重要一环,在未来,随着技术的进一步发展,我们或许还会看到更优化的密钥表示方案,但压缩与未压缩的议题及其hex呈现,将在比特币的历史中占据重要位置。








