線上取得比特幣公開金鑰的 X、Y 座標
從壓縮或未壓縮公開金鑰擷取、重建與分析 X 座標和 Y 座標,適合用於低階金鑰分析、secp256k1 橢圓曲線計算與比特幣技術研究。
除了能從未壓縮公開金鑰重建 X 座標與 Y 座標,也可以根據 X 座標及其奇偶性(奇數或偶數)還原完整的未壓縮公開金鑰。這些資訊可用於進階分析、金鑰資料研究,以及與 Bitcoin 所使用的 secp256k1 橢圓曲線運算相容的技術應用。
031f6a332d3c5c4f2de2378c012f429cd109ba07d69690c6c701b6bb87860d6640
041f6a332d3c5c4f2de2378c012f429cd109ba07d69690c6c701b6bb87860d6640f96923e4c4e959430c81a73a62a05609b2bbea22620cefc54a58182b9f2a2ae9
比特幣公開金鑰的 X 座標與 Y 座標解析
本教學將介紹 secp256k1 橢圓曲線的數學結構、未壓縮與壓縮公開金鑰的差異,以及 Bitcoin Taproot 所使用的 X-only Schnorr 公開金鑰。
1. 作為橢圓曲線上的點:公開金鑰
在比特幣密碼學中,公開金鑰並不只是單純的數字字串,而是位於由 secp256k1 橢圓曲線方程式所定義的二維數學空間中的點(X, Y):
各數值的意義:
- x = 水平方向座標(256 位元整數)。
- y = 垂直方向座標(256 位元整數)。
- p = secp256k1 所定義的大型質數(2256 - 232 - 977)。
公開金鑰 K 是透過私密金鑰 k 與標準生成點 G 的橢圓曲線點乘法導出:
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 位元),可進一步降低區塊資料負擔,並有助於最佳化交易資料與手續費成本。