区块链核心代码1
基础数据结构
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不是因为溢出而结束。
评论