数据结构

哈希指针( hash pointers):普通指针只是指向结构体的起始地址,而哈希指针除了要保存这个地址之外,还要保存这个结构体的哈希值。这样做的好处是,通过哈希指针不仅能够找到这个结构体的位置,还能够检测出这个结构体的值是否被篡改。区块链就是一个使用哈希指针连接的链表。

在这里插入图片描述
通过这样的指针结构,可以实现tamper-evident log。
在这里插入图片描述
如果黄色块内容被修改,其哈希值就会被改变,而后续的所有哈希值都会发生变化。我们只需要记住最后面哈希值,就能知道前面的内容是否有被修改。

比特币中有些节点就不一定要保存整条区块链的内容了,例如,我们只保存了黄色以后部分的区块,如果需要前面的区块,就可以向其它节点去寻求前面部分的区块。有些节点有恶意,给我们的区块内容有修改,我们只需要计算前面一个块的哈希值,与我们所保存的哈希值一比较,就能知道是否是我们想要的区块了。

Merkle tree

在这里插入图片描述
这种结构的好处是,只要保存最上面的根节点root hash值就能知道节点中任意一个部分的值是否有更改。

Merkle tree的哈希值是存在这个区块的block header里面的,但是block header里面没有其它内容,只有这个哈希值,block body里面是有交易的列表的。 Merkle tree 的作用是提供Merkle proof(橙色部分一条线的计算),证明Merkle tree里面包含有这个交易。
在这里插入图片描述
这种证明Merkle tree里面包含了某个交易,这种证明方式被称为proof of membership或者proof of inclusion。证明的复杂度为O(log(n))。

Sorted Merkle tree。通过排序,可以实现复杂度为O(log(n))的不存在证明。

视频参考:https://www.bilibili.com/video/BV1Vt411X7JF?p=3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值