壓縮格式私鑰:大家看到壓縮格式私鑰這幾個字是不是認為這個私鑰是被壓縮了的?其實我一開始是這么認為的,但隨著對概念的深入學習與理解,我發現我理解錯了,因為私鑰本身并不能被壓縮,壓縮格式私鑰反而比非壓縮格式私鑰多了1個字節,這多出來的1個字節是私鑰被加了后綴"01",用以表明該私鑰是來自于一個較新版本的錢包,只能用于生成壓縮格式的公鑰。就是說該私鑰只能用于生成壓縮格式的公鑰,其本身并不是壓縮格式。反之,非壓縮格式私鑰是只能用于生成非壓縮格式的公鑰。具體轉換關系如圖所示:
從上面的定義和圖示,大家可以看出壓縮格式私鑰這個詞用得不太恰當,容易讓人產生誤解,讓人誤以為私鑰是可以被壓縮的,其實這種理解是不對的,如上述概念給出的,壓縮格式私鑰其實比非壓縮格式私鑰還多了1個字節,在非壓縮格式私鑰的基礎上添加后綴"01"用以表示為壓縮格式私鑰,壓縮格式私鑰提出的作用是為了節省錢包存儲空間而新研制出的一種私鑰編碼格式。
如果一個比特幣錢包實現了壓縮格式公鑰,那么它將會在所有交易中使用該壓格式縮公鑰。錢包中的私鑰將會被用來生成壓縮格式公鑰,壓縮格式公鑰然后被用來生成交易中的比特幣地址。當從一個實現了壓縮格式公鑰的比特幣錢包導出私鑰時,錢包導入格式(WIF)將會被修改為WIF壓縮格式,該格式將會在私鑰的后面附加一個字節大小的后綴01。最終的Base58Check編碼格式的私鑰被稱作WIF(“壓縮”)私鑰,以字母“K”或“L”開頭。而以“5”開頭的是從較老的錢包中以WIF(非壓縮)格式導出的私鑰。
表4-4展示了同樣的私鑰使用不同的WIF和WIF壓縮格式編碼。
Hex(十六進制):1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD
WIF(非壓縮私鑰):5J3mBbAH58CpQ3Y5RNJpUKPE62SQ5tfcvU2JpbnkeyhfsYB1Jcn
Hex-compressed(壓縮十六進制):1E99423A4ED27608A15A2616A2B0E9E52CED330AC530EDCC32C8FFC6A526AEDD01
WIF-compressed(壓縮私鑰):KxFC1jmwwCoACiCAWZ3eXa96mBM6tb3TYzGmf6YwgdGWZgawvrtJ