椭圆曲线方程的约束:
比特币使用的 secp256k1 曲线方程为 y² = x³ + 7,这意味着,给定一个 x 坐标,y² 的值是确定的(y² = x³ + 7),而 y 坐标则有两个可能的解,即 y = sqrt(x³ + 7) 和 y = -sqrt(x³ + 7),在有限域中,这对应于两个不同的 y 值(一个偶数,一个奇数,因为 secp256k1 曲线的参数特性)。
公钥压缩的原理:
由于公钥点 P 的 x 和 y 坐标通过曲线方程紧密关联,我们实际上可以只存储其中一个坐标,再加上一个额外的“压缩前缀”位,来完整地恢复出整个公钥。
未压缩公钥:包含完整的 x 和 y 坐标,通常以 0x04 开头,长度为 65 字节。
压缩公钥:仅存储 x 坐标,以及一个表示 y 是偶数还是奇数的标志位(1 位)。y 是偶数,前缀为 0x02;y 是奇数,前缀为 0x03,长度为 33 字节。
当我们拥有压缩公钥(x 坐标 + 前缀)时,可以通过以下步骤恢复出完整的公钥:
a. 从 x 计算出 y² = x³ + 7。
b. 计算 y 的两个可能平方根。
c. 根据前缀位(偶或奇)选择正确的 y 值。
“由 y”的含义:
这里的“由 y”并非指公钥仅由 y 坐标决定,而是强调 y 坐标在公钥表示和恢复过程中的关键作用,尤其是在公钥压缩技术中,虽然 x 坐标是压缩存储的基础,但 y 坐标的奇偶性是区分两个可能点(具有相同 x 坐标的点在椭圆曲线上关于 x 轴对称)的唯一标识,没有 y 的奇偶信息(或完整的 y 值),我们无法从 x 唯一确定公钥点 P。y 坐标(或其奇偶性)是构成完整公钥不可或缺的部分,是“定义”公钥的关键要素之一。
“BTC 公钥由 y”这一表述,精准地指出了椭圆曲线 y 坐标在比特币公钥构成和压缩技术中的核心地位,公钥作为椭圆曲线上的一个点 (x, y),其 y 坐标不仅与 x 坐标共同定义了公钥的唯一性,更通过其奇偶性,为公钥的压缩表示提供了关键信息,从而极大地优化了比特币网络的存储和交易效率,深入理解这一技术细节,有助于我们更全面地把握比特币密码学的精妙之处,以及其在实际应用中的优化考量,在比特币的世界里,每一个坐标、每一位数据,都承载着保障资产安全与提升系统效率的重要使命。