主页 > imtokenusdt钱包 > 白话区块链 9 - 比特币下载区块数据时,如何检查是否有问题?

白话区块链 9 - 比特币下载区块数据时,如何检查是否有问题?

imtokenusdt钱包 2023-03-11 06:55:31

比特币是一种分布式网络结构。当一个节点需要同步自己的区块链账本数据时,它并没有明确的服务器来下载,而是通过与其他节点的通信。当事务发生时,难免会损坏一些数据。如何检查这些交易交易是否有问题?

这篇文章就是为了回答上面的问题。

您可以打开以下链接详细阅读之前的文章:

以下段落对应《白话区块链》第1章的1.4.4节,原标题为《数据完整性证明-Merkle Tree》。

数据完整性证明——默克尔树

在介绍比特币挖矿过程的时候,我们提到了一个叫做默克尔根的概念,它是一个存储在区块头中的值,并且说这个值是通过区块中的交易交易计算出来的,那么我们来看看它是如何获得的,我们来看一个示意图:

这张图是什么意思?我们看到,首先这是一个树形结构,底部有4个哈希值。我们假设一个区块有 4 笔交易,那么每笔交易计算一个 Hash 值,这里的 Hash1 到 Hash4 对应,然后再次成对计算哈希值比特币支付版面费,以此类推,直到计算出最后一个哈希值,即是根哈希。这样的树结构称为 Merkle 树,根哈希为 Merkle 根。我们再看另外一张图:

可以看出,每个区块都有一个默克尔树结构,可以发现默克尔树中的每个节点都是一个哈希值,所以也可以称为哈希树,比特币中的默克尔树是通过哈希计算的交易交易的哈希值成对出现,所以默克尔树称为二叉默克尔树,那么这样的树结构有什么作用呢?

比特币是一种分布式网络结构。当一个节点需要同步自己的区块链账本数据时,它并没有明确的服务器来下载,而是通过与其他节点的通信。当事务发生时,难免会损坏一些数据。如何检查这些交易交易是否有问题?这时候,默克尔树就可以发挥作用了。由于哈希算法的特性,只要计算中涉及的数据稍有变化,计算出来的哈希值就会发生变化。让我们用第一个示意图来说明。假设A通过B同步区块数据,同步完成后发现计算出的Merkle root与B不一致,即数据损坏。这时候先比较Hash12和Hash34。这是不一致的,如果Hash12不一致,则比较Hash1和Hash2不一致,如果Hash2不一致,重新下载交易2,重新下载后计算Hash12,与Hash34 Ergen一起计算新的Mek,如果一致,则资料齐全。我们发现,通过 Merkle 树,可以快速找到有问题的数据块,并且可以将原来的大块数据块分割成小块进行处理。

Merkle树的特性还支持实现比特币的轻量级钱包,即SPV(Simplified Payment Verification)钱包。具体原理在“比特币钱包”部分介绍。

白话区块链第 1 部分:账本为何如此记录?

白话区块链第 2 部分:区块链技术概念

白话区块链第 3 部分:区块链技术栈

白话区块链4:区块链分类与架构

白话区块链5-创元灵:一切源于比特币

---

、软件定义存储(SDS)和超融合架构(HCI)相关文章,偶尔也会分享虚拟化、云计算、大数据、人工智能、物联网等IT文章,甚至是生活方面的好文章。欢迎投稿,尤其是原创文章。如果原创文章是第一次发表,根据质量和阅读量,可以获得20-500元的稿费。我的QQ号:9269216。另外,如果有增值收入,作者可以获得60%。

欢迎对SDS感兴趣的朋友加入软件定义存储讨论QQ群:122295009,可以下载一些原创文章和其他有价值的文档。您可以直接搜索群号比特币支付版面费,或扫描以下二维码:

小港港10101

埃里克0424

六双2008

sdg8848

dts0103