暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【区块链学习】比特币—数据结构

申也 2022-10-12
1003

💲

比特币

加密货币(crypto-currency)、区块链的典型应用之一

数据结构

Hash pointer(哈希指针):

由两部分组成:

  1. 指向一些信息存储的指针

  1. 该信息的加密哈希值指针可用于获取信息,哈希值可用于验证信息未更改。


即,有前一个块才会有block pointer,因为是对整个block取得hash


区块链 (BlockChain)

结构为链表。

  • Genesis block(创世区块)

    :红色区块,用来创建全新区块链

  • hash pointer(哈希指针):箭头,每一个后置的block都保存有指向前一个block的hsah pointer。最后一个hash pointer由用户保存。

用户可以通过自己有用的最后一个hash pointer进行修改监测


🚫

不能有环,会形成循环依赖


默克尔树 (Merkle Tree)

结构为binary tree(二叉树)


  • data block:叶子节点,存放data

  • root hash:所有block的hash汇总到root,形成一个root hash,进行对整个tree的修改监测

实际用途

提供merkle proof,如下图:

比特币中节点分为轻节点全节点。全节点保存整个区块的所有内容,而轻节点仅仅保存区块的块头信息。

  • 为什么轻节点 全节点

    因为硬件的局限。一个区块大小为1MB,对于移动便携设备来说,如果存储区块的所有内容,则所需空间过大,而这是不现实的。所以轻节点只需要存储区块块头信息,全节点存储区块所有内容即可。

当需要向轻节点证明某条交易是否被写入区块链,便需要用到Markle proof。我们将交易到根节点这一条路径称为Markle proof,全节点将整个Markle proof发送给轻节点,轻节点即可根据其算出根哈希值,和自己保存的对比,从而验证该交易是否被写入区块链。只要沿着该路径,所有哈希值都正确,说明内容没有被修改过。


💡

我需要黄色的transaction(交易)信息,但是我不希望每次都将整个tree下载下来进行辨别。交易对方给我提供红色的全节点请求,我通过这些节点,从底向上的验证出来root hash即可



文章转载自申也,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论