2025年02-BTC-数据结构

02-BTC-数据结构目录 前言 比特币的数据结构 哈希指针 Hash pointers 默克尔树 Merkle tree 前言 学习肖臻老师的 区块链技术与应用 公开课笔记 供学习参考 比特币的数据结构 哈希指针 Hash pointers

大家好,我是讯享网,很高兴认识大家。

目录

前言

比特币的数据结构 

哈希指针(Hash pointers)

默克尔树(Merkle tree)


前言

学习肖臻老师的《区块链技术与应用》公开课笔记,供学习参考。


比特币的数据结构 

哈希指针(Hash pointers)

比特币中最基本的结构就是区块链,区块就是一个个区块组成的链表。区块链与普通的链表的区别为:

  • 用哈希指针代替了普通的指针

区块链的第一个区块叫做创世块(genesis block),最后一个区块为最近产生的区块(most recent block),每一个区块都包含指向前一个区块的哈希指针,最后一个区块的哈希指针则保存在系统中。因为一个区块中的哈希指针是将前面整个区块的内容,包括其中的hash pointer合在一起取哈希值,所以一旦改变其中一个区块的内容,后面的区块的内容都要该改变。  因此,如果我们保留的最后一个哈希指针发生变化 ,则说明区块链中的内容发生了改变。


讯享网

默克尔树(Merkle tree)

 默克尔树与普通的树的区别也是用哈希指针代替了普通指针。树的最后一层是数据块(data blocks),上面的内部节点都是哈希指针,第一层是根节点,其中根节点的区块也可取哈希为根哈希。 同区块链相同,只要记住根哈希值,就能检测出对树中任何部位的修改。

比特币中的各个区块之间用哈希指针连接,每个区块所包含的交易形成merkle tree,最下面一层的每个数据块实际上是一个交易,每个区块中都包含块头和块身(block header,block body)。块头中只有有根哈希值,块身中有交易的列表。

比特币中的节点分为两类:

全节点:保存整个区块的内容,包括块头和块身。

轻节点:只有块头。

 当需要向一个轻节点证明某交易是写入区块链时,需要使用merkle tree提供的merkle proof找到该交易的根节点与轻节点中的根节点进行对比,若一致则证明该交易写入了区块链。

Merkle proof:从交易所在的区块一直往上到根节点的路径。

PS:只有当一个数据结构是无环的,才能用哈希指针代替普通指针。

小讯
上一篇 2025-01-16 07:14
下一篇 2025-02-15 07:15

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/41700.html