比特币-数据结构

  • hash指针与普通指针区别

用hash指针代替普通指针

在这里插入图片描述

  • 数据结构一:区块链
    在这里插入图片描述
    区块中hash值是对前面区块block header做哈希操作而产生的。
    包括对前面去快长hash值
    区块链的特性:牵一发而动全身
    只要记住最后系统保存的root hash通过区块链这种数据结构可以很容易检测出区块链中是否被改动。

  • 数据结构二:Merkle tree
    在这里插入图片描述
    Merkle tree可以提供交易信息tx是否存在这颗Merkle tree中。

  • 每个区块由区块头(block header)与区块身(block body)组成。

block header:存放根hash值;
block body:存放交易列表;
  • 比特币节点分为:全结点和轻结点。

    > 全结点:保存整个区块的内容;        
    > 轻结点:只保存block header;
    

question 由于轻结点只保存block header,那么轻结点是怎么知道交易tx在这颗Merkle tree下?

实现步骤:

1> 轻结点向全结点发送Merkle proof;
2> 全结点返回红色的哈希值;

在这里插入图片描述

Merkle proof可以证明Merkle tree中包含了某个交易。

question: 证明某个交易中不包含在这棵merkle tree中的空间复杂度,怎么证明,有没有简便的方法实现。

1> 将每个交易tx取hash;
2> 按哈希值进行排序;
3> 对待证明的tx交易取hash值,值设定为a;
4> 观察a在排好序的位置所在的区间;

若a在相邻的两个节点的中间,则证明这两个tx交易的merkle proof,从而证明了tx交易不在这颗merkle tree中,当然比特币中没有这种方式。

发布了25 篇原创文章 · 获赞 27 · 访问量 2186

猜你喜欢

转载自blog.csdn.net/m0_38053092/article/details/92097871