主页 > imtoken在新手机上登录 > 02-BTC-数据结构

02-BTC-数据结构

imtoken在新手机上登录 2023-04-26 06:52:10

目录

前言

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

比特币的数据结构哈希指针(Hash pointers)

比特币中最基本的结构是区块链,区块是由区块组成的链表。 区块链与普通链表的区别在于:

区块链的第一个块称为创世块,最后一个块是最近的块。 每个块都包含一个指向前一个块的哈希指针。 最后一个块的哈希指针保存在系统中。 因为一个区块中的哈希指针结合了整个前一个区块的内容,包括哈希指针,得到一个哈希值,一旦其中一个区块的内容发生改变,后面的区块的内容也必须改变。 改变。 因此,如果我们保留的最后一个哈希指针发生变化,那么区块链中就会发生某些变化。

默克尔树

Merkle 树与普通树的区别在于使用了哈希指针而不是普通指针。 树的最后一层是数据块。 上面的内部节点都是哈希指针。 第一层是根节点,根节点所在的区块也可以算作根哈希。 与区块链一样,只要记住根哈希BTC区块结构,就可以检测到对树的任何部分的修改。

比特币中的每个区块都与一个哈希指针相连,每个区块中包含的交易形成一棵默克尔树。 底层的每个数据块实际上是一个交易,每个块都包含一个块头。 以及区块体(区块头、区块体)。 区块头中只有根哈希,区块体中只有交易列表。

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

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

轻节点:只有区块头。

当需要向轻节点证明一笔交易写入区块链时,需要使用merkle树提供的merkleproof找到交易的根节点,并与轻节点的根节点进行比较. 如果一致BTC区块结构,则证明交易已经写入区块链。 区块链。

Merkleproof:从交易所在的区块一直到根节点的路径。

PS:只有在数据结构是非循环的情况下,才可以使用哈希指针代替普通指针。