【问题标题】:How much storage migration do you have time for per block?每个块有多少存储迁移时间?
【发布时间】:2020-01-31 14:06:00
【问题描述】:

作为运行时升级的一部分,我正在尝试提出一些实际的限制,即在单个块中可以进行多少存储迁移。

所以假设

  • 在 Substrate 设置中发现有 N 个验证器运行当前的共识系统,而不是作为平行链
  • 节点在体面的民用工作站上运行
  • 迁移代码主要执行数据库读/写对序列以及正常的关联编码/解码逻辑
  • 每个读/写对的数据大小相当稳定,平均为 M 字节

设 f(N, M) 是您可以安全地进行读写对的数量 当没有其他外部处理时,在单个块中执行。

什么是 f(N,M) 的好猜测?只是一些体面的答案 用于 N(例如 40)和 M(例如 32、1024)的流行值。

我问,因为围绕此的约束必须告知如何构建模块。

【问题讨论】:

    标签: blockchain substrate


    【解决方案1】:

    首先,为什么 N 在这里是相关的?迁移可以发生在特定的区块中,并且限制是能够在区块时间内适应它。

    为此,我建议进行一些微基准测试(在 WASM 中)并估算每个操作的成本。把它放在你想要的阻塞时间旁边,你应该有一个很好的数字。我会进一步减少它以确保安全。

    请注意,数据迁移的类型在这里很重要;如果您要存储值,这相当容易,我认为您应该没问题,因为瓶颈可能是解码,而不是散列。如果您的值(例如,一个大的 vec)已经大到无法在一个块中读取+写入一次,那么您将遇到更大的问题。使用地图,您必须考虑到您将进行更多的状态查找,因此整个过程有所不同。

    【讨论】:

    • 由于经典 BFT 风格系统中的协调时间确实随着 N 的增加而增加,如果仅出于必须等待 2/3N 的原因,很明显 f 必须在 N 中下降,但是,我认为这种效果实际上并不会与 M 的变化相互作用,所以我想我真的只需要考虑 M。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-12
    • 2015-10-07
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多