答案 0 :(得分:0)
在运行时开发中,列表迭代通常是邪恶的。
除非明确防止,否则它将为仅收取O(1)费用的操作增加无限的O(N)复杂度。结果,您的链条变得容易受到攻击。
另外,如果列表变得如此之大,并且您遍历所有元素,则该过程可能会花费比阻止时间更长的时间,因此节点将永远不会产生阻止。
您会在某些运行时模块中找到有界循环,但是您需要意识到这些循环的时间/计算复杂性。
您可以轻松地“模拟”具有两个存储项目的可枚举列表:
decl_storage! {
trait Store for Module<T: Trait> as Example {
AllPeopleArray get(person): map u32 => T::AccountId;
AllPeopleCount get(num_of_people): u32;
}
}
但是我相信这样做的目的是使您在模块中做不好的事情变得更加困难。