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())

主程序实现

main.rs

  • 创建区块链Blockchain::new()
  • 调用add_block然后传入data
  • bc.add_block(String::from(“Send 1 BTC to Ivan”))

注意:没检查溢出情况