··原创: MetalGear 2017-09-11 09:48只看该作者(-1)·打
这就是一个疑问,顺便跟钱包相关问题一起请教:
1.如果说wallet.dat生成时就自带100个地址,它是不是要通过全节点广播来昭告天下?不需要,SHA256假定任何时刻任何一台终端独立产生的一组地址都不会和历史上全世界所有终端曾经产生的地址重复。有计算数据的,我没有记下来,大意是要两个地址重复的情况发生,相当于在全宇宙找到一粒沙子的概率。
---不过作为一个程序员,我需要补充,上述都属纯数学理论,起前提是随机数是真随机数,这个真随机数,其实是无法获得的,需要神的力量才能得到。很显然,人类还不是神,没有那么大的能力。所有计算机上产生的都是伪随机数,它是根据你计算机最近一次开机的时刻通过复杂的计算而来的,它是伪的。去年很多安卓手机比特币钱包发生了比特币被盗。而
苹果手机比特币钱包就没有。就是安卓系统和苹果系统的随机数产生机制不一样,安卓系统的随机数相当的粗糙,造成了很多安卓用户的比特币地址私钥被人猜到,那人用私钥拿走了被猜出地址上的余额。而苹果IOS操作系统的随机数产生机制更严谨一些,更接近数学家的随机。所以苹果手机上钱包暂时还没事。
2.如果不断启动空白QT,不就会不断占用地址了?不会。我不懂你是啥意思,如果你搬走目录下的Wallet.dat,然后重启Qt,Qt由于找不到合规的钱包文件,就会帮你新建一个。这就是你的第二个钱包。那个钱包里面也有100个地址,从未使用。如果你需要,可以向这个钱包里面的地址发送比特币。然后再保存这个钱包。这样你就有了两个钱包。当然你也可以有三个,四个,,,
3.如果出现重复地址,会怎样处理?先产生的有效?如果出现了重复地址,谁先下手谁得到里面的余额。具体做法就是把里面的余额立刻转到另一个自己能够控制的地址上。那样这笔比特币就属于自己了。
4.你说的这个问题,我有几个疑问……地址就是私钥的唯一决定因素吗?没有把其它因素加入算法?如果问题3有明确答案,那么重复地址应该被屏蔽掉才对吧?如果问题3没有明确答案,那是不是只有依靠随机性来避免这个风险了?然而随着客户端数量的增长,重复的风险就越来越高……恰恰相反,一个地址可以计算出无数多个私钥,但其中只有一个私钥是有效的,能提币。其他都是废物。但一个私钥就只能计算出一个地址,这个地址就是存放比特币的地址。所以,你可以公开地址,不用担心别人得到这个地址的私钥。但你不能公布私钥,私钥一公布,你地址就被人算出,并且里面的比特币余额就会被人用你公布的私钥提空。
在
EBAY 上,有很多实物比特币的卖家。面值有0.1BTC的,0.01的,甚至还有大额的1BTC的,EBAY因为需要买家提供详细图片,有些人就老老实实拍照正反面,放在了网上。这些照片里,很多悍然显示着地址/私钥。挺有趣的,你可以去试试,在BLOCK C
HAIN 钱包里地址里面添加只读地址,导入这个图片上的地址,然后再选择消费,输入你看到的私钥,看看能不能有余额发送到自己的钱包里面。
地址重复的风险一直存在,比特币的数学家和程序员专家群无意解决这个问题,因为地址重复的可能性理论上相当于在整个宇宙中找到一粒沙子。我估计这个问题会一直存在,永远也无法解决。这也是人类科技进步无法解决的问题,同时也是比特币靠升级修改协议也无法解决的。
我在大学时代曾经怀疑过,整个宇宙中是不是真的哪怕有一个真正的随机数存在过。当然,现在我不怀疑了。只要相信神是存在的,那么这就不是问题。所以我坚信真随机数是存在的。但看看人类的愚昧程度就知道人类离掌握这种能力的距离还远。也许即使穷尽人类的智慧和力量也摸不到这个问题的边。