当前位置:首页 » 《随便一记》 » 正文

学习区块链——北大肖臻_03-BTC-数据结构_不Van的梦的博客

2 人参与  2022年03月10日 13:42  分类 : 《随便一记》  评论

点击全文阅读


比特币中的数据结构

看这一小节的时候Merkle Tree没有太看懂,要回去再看看!以及老师在课上提出的两个问题

这一讲讲解比特币中用到的数据结构

hash pointers(哈希指针)

1. 区块链

区块链相当于一个链表,与传统的链表不同的是,区块链的指针是对前一个块的整体取hash算出来的,如果改变了区块链中某一个结点的值,后面所有的hash都对不上了,所以这是tamper-evident log(多米诺骨牌)

所以说只保存最后一个结点的hash,然后判断这个hash是否修改,就可以判断前面的链是否被修改了。

也就是比如可以只保存最近3个区块,如果我需要更早的区块(比如倒数第4个),我算一下这块的hash值跟我保存的倒数第三块能不能接的上。

2. Merkle tree(默克尔树,可信树)

比较像B+树,非叶子结点不存值,只有叶子结点存的是区块,上面的只起一个索引的作用。

只要检测根结点的hash值是否变化,就可以检测树中任何地方的修改。跟上面的区块链一样,前面的修改了,后面的就会改变。
默克尔树就是下面发生了修改,上面就会改变,也是牵一发而动全身

轻结点内只有一个hash header,也就是只有默克尔树的根结点的hash值。proof of membership如何向这个轻结点证明,我有一个交易是否存在于你的轻结点?(26min)

  1. 首先,我要给你一个merkle proof
  2. (这玩意是什么啊,给出来的长什么样子?)
  3. 然后用Hash往上推,就可以用O(logn)的时间复杂度进行判断

proof of non-membership向这个结点证明,某个交易不存在这个merkle树中。

只要是无环的就可以表示,如果是有环的数据结构还用哈希指针的话就成循环依赖了。


点击全文阅读


本文链接:http://zhangshiyu.com/post/35986.html

结点  区块  修改  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1