在区块链里面, 区块的生成本来就没有外界宣传得那样复杂, 它真正的本质就是把数据打包, 然后加上哈希运算, 接着再去做共识确认。我本人做了五年的后端开发工作, 接下来我会把这条业务链路一步步拆开来讲讲, 保证说你只要认真看完这一遍, 就能把自己的理解清楚地表达出来。
区块链区块怎么生成
想要一个新区块正式诞生, 网络里的各个节点首先得把这段时间内积累下来的所有交易数据按照特定的顺序进行整齐的排列操作, 并且把这些排好队的交易统统塞进新打包出来的区块的具体内容主体里去, 紧接着还需要针对这些交易算出一个被称为Merkle根的数据摘要。

与此同时, 还得把上一个已经存在过的区块对应的哈希数值、现在这一刻具体的时间戳标记, 以及那个需要满足的难度目标值一并写入到新产生的区块头部信息区域里面, 经过这一系列的操作步骤之后,一个等着接受系统验证的被称为\"候选区块\"的东西也就因此形成了。
矿工所要做的事情, 就是对那个区块的头部分信息执行SHA-256这个哈希运算, 在这个过程中, 要不断地去修改那个叫做nonce的数值, 然后一遍又一遍地重复进行计算动作, 直到最终得到的哈希结果, 是在开头处具备了足够数量的零点为止, 也就是说要使得它满足当下这个难度要求。
当整个网络中的各个节点把这个结果接收过去之后, 也要重新自己再算一边来进行验证过程, 如果验证是通过了的话, 那就把它连接在链子末尾那里去, 这时候原先的那个作为候补块的候选块, 就正式地转变为新的一个区块了。
区块链区块生成靠什么
它是依靠工作量证明(PoW)来运作的。网路里的每一个节点都在同时运行哈希计算, 谁的计算机能力强, 谁尝试错误的次数就会特别多。
谁先歪打正着地算出那个符合规定的数值, 谁就能得到记账的权利。而其余的那些节点呢, 只需要做一次哈希值的验证就可以了, 花销是非常小的, 这就是因为力量不对等而带来的一种安全保障的意思。
所谓偶发的双花情况, 以及所谓的分叉状况, 都是依靠最长链规则来解决的, 具体做法是让短链上的那些区块被丢弃掉, 而其中还没得到确认的交易呢它们就会回到内存池里头去等着, 等到下一个区块出来的时候再重新进行打包操作另外呢每累计够了两千个区块之后就要做一次难度方面的调整, 这样做的话是为了让出块的时间能够稳定在地十分钟上下的水平。
简单地说一嘴, 区块的生成其实是把“去装载交易、去计算出哈希值、去比较那个非ce数值、去执行验证共识流程”这一系列操作变成循环往复的动作, 当你把这四个具体的步骤全部给连贯地串联起来之后, 关于区块链在最底层的那些核心机制, 你也就算是真正弄明白了。
