主页 > imtoken钱包官网苹果版 > 为什么比特币地址不直接使用公钥,而是需要通过哈希生成?

为什么比特币地址不直接使用公钥,而是需要通过哈希生成?

imtoken钱包官网苹果版 2023-01-18 13:59:54

我们知道,每个人的Bites钱包里都有多个比特币地址,每个比特币地址代表一定数量的比特币。比特币地址是通过公钥通过散列(RPIEMD+SHA)生成的,而公钥又由私钥通过椭圆曲线(ECC)生成。私钥保存在比特币钱包中,不应泄露。公钥用于支付交易时,需要与比特币地址一起通过交易记录公开发布,支付交易的有效性由区块链系统验证。

那么为什么比特币地址不直接使用公钥呢?公钥用于验证私钥的签名,作为比特币地址使用更方便!为什么要费心通过散列来生成比特币地址?如果你弄清楚了其中的原因,你一定会感谢中本聪给我们带来了如此巧妙的机制!

请看下图,第一行是收件人在她的比特币钱包中的比特币地址(HerBitcoinAddr)。第二行是付款人的 MyBitcoin 钱包中的一个 MyBitcoin (MyBitcoinAddr)。我想付钱给她,然后我生成的交易记录显示在下面的灰色框中,里面有我的公钥(MyPubKey),我的比特币地址(MyBitcoinAddr),她的比特币地址(HerBitcoinAddr),以及支付信息和我的签名(签名)通过我的私钥。

比特币私钥公钥地址_比特币 私钥 密码_比特币钱包导出私钥

请注意比特币私钥公钥地址,灰色框中的交易记录是公开的,也就是说,如果她只想收钱,那么她只需要透露她的比特币地址(HerBitcoinAddr)就可以了。而且我需要支付,所以除了我的比特币地址(MyBitcoinAddr),我还需要公开我的公钥(MyPubKey)和签名(Signature)。

这说明了什么?根据非对称算法(PKI)原理,公钥可以由私钥生成,但私钥不能从公钥推导出来。注意“不能从公钥推导出私钥”的说法是错误的!其实从公钥中推导出私钥是可以的,但是难度很大。现代智人认为,未来的量子计算机可以从公钥中推导出私钥。因此,将付款人的公钥(MyPubKey)包含在比特币的公开交易记录中,付款人的我的比特币地址(MyBitcoinAddr)中的钱是不安全的。

比特币私钥公钥地址_比特币 私钥 密码_比特币钱包导出私钥

至于收件人的比特币地址,因为她只公开了自己的比特币地址,而量子计算无法通​​过哈希值还原原始内容,所以无法通过她的比特币地址还原她的公钥,也就无法推断出她的私钥,所以她的比特币地址可以认为是安全的。

那么,作为付款人,我付款后,我的比特币地址(MyBitcoinAddr)不会被公开,是不是不安全,我该怎么办?正确的方法如下图所示。每次付款都要提供另一个找零地址(MyBitcoinAddr2),这个找零地址需要是我从来没有透露过的公钥(MyPubKey2)的比特币地址,即我从来没有用它来付款,当我付款时,我将所有剩余的钱从用于付款的比特币地址(MyBitcoinAddr)转移到我的零钱地址(MyBitcoinAddr2)。

比特币私钥公钥地址_比特币 私钥 密码_比特币钱包导出私钥

也就是说比特币私钥公钥地址,我每次付款时,我的付款比特币地址(MyBitcoinAddr)都是无效的,钱会转到收款人的比特币地址(HerBitcoinAddr)和我自己的找零地址(MyBitcoinAddr2)中。因为HerBitcoinAddr 和 MyBitcoinAddr2 都从未支付过,他们的公钥也从未公开过,即使量子计算的出现,这两个比特币地址中的钱仍然是安全的。

比特币私钥公钥地址_比特币钱包导出私钥_比特币 私钥 密码

再次感谢中本聪给我们带来了比特币这样美妙的东西!

参考:

比特币私钥公钥地址_比特币钱包导出私钥_比特币 私钥 密码

0. 老宋的专属账号

1.开源P2P钱

2.bitcoin.org/bitcoin.pdf

注:本文为老宋原创。转载前请点赞或评论【知乎专栏-老宋专属账号】。