学习区块链——北大肖臻_03-BTC-数据结构

Posted 不Van的梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习区块链——北大肖臻_03-BTC-数据结构相关的知识,希望对你有一定的参考价值。

比特币中的数据结构

看这一小节的时候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树中。

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

以上是关于学习区块链——北大肖臻_03-BTC-数据结构的主要内容,如果未能解决你的问题,请参考以下文章

北京大学肖臻老师《区块链技术与应用》公开课笔记-BTC

北京大学肖臻老师《区块链技术与应用》公开课笔记-BTC

北京大学肖臻老师《区块链技术与应用》公开课笔记-BTC

《区块链技术与应用》北大肖臻老师——课程笔记13-18

《区块链技术与应用》北大肖臻老师——课程笔记6-8

北大肖臻老师《区块链技术与应用》系列课程学习笔记[25]以太坊-智能合约-5