我们知道,区块链要想达到全网的一致性,最关键的一步就是要能抢到一个方程组的解,这说明这十分钟你就是老大,你记的账就是全网的标准。
只有这样你才有权利发行比特币。这个过程到底是什么?使用了什么样的密码学知识?简单做个科普。
第一,随机特性。
密码学的哈希运算有一个特点。这叫随机友谊。你什么意思?也就是有一个方程组。他给了你很多Y的结果,比如Y的取值范围在0到100之间。这时候理论上你也可以算一堆x,他们的计算结果可以落在0到100之间。
但是,请注意,这个X的分布必须非常随机。你不知道大概会落在哪个区间。没有捷径可走。一次只能试一个数字,从哪个数字开始试概率都是一样的。
这个性质和防碰撞性质有些相似,但是他强调的是概率的均匀性。
第二,寻找随机数。
注意,在比特币的算力过程中,他有一个难度调整的模式,可以简单理解为增加和减少y的范围,比如从0到10的变化增加难度,从0到1000的扩展降低难度。
这个时候矿工要做的就是带一个号,一个号去试。根据这个方程组的算法,如果你能得到一个X,那么对应的Y就落在这个范围内,就算你这次抢对了块。
具体到整个比特币挖矿过程。每隔一段时间,系统会对最终得到的哈希值的范围进行调整,哈希值以二进制形式表示。二进制是010101。
如何调整范围?就是把前面的位数变为零。前面的零越多,代表数字的范围就越小,代表的难度就越大。如果整个网络的计算能力上升了,那就把这些零点变多,范围变小,这就需要更多的计算能力来计算。如果网络的计算能力降下来,为了让区块出十分钟,让这些零少一点,数字的范围大一点。
给定范围后,我们需要找到一个随机数,并用块头中的信息散列这个随机数。如此周而复始,只要最后一个值落在值的范围内,就算抢到结果,成功挖矿,也就有了发钱的权利。
第三,发行比特币。
最后有网友问,比特币是怎么来的?
这就涉及到比特币的发行过程。在比特币的转移中,有一个输入地址和一个输出地址。用白话文来说,钱从哪里来,去了哪里?
比特币的发行过程是无中生有的。没有来的地址,只有去的地址。输出地址。
在你计算随机数的时候,把这段时间内的交易打包,把你得到的随机值和打包的交易一起发布到全网。你可以简单理解为你写了一张纸。论文上说,你有十个比特币,只要别人能认出来,就算你发行成功了。
哈希算法的另一个特点是解密慢,但是校验结果快。别人得到你的随机值,只要带入方程,发现你是正确的,就把你这张纸作为全网的标准。在这场比赛中,你已经成功地发行了比特币,然后这些比特币可以用于下一个街区的转账。
先说这么多,都是我胡说八道,没有任何建议的意思。