压缩格式私钥:大家看到压缩格式私钥这几个字是不是认为这个私钥是被压缩了的?其实我一开始是这么认为的,但随着对概念的深入学习与理解,我发现我理解错了,因为私钥本身并不能被压缩,压缩格式私钥反而比非压缩格式私钥多了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