时间:2023-07-26|浏览:188
当你运行一个以太坊节点时,首先必须同步整个网络,即下载和计算构建最新区块链状态所需的所有数据。Geth支持两种同步模式:完全同步和快速同步。完全同步是独立执行整个同步过程的模式。它会下载并验证每个区块的工作量证明,并计算区块中的每个事务。这种模式更安全,但速度较慢,可能需要几天甚至几周的时间。
然而,有些用户可能不想等待那么长时间。他们希望更快地完成同步。因此,Geth提供了快速同步模式。在这种模式下,Geth会下载区块,但只随机选择一些区块来验证工作量证明,而不是每个区块都验证。它也不会自己执行事务,而是直接从其他节点下载状态树,以获得最终的区块链状态。
然而,为了确保从其他节点下载的状态树数据的正确性,Geth使用了默克尔帕特里夏树(Merkle-Patriciatrie)。默克尔帕特里夏树是Geth客户端中的一种关键数据结构,将默克尔树和帕特里夏树结合起来,以支持密码学验证和运行时性能。
全局状态树存储了区块链的绝大部分数据。为了高效存储和查询状态树,Geth使用LevelDB并将每个节点编写为键值对,使用节点的哈希作为键,节点的序列化数据作为值。这样,Geth可以查询任意区块的状态树。
Geth团队已通过修复漏洞解决了这个问题。他们快速处理了树读取错误,并通过修复代码和树部分的不同之处来彻底修复了这个漏洞。
这是一个有趣的漏洞,攻击者可以在以太坊网络上设置一个陷阱,随时引爆,导致所有使用快速同步的Geth节点与主网分离。这个漏洞利用了Geth同步和数据存储代码中复杂的逻辑,可能是因为这个原因长时间未被注意到。
用戶喜愛的交易所
已有账号登陆后会弹出下载