POW挖矿流程

POW挖矿具体流程

何为pow挖矿?矿工收益的多少,取决于矿工的贡献值,也就是工作证明,挖矿的收益取决于自己的算力、全网算力和挖矿难度三要素。自己拥有的算力越高,全网算力越低,挖矿难度越小,能挖到的币才越多。全网算力就是一种币所有矿机算力之和。

主要有三个模块,Block模块、BlockChain模块、POW模块即挖矿模块,从定义一个区块开始,一个区块中包含的信息有区块信息,时间戳,前区块哈希值,现区块哈希值,经过挖矿后得到的哈希碰撞值等等

工作量证明( PoW )通过计算一个数值( nonce ),使得拼揍上交易数据后内容的 Hash 值满足规定的上限。在节点成功找到满足的Hash值之后,会马上对全网进行广播打包区块,网络的节点收到广播打包区块,会立刻对其进行验证

为了实现对交易打时间戳,Hash交易数据,通用工作量证明方法。网络中的每个节点从事于解决一个适度困难的密码难题。难题的解决方法是:把区块中的所有数据做SHA256哈希运算,并且得到哈希值小于给定的目标值。区块中还包含一个Nonce值,通过递增Nonce来寻找正确的哈希值。这个密码谜题被设计成,每隔一段时间会找到一个谜题答案。SHA256算法将根据给出的输入数据计算出一个唯一的hash值,只要输入值不变,永远返回相同的结果。区块是不可逆的,达到去中心化的作用。

随着矿工人数的增加,挖矿难度也在增加,以比特币为例子,难度是nonce,nonce可以理解为一个随机数,就是挖矿中要找到一个符合条件的nonce值。nonce的值越来越大,算力也要求越来越高,Pow的过程,即为不断调整Nonce值,对区块头做双重SHA256哈希运算,使得结果满足给定数量前导0的哈希值的过程,Pow完成的区块向全网广播,其他节点将验证其是否符合规则,如果验证有效,其他节点将接收此区块,并附加在已有区块链之后。之后将进入下一轮挖矿

 在PoW中,系统中的投票权与节点的计算能力成正比。每秒可以计算哈希函数次数越多,节点就越有可能赢得区块链中下一个区块的出块权。每次创建区块,都要去验证。新创建一个对象,专门处理挖矿验证。创建新的工作量证明,设置难度值原理:如果随机生成的Hash(二进制)小于难度值则挖矿成功。

POW共识算法主要是通过计算难度值来决定谁来出块。POW的工作量是指方程式求解,谁先解出来,谁就有权利出块。方程式是通过前一个区块的哈希值和随机值nonce来计算下一个区块的哈希值,谁先找到nonce,谁就能最先计算出下一个区块的哈希值,这种方式之所以被称为计算难度值是因为方程式没有固定解法,只能不断的尝试,这种解方程式的方式称为哈希碰撞,是概率事件,碰撞的次数越多,方程式求解的难度就会越大功能代码实现主要是 定义区块挖矿难度初始值为4,然后逐渐递增,创建区块链,创建创世区块,然后进行pow挖矿,也就是创建新的区块,要求,当前区块的hash值与前面的0的个数与难度洗漱相同,计算hash再校验区块,校验新的区块是否合法,成功后生成新的区块

 
   

 

转载于:https://www.cnblogs.com/yuxiazi/p/10390092.html

你可能感兴趣的:(POW挖矿流程)