ビットコインの公開鍵のX・Y座標

ビットコイン公開鍵のX・Y座標をオンラインで取得

非圧縮/圧縮公開鍵からX座標とY座標を抽出・再構築・解析し、低レベルの鍵分析やsecp256k1楕円曲線の計算に利用できます。

非圧縮公開鍵からX座標とY座標を再構築するほか、X座標とそのパリティ(奇数/偶数)から完全な非圧縮公開鍵を導出できます。これにより、高度な分析、鍵の復元、およびビットコインで使用されるsecp256k1曲線上の楕円曲線演算との互換性を実現します。

圧縮公開鍵の例: 031f6a332d3c5c4f2de2378c012f429cd109ba07d69690c6c701b6bb87860d6640
非圧縮公開鍵の例: 041f6a332d3c5c4f2de2378c012f429cd109ba07d69690c6c701b6bb87860d6640f96923e4c4e959430c81a73a62a05609b2bbea22620cefc54a58182b9f2a2ae9

ビットコイン公開鍵におけるX座標とY座標について

secp256k1楕円曲線の幾何学、非圧縮公開鍵と圧縮公開鍵の違い、およびXのみを使用するSchnorr公開鍵について解説する教育用ガイドです。

1. 楕円曲線上の点としての公開鍵

ビットコインの暗号技術において、公開鍵は単なる数字の羅列ではありません。それは、secp256k1楕円曲線の方程式によって定義される2次元平面上に存在する数学的な点(X, Y)です:

y2 = x3 + 7 mod p

各値の意味:

  • x = 水平方向の座標(256ビット整数)。
  • y = 垂直方向の座標(256ビット整数)。
  • p = secp256k1によって定義される巨大な素数(2256 - 232 - 977)。

公開鍵 K は、秘密鍵 k と標準の生成元点 G を乗算することで導出されます:

K = k × G = (X, Y)

2. 非圧縮公開鍵と圧縮公開鍵

楕円曲線上の点は2つの256ビット整数(XとY)で構成されるため、初期のビットコインソフトウェアでは公開鍵が非圧縮形式で保存されていました。ネットワークの利用が拡大するにつれ、開発者は公開鍵を圧縮することでデータ容量を最適化しました。

形式 構造 プレフィックス サイズ
非圧縮 プレフィックス + X座標 + Y座標 04 65バイト
圧縮(Yが偶数) プレフィックス + X座標 02 33バイト
圧縮(Yが奇数) プレフィックス + X座標 03 33バイト

3. なぜY座標を省略できるのか?

楕円曲線の方程式 y2 = x3 + 7 の対称性により、任意のX座標に対して、Yには2つの候補値しか存在しません(一方は偶数、もう一方は奇数)。

256ビットのX座標だけを保存し、1バイトのプレフィックス(Yが偶数の場合は02、奇数の場合は03)を追加することで、ビットコインノードは方程式を解き、その場で正確なY座標を再構築できます。これにより、ブロックチェーン上のトランザクションにおける公開鍵の使用領域を約50%削減できます。

4. TaprootにおけるXのみの公開鍵(BIP 340 / Schnorr)

Taprootアップグレード(BIP 340)の導入により、ビットコインではSchnorr署名向けにXのみの公開鍵(X-Only Public Keys)が導入されました(bc1pで始まるP2TRアドレス)。

  • プレフィックス不要:02または03のプレフィックスバイトを付加する代わりに、Schnorr公開鍵ではY座標を完全に省略し、公開鍵の点を常にY座標が偶数となるように制約します。
  • サイズの削減:Taprootの公開鍵は厳密に32バイト(256ビット)であり、ブロック領域をさらに最適化するとともに、トランザクション手数料の削減にもつながります。