Filecoin的区块链验证

发布时间:2019年02月25日 价值:20000.00 / 共识:19

Filecoin的区块链验证

Chain Validation

每个filecoin完整节点必须从网络接收和处理块,以确保它们始终知道链的正确最新状态。区块如何通过网络进行传播在数据传播的文档进行讨论。

通过网络进入的每个块必须首先在结构上进行验证。首先要确保它正确解组(参见块),确保所有字段都包含合法值,并且块上的签名是正确的。然后,必须验证块的共识规则。这些包括:

  • 父区块的tipset是有效的,这意味着每个父区块:
    • 是一个有效的块
    • 与其他区块的高度相同
    • 与其他区块具有相同的父区块tipset
  • 区块的ticket是正确生成的:
    • 是从父tipset中的最小ticket生成的
    • 如果在ticket队列中包含中间的失败tickets(即空块),则每个ticket会正确的生成ticket数组中的下一个ticket
    • ticket数组中的所有ticket都是由同一个矿工生成的
    • ticket是胜选选票
  • 状态转换正确完成:
    • 所有消息都有效
    • 每条消息都正确执行,并生成与receipt集中相应的receipt相匹配的receipt
    • 应用所有消息后,结果状态根与区块中的状态匹配

一旦区块通过验证,它应该被添加到本地数据存储区,即使在我们现在不接受它的情况下也是如此。来自其他矿工的未来区块可以在其上开采,在这种情况下,我们将保存这区块以避免重新获取。可以丢弃与当前链高度相隔一定距离的块(确切数字TBD,但可以清除几天后未包括的块)。

为了使某些验证检查更简单,块应按高度和父集索引。这样,可以快速查询具有给定高度的块和共同父区块的块。在这些集合中计算和缓存块的结果聚合状态也是有用的,这在检查哪个状态根在具有多个父节点时启动块时节省了额外的状态计算。

  • 分享 收藏
0 条评论
  • 这篇文章暂无评论,赶紧评论一下吧~