在B站看北京大学肖臻老师《区块链技术与应用》公开课。这边做一下学习笔记,这一节肖老师介绍BTC中的数据结构。

词条§

  • hash pointers
  • genesis block
  • most recent block
  • Merkle tree
  • binary tree
  • merkle proof
  • sorted merkle tree

Hash指针§

Hash指针除了存结构体地址,还有存结构体的hash值。这样子可以不仅仅可以找到结构体位置,判断结构体是否被修改。

BTC是区块链,使用Hash指针代替普通指针。区块链上任何block内容发生变化,后面的指针就会对不上。

最后一个block的hash值,就可以检查之前链上的区块是不是有变化。

Merkle tree§

Merkle tree 最底层是data blocks,上层是hash pointers。 根hash值就可以检测block上的内容是否被修改。

每一个区块分为, block header和block body。 block header只存储根hash值。

Merkle tree可以提供Merkle proof。

BTC分轻节点和全节点,轻节点只保存block header.轻节点验证交易需要使用merkle proof,轻节点向任意一个全节点请求验证,全节点返回相应hash指针,轻节点从下往上验证 hash值,直到根节点hash值和block header的值一样,才能证明交易在某个block中。

Hash指针§

Hash指针需要有向无环,有环的会有循环依赖问题。