Bitcoin 公開金鑰 X/Y 座標

線上取得比特幣公開金鑰的 X、Y 座標

從壓縮或未壓縮公開金鑰擷取、重建與分析 X 座標和 Y 座標,適合用於低階金鑰分析、secp256k1 橢圓曲線計算與比特幣技術研究。

除了能從未壓縮公開金鑰重建 X 座標與 Y 座標,也可以根據 X 座標及其奇偶性(奇數或偶數)還原完整的未壓縮公開金鑰。這些資訊可用於進階分析、金鑰資料研究,以及與 Bitcoin 所使用的 secp256k1 橢圓曲線運算相容的技術應用。

壓縮公開金鑰範例: 031f6a332d3c5c4f2de2378c012f429cd109ba07d69690c6c701b6bb87860d6640
非壓縮公開金鑰範例: 041f6a332d3c5c4f2de2378c012f429cd109ba07d69690c6c701b6bb87860d6640f96923e4c4e959430c81a73a62a05609b2bbea22620cefc54a58182b9f2a2ae9

比特幣公開金鑰的 X 座標與 Y 座標解析

本教學將介紹 secp256k1 橢圓曲線的數學結構、未壓縮與壓縮公開金鑰的差異,以及 Bitcoin Taproot 所使用的 X-only Schnorr 公開金鑰。

1. 作為橢圓曲線上的點:公開金鑰

在比特幣密碼學中,公開金鑰並不只是單純的數字字串,而是位於由 secp256k1 橢圓曲線方程式所定義的二維數學空間中的點(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. 未壓縮公開金鑰與壓縮公開金鑰

由於橢圓曲線上的點由兩個 256 位元整數(X 與 Y)組成,早期 Bitcoin 軟體通常以未壓縮格式儲存公開金鑰。隨著網路使用量增加,壓縮公開金鑰成為降低資料大小與交易資料負擔的重要方式。

格式 結構 前綴 大小
未壓縮 前綴 + X座標 + Y座標 04 65 位元組
壓縮(Y 為偶數) 前綴 + X座標 02 33 位元組
壓縮(Y 為奇數) 前綴 + X座標 03 33 位元組

3. 為什麼可以省略 Y 座標?

由於橢圓曲線方程式 y2 = x3 + 7 的對稱性,對任意X 座標而言,Y 只有兩個可能值,其中一個為偶數,另一個為奇數。

只需保存 256 位元的 X 座標,再加入 1 位元組前綴(Y 為偶數使用 02,Y 為奇數使用 03),Bitcoin 節點即可利用曲線方程式重建正確的 Y 座標。這能有效減少公開金鑰在區塊鏈交易資料中的儲存空間。

4. Taproot 的 X-only 公開金鑰(BIP 340 / Schnorr)

隨著 Taproot 升級與 BIP 340 的導入,Bitcoin 為 Schnorr 簽章採用X-only 公開金鑰(X-Only Public Keys),並應用於以 bc1p 開頭的 P2TR 地址。

  • 不需要前綴:與其加入 02 或 03 前綴,Schnorr 公開金鑰會完全省略 Y 座標,並將公開金鑰點規範為Y 座標為偶數的形式。
  • 資料大小最佳化:Taproot 公開金鑰固定為32 位元組(256 位元),可進一步降低區塊資料負擔,並有助於最佳化交易資料與手續費成本。