首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不同步/重播整个节点的情况下,ethereum如何验证一个旧事务(比如10k块)?

在不同步/重播整个节点的情况下,ethereum如何验证一个旧事务(比如10k块)?
EN

Ethereum用户
提问于 2018-12-11 11:37:21
回答 1查看 198关注 0票数 2

当一个完整的节点接收到一个新挖掘的新块时,我们似乎很难验证块中包含的所有事务。由于我们已经是当前的世界状态,所以我们只需应用新块中的所有Txs,并根据来自新块的状态根检查生成的stateRoot。如果它是相同的,那么我们确定新的块是有效的(假设pow部分是好的)

了解检查特定事务的包含/排除也很简单,我们如何检查旧块中包含的事务是否有效?

我之所以问这个问题,是因为它似乎是为了验证旧事务,那么我们就不能访问旧世界状态(只有stateRoot,除非我们获得了附加快照,但这并不是Ethereum的默认行为吗?)

编辑:理解Ethereum总是确保当前状态和即将到来的事务是有效的(正如上面提到的那样是可行的),我想问的是更多地与基于Ethereum的sidechains (或者更具体地说是广义等离子体侧链)相关。

因此,当世界状态已经发生变化时,我们可能需要在将来验证一个相对较旧的事务。我想了解是否有必要保留很多世界状态的完整快照才能实现这一点。或者stateRoot就够了?

EN

回答 1

Ethereum用户

发布于 2018-12-11 15:24:36

ethereum客户端在同步这些块时对它们进行验证。如果它是一个完全同步的节点,它通常会验证它接收到的每个块。否则,它会进行或多或少的检查,这取决于它在哪个同步模式下启动(完全、快速、轻巧)。这个答案提供了有关同步模式的更多细节。

一旦完全同步,客户端就知道前面的所有块都是有效的,因此不需要再次检查它们的有效性。

ethereum客户端可以使用很少的使用梅克尔树的信息来检查事务是否位于特定的块中。这个线程描述ethereum是如何使用这些merkle树的.

PS:十个街区前的tx不是很旧,只是2.5分钟前

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/63933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档