区块链实质上是由一个个记录着交易信息的数据块链接而成的,生成一个新区块所需要完成的工作量证明,就是找到一个随机数,使得将这个随机数、上一个区块的哈希值、这个新区块的交易数据组成的字符串代入做哈希运算,所得到的哈希值符合目标难度要求。
哈希运算,简单来说,就是输入任意长度的字符串作哈希运算会得到一个较短的固定位数的字符串,称为这些输入信息的哈希值,并且不同的输入信息,哪怕是一个标点的不同,都会生成截然不同的哈希值。上一个区块的哈希值即是把上一个区块信息代入做哈希运算得到的唯一一个哈希值。
哈希值的表达是由0至9这10个数字以及abcdef这6个数字构成的,也就是说每一位有16种可能。而任何输入所生成的哈希值的表达是非常随机不可控的。具体的难度要求则是指限定一个哈希值表达的目标范围——哈希值开头连续多位数字是0。我们知道,随机代入数值,要实现开头1个字位是0的概率是1/16,而要实现开头8位都是0的概率则是1/2^ 32,也就是大约需要代入2^ 32个随机数才能够得到一个开头8位都是0的哈希值。所以记账节点们在耗费大量算力计算的过程,就是代入大量随机数进行哈希运算直到找到一个能够让其参与生成的哈希值实现要求数量的0作为开头。
而这个难度要求是根据全网算力的变化进行调整的,比特币网络共识每生成2016个区块后,全网节点重新评估算力水平确定新的难度要求,以保证找到一个目标随机数的时间大约是10分钟。返回搜狐,查看更多