BTC笔记-02-数据结构

BTC-数据结构

B站视频链接


哈希指针

  • hash pointers,指向一个结构体在内存中的位置,同时还包含这个结构体的哈希值。这样可以检测出结构体的内容是否被更改
  • 区块链就是一个链表,使用了哈希指针。每一个区块的哈希指针都由前一个区块的全部内容计算得出,这样区块链具有 tamper-evident log 的特性

Merkel Tree

哈希树,每个叶节点均以数据块的哈希作为标签,而除了叶节点以外的节点则以其子节点标签的加密哈希作为标签 。

根节点所记录的哈希值称为 root hash

每个区块有两部分:block headerblock body,区块包含交易信息,交易信息构成一个 Merkel Treeblock header 中包含整个 Merkel Treeroot hash,但不包含交易的详细信息。详细信息位于 block body

Merkel Tree 可以提供 Merkel proof,证明树中包含了某个交易,过程如下:

其中验证方轻节点仅保存 block header 信息

这种证明树中包含某个交易的过程称为 proof of membershipproof of inclusion,其验证复杂度为 \(O(\log n)\)

如果使用 Merkel Tree 证明一个交易不在树中 proof of non-membership,在未对叶节点排序的情况下,需要逐一验证,复杂度为 \(O(n)\)

如果对叶子节点(交易)按哈希值排序,则可在 \(O(\log n)\) 复杂度下证明,这种对叶子节点排序后的树称 Sorted Merkel Tree

比特币所用到的 Merkel Tree 不需要排序


哈希指针在无环的情况下可以替代普通指针,有环时无法使用哈希指针

posted @ 2022-08-29 11:57  buzzing  阅读(38)  评论(0)    收藏  举报