区块链流程图1 工作量证明
Block结构实现
数据准备
prepare_hash_data:
- 把待哈希内容序列化
- 注:由于时间戳一开始就被计算出来,故并不是挖矿成功的时间戳
验证机制
validate:
- 没检查溢出情况
- 调用prepare获取数据
- 注:每次要重新调用prepare是因为nonce每次都变化了
- 判断是否哈希值符合要求
工作量证明执行
run_proof_of_work:
- 循环调用validata
- 每次把nonce+1,成功了则把self.hash赋值
区块创建
new_block:
- 获取当前时间戳
- 新创建block,赋值好前哈希,data,时间戳
- 调用run_proof赋值哈希
创世块生成
new_genesis_block:
- 直接生成
Blockchain结构实现
初始化
new():
- 调用生成创世块
区块添加
add_block:
- 从vec尾部获取新块的前哈希
- 调用new_block(data, prev.get_hash())
主程序实现
- 创建区块链Blockchain::new()
- 调用add_block然后传入data
- bc.add_block(String::from(“Send 1 BTC to Ivan”))
注意:没检查溢出情况
评论