当从私钥创建WIF时,在开始散列和添加校验和之前,必须在十六进制字符串的开头插入一个特殊字节:对于MainNet为0x80,对于TestNet为0xef。
WIF中有没有特别的原因?如果只做散列运算并在没有网络字节的情况下添加校验和,不是更好(更通用)吗?这背后有什么意义,WIF机制的创始人为什么决定走这条路?
只是为了我的理解。。。
私钥
钱包导入格式
分享
改进这个问题
跟随
22小时前问的
汉海因茨
4111青铜徽章
新贡献者
添加评论
2个答案
4
作为WIF格式的最初作者,老实说:这个问题我从来没有想到过,但我认为它确实有意义。
当时唯一存在的Base58Check格式是mainnet和testnet的P2PKH地址格式,它有一个网络字节。为了创建WIF格式,我只是修改了它以设置版本字节的高位,并将有效负载从公钥散列更改为私钥。
请注意,这是在种子短语、确定性钱包或备用币出现之前。有人想在多个网络上重用同一个密钥的想法并不适用。
回想起来,我认为这是一个合理的选择。您不应该跨网络(或一般应用程序)重用密钥。
分享
改进这个答案
跟随
16小时前回答的
彼得·维尔
68.1k88金徽章146146银徽章223223铜徽章
添加评论
1
WIF代表Wallet Import Format,它是从钱包导入和导出密钥的标准化方案。因此,包含诸如网络字节之类的元数据是有意义的,这样钱包就知道什么网络是私钥,而不是为每个支持的网络尝试私钥。如果您只想编码密钥本身,而不想编码元数据,那么可以使用十六进制进行编码。
分享
改进这个答案
跟随