第二章 工作量证明和挖矿
概览 工作量证明拼图和难易度 挖矿 难易度共识 时间戳校验 累积难易度 验证测试 小结 概览 本章节我们将会在我们的玩具版区块链的基础上加入工作量证明(POW)的支持。在 第一章节 的版本中, 任何人都都可以在没有任何工作量证明的情况下添加一个区块到区块链中。 当我们引入工作量证明机制之后,一个节点必须要解开一个有相当计算量的拼图(POW Puzzle)之后,才能往区块链上添加一个新的区块。而去解开该拼图,通常就被称为挖矿。 引入工作量证明机制之后,我们还可以对一个新区块的产出时间作出大致的控制。大概的做法就是动态的改变拼图的难易程度来达到控制的效果:如果最近的区块产生的太快了,那么就将拼图的难度提升,反之,则将拼图的难度降低。 需要点出来的时,本章节中我们还没有引入 交易(Transaction) 这个概念。这就意味着矿工挖出一个区块后,并不会获得相应的奖励。 一般来说,在加密货币中,如果矿工挖到了一个区块,是应该获得一定量的币作为激励的。 工作量证明拼图和难易度 在上一个章节的区块链的基础上,我们将会为区块结构加入两个新的属性:difficulty和nonce。要弄清楚这俩货是干嘛用的,我们必须先对工作量证明拼图作一些必要的阐述。 工作量证明拼图是一个什么样的任务呢?其实就是去计算出一个满足条件的区块哈希。怎么才算满足条件呢?如果这个计算出来的哈希的前面的0的数目满足指定的个数