02-BTC-数据结构

目录

前言

比特币的数据结构 

哈希指针(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:只有当一个数据结构是无环的,才能用哈希指针代替普通指针。

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值