调度在另一个 Substrate FRAME Pallet 中定义的函数

Dispatching a Function Defined in Another Substrate FRAME Pallet

我熟悉实现此问题标题中描述的目标的一种机制:传递一个写在自己托盘中的可调度调用,作为调用另一个托盘中编写的外部函数时的参数,如Sudo pallet 或 Utility pallet 中定义的 multi-sig 功能。跨托盘调度功能的其他选项是什么?具体来说,我想包含一个托盘,托盘 A,作为另一个托盘托盘 B 的 Trait 绑定类型,然后从托盘 A 中调度一个在托盘 B 中定义的函数。

仅当您需要将 origin/filters 控制为真正任意的可调度函数时,像 Utility 或 Sudo pallet 这样的调度调用行为才有意义。

如果你有两个特定的 pallet 想要相互交互,使用 Trait 来耦合它们是正确的方法。您可以通过查看 ChangeMembers 特征以及它如何在 Collective、Membership、Society、Phragmen Elections 等托盘中使用来了解 Substrate master 中的这种行为...

此外,您可以查看一个更大的特征,如 Currency 并发现它基本上通过 Currency::transfer 公开了 transfer“外部”,允许任何 pallet 执行此功能在其自身的上下文中。

总而言之:

  • 会建议你继续前进
  • 不建议您使用 call.dispatch 进行此类特定托盘到托盘的交互