基础数据结构

1. 区块结构

定义区块头struct block,包含:

  • 时间戳
  • 前哈希
  • data
  • 当前哈希

2. 哈希计算

给block提供计算当前哈希的方法。

3. 区块链结构

定义区块链struct blockchain,内部有block数组。

区块操作

4. 区块添加

定义addblock函数,提供添加区块的方法。

5. 创世块

定义添加创世块函数。

工作量证明机制

6. POW结构

定义工作量证明结构体struct ProofOfWork,内部有:

  • block
  • target(000010000000)

定义其构造函数,就是一个大整数,若计算值小于target,则说明至少前五位为0。

7. 数据准备

定义"准备数据"的ProofOfWork的成员函数,拼接用于哈希的数据,返回的data会被用于哈希。

8. 运行验证

定义Run的成员函数,循环++,查询是否满足条件,满足了就退出for循环。
注意:要定义一个nonce的最大值防止溢出,溢出了也退出。

功能完善

9. 添加验证

修改addblock函数,在其中调用工作量证明,run成功了才执行添加。

10. 有效性验证

定义确认区块有效区块,确认一下之前Run不是因为溢出而结束。