主页 > 最新imtoken官网下载链接 > 比特币源码研究(1)——私钥、公钥和地址

比特币源码研究(1)——私钥、公钥和地址

最新imtoken官网下载链接 2023-01-16 21:45:51

简介:

现实世界中的简单类比,比特币中的私钥=银行密码,比特币中的公钥=银行账号,比特币中的地址=收款人,可以用公钥查询收款人是否为真实收款人。

比特币钱包调用getnewaddress函数时,会生成密钥对和地址,用于转账、支付等功能。

三者的生成关系如下:

私钥:

私钥是一个介于1~2^256-1之间的数字,你可以自己写这样一个数字,也可以通过计算机调用密码安全伪随机数生成器(CSPRNG)如何查询比特币地址,你需要来自具有足够熵值的来源的种子来确保私钥的安全性。而且 2^256 足够大,可以确保我们每个人生成不同的私钥。

公钥:

可以从私钥通过椭圆曲线乘法计算出公钥,K(public key) = k(private key) * G(constant point of the generation point),注意该算法可以做一个方向的乘法,但不是相反的方向。因此,从私钥生成公钥的过程是不可逆的,公钥只能通过枚举获得。但是,在现有的计算能力下,没有办法在短时间内枚举出所有的私钥。

地址:

比特币地址可以通过单向加密哈希算法从公钥中获取。以公钥K为输入,计算其SHA256哈希值,并用结果计算RIPEMD160哈希值,得到一个长度为160位(20字节)的数:A = RIPEMD160(SHA256(K)),最后通过Base58Check编码得到比特币地址,这种方式也是不可逆的,但是可以通过公钥来验证地址是否是由公钥生成的。

最后有一个问题:

前提是比特币钱包中会存储多个密钥对。这个时候,备份钱包A。如果这个时候如何查询比特币地址,使用getnewaddress生成一个新地址(C)之后,我在这个地址里放了一点比特币。此时钱包为B,如果钱包B没有备份,私钥也没有备份,但是钱包A有备份,新地址C的币能找回来吗?为什么?

下一章会回答这个问题。