Blockchain 每个数据块有多少存储迁移时间?

Blockchain 每个数据块有多少存储迁移时间?,blockchain,substrate,Blockchain,Substrate,作为运行时升级的一部分,我正在尝试对单个块中有多少存储迁移时间进行一些实际限制 所以假设 有N个验证器运行基板设置中的当前共识系统,而不是作为副链 这些节点运行在体面的民用工作站上 迁移代码主要由数据库读/写对序列以及正常的关联编码/解码逻辑控制 每个读/写对中的数据大小相当稳定,平均为M字节 设f(N,M)为您将能够安全地执行的读、写对数 当没有其他外部处理时,在单个块中执行 关于f(N,M)是什么样子的好猜测是什么?只是一些体面的回答 用于N(例如40)和M(例如321024)的常用值

作为运行时升级的一部分,我正在尝试对单个块中有多少存储迁移时间进行一些实际限制

所以假设

  • 有N个验证器运行基板设置中的当前共识系统,而不是作为副链
  • 这些节点运行在体面的民用工作站上
  • 迁移代码主要由数据库读/写对序列以及正常的关联编码/解码逻辑控制
  • 每个读/写对中的数据大小相当稳定,平均为M字节
设f(N,M)为您将能够安全地执行的读、写对数 当没有其他外部处理时,在单个块中执行

关于f(N,M)是什么样子的好猜测是什么?只是一些体面的回答 用于N(例如40)和M(例如321024)的常用值


我会问,因为围绕这一点的约束将必须告知模块是如何构建的。

首先,为什么N与此相关?迁移可以发生在特定块上,约束条件是能够在块时间内拟合它

为此,我建议(在WASM中)进行一些微观基准测试,并估算每个操作的成本。把它放在你想要的阻塞时间旁边,你应该有一个好的数字。为了安全起见,我会进一步降低这一比例


注意,数据迁移的类型在这里并不重要;如果您正在存储值,这相当容易,我认为您应该不会有问题,因为瓶颈可能是解码,而不是散列。如果您的值(比如,一个大的vec)已经太大,以至于一个块不能读写一次,那么您就有更大的问题。对于地图,您必须考虑到您将进行更多的状态查找,因此整个过程是不同的