3

我的托盘如何在前一个区块访问基材链的存储?

例如: storage_name::get(&key, &block_number);

可能,有文件吗?不可能,我们可以申请这个功能吗?

4

1 回答 1

3

不可能从运行时中查询旧块的存储,也不是一个真正有意义的功能,如您所描述的那样包含它。

每个块应该只依赖于该块中可用的数据,否则您开始对您正在使用的客户端以及他们实际可用的数据做出更大的假设。

解决方案在这里很简单,只需将您需要的任何数据存储到您自己的存储项中,该存储项在块与块之间持续存在。我们对许多需要来自先前区块的信息的存储执行此操作,例如质押托盘中的验证者和提名者信息。

当您不再需要该数据时,您可以对其进行清理。

这是一个例子:https ://github.com/paritytech/substrate/blob/master/frame/staking/src/lib.rs#L969

于 2020-11-15T01:27:53.733 回答