当前位置:   article > 正文

区块链知识总结——比特币的数据结构_比特币数据结构

比特币数据结构

1.哈希指针(Hash pointer):

Blockchain is a linked list using hash pointers.

H(x)在比特币区块链中的产生是把上一个区块中的所有数据连同该区块链中的H(x)一同进行hash运算得到。

这样的话如果某一个区块中的数据被篡改,则会影响下一个区块的哈希指针,进而影响之后的所有区块。

牵一发而动全身

2.默克尔树(Merkle tree):

默克尔树的构建过程如下:

  1. 对每笔交易应用哈希函数,生成每笔交易的哈希值。
  2. 将每两个相邻的交易哈希值进行哈希运算,得到它们的父节点。
  3. 重复步骤2,直到生成树的根节点,这个根节点就是默克尔树的根哈希值。

在区块链中,默克尔树的根哈希值通常被包含在区块头中。 这个根哈希值可以被用来有效地验证一系列交易是否被篡改过。 当一个节点需要验证交易数据时,它可以通过比较接收到的根哈希值与区块头中的根哈希值是否一致来验证交易数据的完整性。 如果一致,那么所有交易数据都可以被视为未被篡改过的。

如何验证某一笔交易是否被记录在区块链中?

  1. 轻节点请求区块头信息: 轻节点向全节点发送请求,请求特定区块的区块头信息。

  2. 全节点提供区块头信息: 全节点收到请求后,向轻节点提供该区块的区块头信息,包括区块哈希、默克尔树根哈希等。

  3. 轻节点验证区块头信息: 轻节点首先验证收到的区块头信息的完整性和正确性,确保该区块头没有被篡改或伪造。

  4. 构建默克尔路径: 轻节点确定需要验证的交易后,使用区块头中的默克尔树根哈希和交易在区块中的位置,构建默克尔路径。

  5. 请求交易数据: 轻节点向全节点发送请求,请求包含待验证交易的原始数据。

  6. 全节点提供交易数据: 全节点收到请求后,提供该笔交易的原始数据给轻节点。

  7. 轻节点验证交易: 轻节点使用收到的交易数据和构建的默克尔路径,验证交易的有效性。它会计算交易的哈希值,并使用默克尔路径验证该交易在区块中的存在性。

  8. 完成验证: 如果交易验证通过,轻节点可以确认该笔交易有效且被正确地记录在区块链中。否则,如果交易验证失败,轻节点可能会请求其他全节点验证或者标记该交易为无效。

补充内容:

在区块链领域中,全节点(Full Node)和轻节点(Light Node)是两种常见的节点类型,它们在网络中扮演着不同的角色和功能。下面是它们的特点和区别:

全节点(Full Node)

1. **完整拷贝**:全节点保存并维护了整个区块链的完整拷贝,包括区块和交易历史记录。

2. **验证和传播**:全节点能够验证所有的交易和区块,以确保它们符合网络的规则和协议。一旦验证通过,全节点会将这些交易和区块广播到网络中,帮助网络的安全性和去中心化。

3. **安全性**:由于拥有完整的区块链数据,全节点相对来说更加安全,因为它们可以独立地验证任何交易而无需信任第三方。

4. **资源消耗**:运行全节点需要大量的存储空间和计算资源,因为它们需要存储整个区块链,并且要处理所有的交易验证和区块传播。

 轻节点(Light Node)

1. **部分数据**:轻节点仅保存区块链的部分数据,通常是仅保存自己相关的交易数据。

2. **依赖于全节点**:轻节点需要依赖于全节点来获取区块链的完整信息。它们通过向全节点发送请求来获取特定的交易和区块数据。

3. **验证**:轻节点可以验证自己相关的交易,但是对于整个区块链的验证需要依赖于全节点。轻节点可能牺牲了一些安全性,因为它们无法完全验证整个区块链的状态。

4. **资源消耗**:与全节点相比,轻节点需要的存储空间和计算资源要少得多,因为它们只存储了部分数据,并且大部分验证工作由全节点完成。

区别和应用场景:

- 全节点适用于那些希望获得最高安全性和独立性的用户和组织,他们愿意为更多的存储空间和计算资源付出代价。
  
- 轻节点适用于资源有限或对安全性要求不那么严格的用户,他们可以通过与全节点通信来获取区块链数据,而无需自己存储整个区块链。

综上所述,全节点和轻节点在区块链网络中各有优势和应用场景,用户可以根据自己的需求和资源情况选择适合自己的节点类型。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/590613
推荐阅读
相关标签
  

闽ICP备14008679号