根据上篇文章《一文近距离了解区块链》,我们在区块链浏览器中查看了比特币的区块信息,了解到区块当中包含的数据。新区块出现并连接到已有区块链的末端过程就是挖矿。
然而,挖矿需要满足一定的规则,以比特币挖矿为例,需要不停地计算哈希值,只有当哈希值满足要求才可以被比特币的网络所接受。
快速理解哈希算法
哈希算法可以理解为数学中的函数,y=f(x),x取值不同,y也就不同,哈希函数就是有一个函数名字叫hash,即y = hash(x),以哈希算法sha256为例,不论输入值x为何种信息,都会给我们返回一个64位16进制的字符串。
行者哈希魔法箱.jpeg数据为t_data1,经过哈希运算后得到16进制64的字符串8c3ac413b6cf949772f8b2d9aef03fa5a717a6101fd4445b9c72751c89b90f3f。
数据味t_data2,经过哈希运算后得到另一个16进制的字符串e5194345b3632a8ca9ea2a4f9607e9ffc18106e66af92e7eba016e24405c9963。
上述程序知识看着字母很多,其实就是y=f(x)。
注:传递的数据不同,哈希值也就不同,理论上是这样,然而,不同的数据出现相同哈希也有可能出现,只是概率极小,不同哈希算法的碰撞概率也不同,sha256仅仅是众多算法中的一个品种。
哈希算法在挖矿中的应用
挖矿的过程就是计算哈希,我们传送的数据都会生成一个哈希,然而,这个值要满足一定的条件。比如规定64位字符串中,前面10位都是0的哈希就是满足条件的,即挖矿成功。
我们的交易数据生成哈希是固定的,比如,数据为t_data1,哈希值已经固定了,这时,我们就需要计算一个随机数Nonce,区块链中都这么叫,可以理解为随机数x,与我们的交易数据一起进行哈希运算,例如当我们找到一个数为12345时,生成的哈希结果前10位都是0,我们就成功了。
这种挖矿机制比拼的就是算力,即每秒钟哈希运算的次数,每个人都没有捷径可以走,但是,一旦计算出来Nonce值,验证非常快速,我们计算之后会全网广播,其他节点验证之后没有问题就可以上链了。所谓比特币10分钟出一个区块,也是动态计算的,如果全网的算力增大,系统会自动调节难度值,将哈希结果变小,难度就会上升。
链浏览器比特币区块信息
网友评论