提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

二、区块链

三、Merkel tree

总结


前言

今天看了北大肖臻老师《区块链技术与应用》公开课,有很大收获,在此写博客以做笔记,加深印象,若有不当之处,欢迎斧正。


一、比特币中的数据结构是什么?

比特币中的数据结构一个是区块链另一个是存在于区块中的Merkel tree。

二、区块链

  • 比特币中的区块链由一个个区块组成,每一个区块分为区块头和区块体两部分。
  • 区块链中第一个区块为创世块(genesis block),最近的一个区块为 most recent block。
  • 区块之间由哈希指针链接,每一个区块的区块头都保存了指向上一个区块的哈希指针,最后一个区块的哈希值保存在系统中。
  • 哈希指针有两部分,既保存了指向该结构体的地址,也保存了该结构体的哈希值。
  • 由于哈希指针的存在,区块链拥有了防篡改的性质,例如:攻击者篡改了第55号区块,则需要改动包括第55号区块一直到most recent block 区块的所有哈希值,最后一个区块的哈希值改动后,先不说速度上达不达得到,该哈希值与系统中保存的原来的哈希值不一样,系统即可检测出存在攻击者恶意修改区块。

三、Merkel tree

  • Merkel tree 存在于区块体中,它分为数据块(data block)和哈希指针块(hash pointers),Merkel tree 的结构为二叉树形式。
  • 数据块在区块中储存的一个个的交易,每一个哈希指针块都保存着下一层两个区块的两个哈希值。由根节点的两个哈希值算出来的哈希值为根哈希值(root hash)保存在区块头中。
  • 比特币的节点有全节点和轻节点,全节点保存区块链中每一个区块的所有内容,而轻节点则只保存最近几千个区块的区块头。
  • 若轻节点要证明某个交易,则向全节点发出请求,全节点给与轻节点与该交易相关的 Merkle proof ,轻节点使用该交易的哈希值与 Merkle proof 进行验证,若最后算出来的哈希值与保存的区块头中的根哈希值不一样,则该交易证明失败。

总结

主要梳理了课程中肖臻老师对于比特币数据结构的讲解。